1、目 次一、测试需求的整理二、测试用例的设计三、实例分析一、测试需求的整理测试需求的确定:1为制定测试时间进度表、分配资源、确定某个阶段的测试工作提供一个可供衡量的标准。2但更重要的一点是:已被确定的测试需求是进行测试用例设计和考虑测试覆盖率的依据软件测试需求整理的三板斧:1确定测试工作的范围2整理测试需求3测试需求和测试设计一、测试需求的整理软件测试简要流程:软件配置:软件需求规约、设计规约、源代码等;测试配置:测试计划、测试用例、测试工具等。二、测试用例的设计软件测试的三个核心过程:软件测试生成测试用例运行程序(测试)验证程序的运行结果(评估)二、测试用例的设计为什么要进行测试用例的设计?软
2、件系统功能庞大输入数据的不确定性穷举测试?测试数据代表性特殊性测试用例二、测试用例的设计100行的源程序若其中唯一的循环至多执行20遍,则最多有1014个逻辑路径1个用例:1ms共需:3170年循环20次软件测试目的为了找到错误设计测试用例尽可能少的时间尽可能少的代价二、测试用例的设计40%60%测试花花费测试用例的设计其它方面二、测试用例的设计测试用例的定义:测试用例是测试者使用的文档化细则,其规定如何对某项功能或功能组合进行测试。6要素测试目标要测试的功能测试环境和其它条件测试数据测试步骤系统的预期行为二、测试用例的设计二、测试用例的设计二、测试用例的设计二、测试用例的设计一些专家对测试用
3、例设计的建议:逻辑与数据分开 对于大型的应用系统测试来说,测试用例的数量很多,一旦测试需求发生变化。对测试用例进行准确和全面地维护会很困难。二、测试用例的设计测试用例维护困难的原因分析?过多地注重了操作步骤细节(先登录,点击OK按钮等等)解决方法?关注测试思想,而不是关注测试步骤。二、测试用例的设计测试用例:用来描述怎么测试?要求我们:在描述测试用例时,应该用容易理解的自然语言清晰地描述出如何对软件功能进行测试。而不是:简单地把应用系统的具体操作步骤烦琐的记录下来,把测试用例的设计当成填写具体操作的表格。二、测试用例的设计序号序号操作过程描述操作过程描述1输入用户名。2输入密码。3确认登录。序
4、号序号用户名用户名密码密码预期结果预期结果1正确的用户名正确的密码登录系统并转到系统主界面2正确的用户名错误的密码无法登录到系统并提示密码错误3错误的用户名正确的密码无法登录到系统并提示用户名错误4错误的用户名错误的密码无法登录到系统并退出当前程序5空用户名.二、测试用例的设计文档的上半部分:着重描述了测试用例执行者应遵循的操作步骤。也就是测试用例设计者所构成的操作过程。序号序号操作过程描述操作过程描述1输入用户名。2输入密码。3确认登录。注意:这部分内容的描述与被测应用的具体实现无关。并未将点击“OK按钮”这样的内容包含进去。二、测试用例的设计文档的下半部分:包含了测试用例的输入数据和输出数
5、据。序号序号用户名用户名密码密码预期结果预期结果1正确的用户名正确的密码登录系统并转到系统主界面2正确的用户名错误的密码无法登录到系统并提示密码错误3错误的用户名正确的密码无法登录到系统并提示用户名错误4错误的用户名错误的密码无法登录到系统并退出当前程序5空用户名.二、测试用例的设计上述测试用例编写思路的优点:1可以不再对多个测试用例中重复出现的操作步骤进行重复描述,可以把更多的精力放在测试数据的设计和准备上。2软件需求发生变更时,只对操作过程维护一次,再添加或调整测试数据即可。提高了用户维护的效率,并降低了出错率。二、测试用例的设计确定测试用例编写的粒度:一个测试用例覆盖所有测试需求不可能极
6、端1:极端2:为需求定义的每个特性和功能都设计一个或多个测试用例二、测试用例的设计确定测试用例编写的粒度:关于一个“度”这个“度”就是有效功能二、测试用例的设计什么是有效功能:是指被测应用所涉及的实际业务中,当用户在原始状态下进行工作时,具有实际意义的那些功能。该项功能的完成可以作为用户实际业务完成的一个阶段性标志它具有相对的独立性,而不是从业务流程中独立出来,就失去意义。二、测试用例的设计1测试财务软件2测试需求填写会计凭证时,对于“科目”输入一项,可以通过在备选科目中选择,或输入科目代码实现。3科目代码的选择或输入是不是一个有效功能?4科目代码只是用户在添加凭证时的一个步骤,单独把该功能提
7、取填写出来没有任何的意义,对于业务下游的用户需要的是包含科目的整张会计凭证。因此,这个功能不是一个有效的功能5因此,不需要科目代码的输入作为一个测试用例放到用例集中。二、测试用例的设计测试用例设计的原则:1基于测试需求详细设计的原则单元测试说明;集成测试概要说明;确认测试软件需求说明;系统测试系统需求信息2基于测试方法的原则等价类方法、边界值分析方法、猜错法等。3兼顾测试充分性和效率的原则4测试执行的可再现原则二、测试用例的设计测试用例设计的目的:1软件的功能是否可操作;2程序能否适当地接收输入数据并产生正确的输出结果;3能否保持外部信息(如数据文件)的完整性。二、测试用例的设计管理不善设计盲
8、目用例库庞大,难以维护。问题测试人员的工作强度和效率难以改善二、测试用例的设计测试目标要测试的功能测试环境和其它条件测试数据执行步骤系统的预期行为GB/T 17544中对测试用例的规定:二、测试用例的设计测试用例复用,减轻测试用例设计人员工作量。测试用例库二、测试用例的设计测试用例设计的目的:用例发现某个错误或某类错误一组数据二、测试用例的设计软件测试技术分类图二、测试用例的设计软件测试技术:静态测试动态测试测试技术1静态测试:不执行程序代码而寻找程序代码中可能存在的错误或评估程序代码的过程。代码审查、代码走查、桌面检查以及运行软件工具自动进行的静态分析。2动态测试:通过抽样测试数据上运行程序
9、来检验程序的动态行为和运行结果以发现错误。根据测试理论:若抽测数据满足一定要求,通过测试可以发现程序中大多数错误,并可以评估程序的质量。二、测试用例的设计白盒测试:根据程序的控制结构设计测试用例。1保证模块中每一独立的路径至少执行一次;2保证所有判断的每一分支至少执行一次;3保证每一循环都在边界条件和一般条件下至少执行一次;4验证所有内部数据结构的有效性。二、测试用例的设计白盒测试技术:测试技术基本路径测试控制结构测试二、测试用例的设计基本路径测试:根据软件过程描述(详细设计或代码)中的控制流确定复杂性度量,然后用此度量定义基本路径集合,由此导出一组测试用例,它们能保证每个语句至少执行一次。条
10、件判断(谓词)程序流程图有向图流图设计测试用例确保基本路径被执行一次基本路径二、测试用例的设计12345612,3456基本路径1:1,2,3,4,6基本路径2:1,2,3,5,6基本路径3:1,6基本路径数量=E-N+2=6-5+2=3说明:E流图的边数;N流图的结点数;也可以证明:基本路径数量=P+1 P流程图中谓词结点数 谓词:代表条件判断的结点二、测试用例的设计控制结构测试:基本路径测试是控制结构测试技术的一种。而控制结构测试,比基本路径测试覆盖程度更大,进一步提高了白盒测试的质量。方法条件测试法数据流测试循环测试二、测试用例的设计条件测试法(Condition test):条件测试主
11、要考虑程序中的条件判断,以期发现条件判断内部的错误和程序中其它一些错误。简单条件复合条件条件一个布尔变量或一个关系表达式由简单条件通过逻辑运算符和括号连接而成。二、测试用例的设计数据流测试法(data flow testing):数据流测试法是根据程序中变量定义和引用的位置选择测试路径。二、测试用例的设计简单循环嵌套循环并置循环非结构循环对于最多为n次的简单循环,应作以下测试:1.完全跳过循环2.仅循环一次3.循环两次4.循环m次,mn。5.分别循环(n-1)次,n次,n+1次。二、测试用例的设计对于嵌套循环,若简单照搬简单循环的测试策略,可使测试次数成几何级数增长,减少测试的策略为:1从最内
12、层循环开始测试,此时所有外层循环都取最小值,内层循环按简单循环的测试策略进行测试。2由里到位,回退到上一层循环测试,这层循环的所有外层循环仍取最小值,由该层循环嵌套的那些循环取一些典型值。3继续向外扩展,直至所还有循环测试完毕。二、测试用例的设计对于并置循环分两种情况:1若并置循环完全独立,采用简单循环的测试策略。2若第一个循环的计数器用作第而循环的初值,即两个循环不独立,则采用嵌套循环测试策略测试。二、测试用例的设计对于非结构循环:需按结构化程序设计的思想首先将程序结构化后再进行测试。二、测试用例的设计1不正确或遗漏的功能;2界面错误;3数据结构或外部数据库访问错误;4性能错误;5初始化和终
13、止条件错误;黑盒测试主要针对以下几类错误:二、测试用例的设计白盒测试黑盒测试1.不能互相代替;2.互为补充二、测试用例的设计(a)等价分类(b)边界值分析(c)对比测试黑盒测试技术:黑盒测试技术:二、测试用例的设计按照生成测试数据所根据的信息来源:基于规范的测试:黑盒测试或称为功能测试基于程序的测试以及程序与规范相结合的测试:白盒测试或称为结构测试。动态技术1基于规范的功能测试:测试人员无需了解程序的内部结构,直接根据程序的输入和输出之间的关系或程序的需求规范来确定测试数据,推断测试的正确性。基于规范的测试包括:等价类划分、因果图、边界值分析等。2基于程序的结构测试:测试人员根据程序的内部结构
14、特征和与程序路径相关的数据特性设计测试数据测试技术包括:控制流测试和数据流测试等。二、测试用例的设计等价类划分法:程序的输入域划分若干等价类在每一类中选择代表性数据作为测试数据有效等价类无效等价类划分方法针对输入条件二、测试用例的设计等价类划分法的常用原则:1输入条件指定一个范围划分出一个有效等价类(输入值落在此范围内)和两个无效等价类(大于最大值的输入和小于最小值的输入)2如果能为输入条件指定一个特定值,则可类似地划分出一个有效等价类和两个无效等价类。3如果能为输入条件指定一个集合,则可以划分出一个有效等价类(此集合)和一个无效等价类(此集合的补集)4如果能为输入条件指定一个布尔量,则可划分
15、出一个有效等价类(此布尔量)和一个无效布尔量(此布尔量之非)二、测试用例的设计边界值分析法:大量测试经验表明大量错误发生输入和输出范围的边界上,而不是在输入范围的内部。数据选取正好等于边界刚刚大于边界刚刚小于边界二、测试用例的设计边界值分析法等价分类法的补充等价类边界上的值等价类中任选元素作为此等价类的代表二、测试用例的设计1如果输入条件指定了由值a和值b括起来的一个范围值a、值b和紧挨a、b2如果输入条件为一组数这组数中最大者、最小者和次大、次小者应作为测试用例3应用规则(1)、(2)于输出条件假设某程序输出为一张温度压力对照表,此时应设计测试用例正好产生表项所允许的最大和最小值。4如果内部
16、数据结构是有界的(如:数据组)应设计测试数据,使之能检查数据结构的边界。二、测试用例的设计错误推测法:错误分析法主要运用测试人员的经验和直觉,但是这种方法具有针对性,揭露错误的能力也很强。分析列举出程序中可能的错误或容易发生错误的特殊情况,并以此选择测试用例分析二、测试用例的设计单元测试测试对象软件设计的最小单位模块基本任务保证模块中每条语句至少执行一次测试技术基本路径测试循环测试(a)基本情况二、测试用例的设计(b)单元测试过程:驱动模块被测模块桩模块桩模块界面局部数据结构边界条件独立路径错误处理路径测试用例结果主程序:接收测试数据并将数据传递到被测模块,被测模块被调用后,驱动模块用于打印相
17、关结果。用于替代哪些真正附属于被测模块的模块,桩模块的界面应与实际的界面完全一致,但内部只做少量数据处理,主要任务是显示进入、退出。二、测试用例的设计集成测试(a)基本情况每个模块独立工作工作正常集合到一起能否正常运行?错误:数据经过接口可能丢失模块之间的相关影响全局数据结构出现错误二、测试用例的设计集成测试(b)模块集成方法集成方法集成方法非增量集非增量集成成增量集成增量集成二、测试用例的设计集成测试(a)非增量集成错误定位和纠正困难改正错误的同时可能带来新的错误问题二、测试用例的设计集成测试(b)增量集成错误易于定位和纠正优点二、测试用例的设计确认测试检查软件能否按照合同要求进行工作即:是
18、否满足软件软件需求说明书中的确认标准测试任务二、测试用例的设计系统测试(a)测试任务由于计算机软件是基于计算机系统的一部分:软件开发完后,要与系统中其它成分集成在一起进行测试。测试任务二、测试用例的设计(b)测试种类1恢复测试主要检查系统的容错能力2安全测试检查系统对非法侵入的防范能力3强度测试检查程度对异常情况的抵抗能力4性能测试是否能可靠的实现其运行性能二、测试用例的设计测试用例执行某个测试用例测试结果排错追加测试假想错误原因确定了测试原因修正程序回归测试排错过程二、测试用例的设计如何评价测试用例的好坏:是否可以发现尚未发现的软件缺陷是否可以覆盖全部的测试需求评价标准易用性易维护性评价标准
19、二、测试用例的设计(a)易用性如果:测试工程师既熟悉测试工作又熟悉被测应用系统可以花费很少时间,就可以理解测试用例中表达的测试思路,并可以很快地完成测试用例的执行。二、测试用例的设计(b)易维护性如果开发过程中发生了测试需求变更测试用例设计人员应能在较短时间内完成测试用例的维护工作二、测试用例的设计三、实例分析增加必填项增加全部数据增加空数据增加已有数据增加正确显示修改页面修改必填项修改全部修改项修改删除单条记录删除多条记录删除查询条件为空查询默认值单一条件查询组合条件查询通配符查询模糊查询查询测试用例设计:三、实例分析测试用例设计:邮政编码:1合法邮政编码如:1000292非法邮政编码字符长
20、度不为6,如:123或12345673非法邮政编码邮政编码字符串中存在字符,如:123abc身份证号:1合法身份证号码2非法身份证号码(长度不为15位或18位)3非法身份证号码(与生日校验不合法)4非法身份证号码(与性别校验不合法)5非法格式的身份证号码手机号码:1合法手机号码2非法手机号码(存在非数字字符)3非法手机号码(长度不合法)电子信箱:1合法的电子信箱2非法电子信箱(无字符)3非法电子信箱(前无字符)4非法电子信箱(后无字符)5非法电子信箱(无.字符)6非法电子信箱(.后无字符)三、实例分析测试用例设计:日期(单个):1合法的日期2非法日期格式不符合要求3非法日期内容不合法,月的天数大于31日期(多个):1日期之间符合逻辑关系2日期之间不符合逻辑关系谢 谢!