1、测试交流会2007-8-9自我介绍测试中遇到的问题请大家讨论一下(5-10分钟)什么是缺陷软件未达到产品说明书标明的功能;软件出现了产品说明书指明不会出现的错误;软件功能超出产品说明书指明范围;软件未达到产品说明书虽未指出但应达到的目标;软件测试员认为软件难以理解、不易使用、运行速度缓慢,或者最终用户认为不好。缺陷产生的原因软件方面:需求解释有错误用户定义错了需求需求记录错误设计说明有误编码说明有误程序代码有误数据输入有误测试错误问题修改不正确正确的结果是由于其它的缺陷产生的软件测试困难完全测试程序是不可能的;软件测试是有风险的行为;测试无法显示潜伏的软件缺陷;找到的软件缺陷越多,说明缺陷越多
2、;不是所有的软件缺陷都能修复;难以说清的软件缺陷;测试员在小组中不受欢迎。提纲会议目标软件测试的基本概念软件测试的过程软件测试的跟踪会议目标掌握软件测试的基本概念和术语了解测试基本技术掌握软件测试过程基本概念和术语软件测试的定义传统定义:软件测试是根据软件开发各阶段的说明书和程序的内部结构,设计一批测试用例,并利用这些测试用例去运行程序,以发现程序错误的过程 ;测试是为了证明程序有错,而不是为了证明程序无错误;一个好的测试用例是它能发现至今未发现的错误;一个成功的测试是发现了至今未发现的错误的测试。软件测试的定义换言之,测试就是想以最少的时间和人力,系统地找出软件中潜在的各种错误和缺陷。如果我
3、们成功地实施了测试,我们就能够发现软件中的错误。测试的附带收获是,它能够证明软件的功能和性能与需求说明相符合。实施测试收集到的测试结果数据为可靠性分析提供了依据。测试不能表明软件中不存在错误,它只能说明软件中存在错误。术语解释软件测试的方式:白盒测试:基于一个应用代码的内部逻辑知识,测试是基于覆盖全部代码、分支、路径、条件黑盒测试:不是基于内部设计和代码的任何知识,而是基于需求和功能性术语解释软件测试的阶段:单元测试:最微小规模的测试;以测试某个功能或代码块。典型地由程序员而非测试员来做,因为它需要知道内部程序设计和编码的细节知识。这个工作不容易作好,除非应用系统有一个设计很好的体系结构; 还
4、可能需要开发测试驱动器模块或测试套具。集成测试:一个应用系统的各个部件的联合测试,以决定他们能否在一起共同工作。系统测试:基于系统整体需求说明书的黑盒类测试;应覆盖系统所有联合的部件术语解释l验收测试:基于客户或最终用户的规格书的最终测试,或基于用户一段时间的使用后,看软件是否满足客户要求。lAlpha 测试:在系统开发接近完成时对应用系统的测试;测试后,仍然会有少量的设计变更。这种测试一般由最终用户或其他人员员完成,不能由程序员或测试员完成。lBeta 测试:当开发和测试根本完成时所做的测试,而最终的错误和问题需要在最终发行前找到。这种测试一般由最终用户或其他人员员完成,不能由程序员或测试员
5、完成。术语解释l回归测试:l对某些已经进行过测试的子集在重新测试一遍,确保新模块的加入未引起副作用。l当测试发现错误,错误要被修改,每当软件修改时(程序、文档、数据被修改),回归测试是保证这些修改不会带来不可预料的行为或另外的错误l回归测试包括三种类型的测试用例:l能够测试软件所有功能的代表性测试用例l专门针对被修改可能会影响的软件功能的附加测试l针对修改过的软件的部分测试术语解释确认(确认(Validation)确认是在开发过程之中或结束时评估系统或组成确认是在开发过程之中或结束时评估系统或组成部分的过程,目的是判断该系统是否满足规定的部分的过程,目的是判断该系统是否满足规定的需求。它可分为
6、静态确认与动态确认。静态确认需求。它可分为静态确认与动态确认。静态确认一般不实际执行程序,而是通过人工分析或者程一般不实际执行程序,而是通过人工分析或者程序正确性证明来确认程序的正确性;动态确认主序正确性证明来确认程序的正确性;动态确认主要通过动态分析和程序测试来检查程序的执行状要通过动态分析和程序测试来检查程序的执行状态,以确认程序是否有问题。态,以确认程序是否有问题。验证(验证(Verification)验证是对工作产品进行人工检查或评审,目的是验证是对工作产品进行人工检查或评审,目的是证明软件生命周期的各个阶段,以及阶段间的逻证明软件生命周期的各个阶段,以及阶段间的逻辑协调性、完备性和正
7、确性。辑协调性、完备性和正确性。测试与软件开发过程的关系用户需求和验收测试计划软件需求和系统测试计划概要设计和集成测试计划详细设计和单元测试计划单元测试集成测试系统测试验收测试时间编码验证确认软件测试的原则尽早和不断地进行软件测试;测试输入数据及与之对应的预期输出结果是每个测试用例的必要组成部分;既要编写使用有效输入条件的测试用例,也要编写使用非法输入条件的测试用例;充分注意测试中的群集现象。即没有发现的缺陷数与已发现的缺陷数成正比;严格执行测试计划,杜绝不能重现的测试;深入细致地审查测试结果; 妥善保存测试计划,测试用例、测试缺陷记录及测试报告,为维护提供方便。软件测试的过程我们的测试过程测
8、试不是软件生命周期中一个单一的阶段,测试是一个平行于开发过程的过程我们的测试过程测试不是软件生命周期中一个单一的阶段,测试是一个平行于开发过程的过程测试过程的划分计划测试活动设计用例单元测试集成测试系统测试验收测试计划测试活动目的:明确并描述针对项目要进行的测试活动主要活动:参与需求评审,验证需求的完整性、正确性、一致性和可测试性参与项目WBS分解、工作量估计、风险分析明确测试需求、评价测试风险、建立测试策略、明确测试资源、建立测试进度、形成测试计划评审测试计划:组内评审、正式评审计划时考虑测试风险 如果决定不测试所有的情况,那就是选择了风险。 测试员的一个主要原则是把无边无际的可能减少到可以
9、控制的范围。 太少的测试是不负责任,过多的测试是一种浪费。优化测试量遗漏缺陷数目测试费用测试工作量数量软件测试计划内容概述测试策略测试的类型测试的阶段测试的风险分析列表测试的资源:人员,软件,硬件测试的进度测试的接口验收标准:内部验收标准和外部验收标准软件测试计划内容概述验收标准的意义外部验收标准是和客户达成的一致,通过了外部验收标准就可以提交给客户内部验收标准是和开发组达成的一致,通过了内部验收标准就可以进入下一个测试阶段或提交给客户验收标准内容基于测试覆盖(测试类型的覆盖,测试内容的覆盖)基于测试用例和测试用例的通过情况基于软件问题和解决情况设计测试用例目的:根据测试策略中明确的不同测试类
10、型 ,形成测试大纲,设计测试用例,实现完成测试用例所需要的各种支持(数据、文件)主要活动:形成测试大纲明确测试用例,设计测试用例执行步骤形成需求跟踪矩阵生成测试数据和测试文件设计测试用例对需求规格说明书的仔细阅读SRS是测试的基础,对SRS的熟悉程度在很大程度上决定了测试用例设计的有效性熟悉需求点的要求和相互关系做什么?有什么限制?什么是正确的做法,出错处理是什么?和其他需求之间有什么引用和制约关系多问一些为什么和如果?设计测试用例测试用例的内容测试的目的或需求测试环境和入口条件测试的步骤测试的支持数据或支持文件测试的预期结果其它一些记录和控制字段测试用例需要管理和维护设计测试用例设计测试用例
11、的思路以SRS为出发点对于每一个需求点:正确的执行是什么,错误的或非法的执行是什么,一个操作者,一般会犯怎样的错误需求点之间有什么相互联系,某一个需求点是否依赖于其他的内容,是如何依赖的对于功能点组合才可以完成的功能,有怎样的组合方式,各有怎样的结果最主要的商业流程是怎样的,找出重要的流程设计测试用例提高测试用例的质量步骤明确,告诉测试人员做什么,系统做什么,系统的反映是什么,不要混淆步骤和结果测试用例避免步骤太多,10-15步足够了(一个步骤不要执行很多的操作)尽量将测试用例分开,一个测试用例只测试一个内容如果测试用例有前后依赖关系,一定要明确设计测试用例编写测试用例常见的错误步骤太多不完整
12、,错误或不连贯的步骤遗漏步骤没有清楚说明是测试工程师还是系统做事情没有明确定义通过和失败的结果设计测试用例需求跟踪距阵对需求的提取要完备尽量细化到功能点需求跟踪距阵明确了测试的覆盖测试数据和测试文件设计测试用例其他活动:对设计和编码的活动进行一定程度的评审、测试或测试支持活动对流程图进行评审对UI设计文档进行评审对代码进行规范检查提供单元测试测试用例设计的支持单元测试目的验证程序实现与详细设计说明书中的描述是否一致,消除程序模块内部逻辑及功能上的缺陷。单元测试需要从程序的内部结构出发设计白盒测试为主,黑盒测试为辅。集成测试的目的检测和排除子系统或系统结构上的错误,发现并解决模块间联接时出现的问
13、题,最终构成要求的软件系统。系统测试的目的在模拟环境(可能就是开发环境)下,运用黑盒测试来验证软件系统是否满足软件需求规格说明书中所描述的功能需求、质量特性和性能等方面的特性。 系统测试的类型功能测试容量测试负载/强度测试安全性测试可用性测试性能测试配置测试兼容性测试可安装性测试恢复性测试可靠性测试系统测试进入的条件已经完成集成测试;系统测试计划、测试用例已编写完成,并经过批准。 执行系统测试测试人员应依据系统测试计划和用例进行系统测试。发现的软件缺陷应记入缺陷跟踪系统,尽快将其提交给被测代码的作者,由其负责解决缺陷。测试负责人评判缺陷及其解决方法中存在的疑问。系统测试的过程中,回归测试可能会
14、非常多,因此回归测试的测试用例应当设计成针对那些主要的软件功能中可能出现的错误。执行系统测试(续)当测试人员依据系统测试计划和用例(包括进行回归测试时新添加的测试用例)完成系统测试,且缺陷跟踪系统中报告的软件缺陷均已修改完成之后,测试组负责人可通知项目经理系统测试已完成。系统测试退出条件已按照系统测试计划和用例完成了系统测试;测试中发现的问题、缺陷均已得到解决;系统测试报告获得项目经理的批准;验收测试验证软件的功能和性能及其他特性是否与用户的要求一致。需求规格说明书中的有效性准则是软件验收测试的基础。软件测试的跟踪测试跟踪的目的对测试的执行情况进行跟踪,获得实用的测试管理信息。 4、软件测试过
15、程的跟踪跟踪的用例分类计划的:计划开发的测试用例。可用的:可用于执行的计划的测试用例。(可用的测试用例数少于或等于计划的测试用例数)执行的:已执行的可用测试用例。通过的:已执行的测试用例,在最近执行的过程中没有检测出错误。 4、软件测试过程的跟踪跟踪的方法建立起测试用例的数量与时间之间的矩阵按时间跟踪根据通过的测试用例与计划的测试用例之间的比例跟踪通过对测试状态执行图的分析获得所需的测试管理信息 4、软件测试过程的跟踪测试状态跟踪图 300250200150100500 1 2 3 4 5 6 7 8 9 10 星期计划的可用的执行的通过的4、软件测试过程的跟踪总结软件测试的目的是发现软件存在的缺陷。软件测试工作贯穿整个软件开发过程,越早发现软件缺陷,解决缺陷的成本越低。软件测试是一项严谨的工作,必须是有计划并按计划执行的。Questions / Discussion问题与讨论Thank You 谢谢谢谢