1软件测试技术53.3开发测试用例什么是测试用例?测试用例是为特定目标开发的测试输入、执行条件和预期结果的集合。3.3.1了解测试用例什么是好的测试用例?好的测试用例应该容易发现软件错误。好的测试用例要有可重复性。好的测试用例必须清晰地定义一个或多个期望的结果和测试通过和失败标准。没有冗余。6测试用例的作用指导测试的实施作为编写测试脚本的“设计规格说明书”评估测试结果的度量基准分析缺陷的标准7什么是测试过程?IEEE将测试过程定义为“说明执行一系列测试用例的步骤。测试过程是为了评估一系列功能而进行软件项分析的步骤”。3.3.2定义详细测试过程测试用例和测试过程的区别?测试过程是由一系列的测试用例组成的。83.3.3定义预期结果测试过程的每一步都需要明确预期的结果。步骤动作预期结果通过/失败1在主菜单中单击“成绩输入”按钮显示成绩输入对话框2在成绩栏输入“101”显示错误信息“无效的成绩”3在成绩栏输入“-1”显示错误信息“无效的成绩”4在成绩栏输入“85”成绩显示为“85分”9预期结果的来源:项目专家或其他方面的专家将知道如何确定输出结果用户文档可以包含一些用户场景范例需求文档也可以提供必要的信息其他相关文档也可以提供相关线索最终用户也许能够描述所期望的响应结果10测试用例文档由简介和测试用例两部分组成。简介部分描述了测试目的、测试范围、定义术语、参考文档、概述等。测试用例部分逐一列示各测试用例。测试用例详细信息包括:用例编号、用例名称、测试等级、入口准则、验证步骤、期望结果、出口准则、注释等。3.3.4测试用例内容11最简单的测试用例也将包含:用例编号、输入、期望结果。测试用例ID输入预期结果实际结果测试统计利率贷款期限(年)贷款金额(元)月支付总支付总利息月支付总支付总利息通过/失败测试日期测试人员TC-0018%3080000587.01TC-0028.5%3080000615.13TC-0038.5%1580000787.7912测试的一项基本原则是:被测试的系统始终应该处于一种已知的状态。因此测试用例往往需要说明初始条件。说明测试用例ID:TC-001软件版本:子系统:用户名字段测试操作系统:测试人员姓名:测试日期:初始设置1.打开注册会话框2.在用户名字段放入字符“王”3.确保所有其他输入字段为空输入1.将光标置于用户名字段2.输入字符“帅”预期结果用户名字段出现字符“王帅”实际结果□通过□失败14测试用例越详细越好?16样例-登录需求:用户名长度为6至10位(含6位和10位)用户名由字符(a-z、A-Z)和数字(0-9)组成不能为空、空格和特殊字符密码规则同用户名规则17简单能够正确处理用户登录一般输入正确的用户名和口令可以进入系统输入用户名或口令错误无法进入系统18详细操作步骤预期结果输入正确的用户名和口令(均为6位),点击[OK]按钮进入系统输入正确的用户名和口令(均为10位),点击[OK]按钮进入系统输入正确的用户名和口令(均为6至8位之间),……进入系统用户名为空,……提示输入用户名不能进入系统用户名为空格,……提示无效用户名不能进入系统用户名小于6位,……提示用户名太短不能进入系统……………………………………19定义-参数化是一个将测试数据与测试逻辑(步骤)分开,简化测试用例的过程;方式是将用例中的一些输入、输出等作为参数,数据则单独列出,在执行时选择相应的数据执行。20样例-登录步骤:1、输入用户名2、输入口令3、点击[OK]按钮结果:预期结果21测试数据(一)“用户名”“口令”“预期结果”说明“user10”“pass10”进入系统正确的用户名和口令(6位)“user789”“pass789”进入系统正确的用户名和口令(7-9位)“user000010”“pass000010”进入系统正确的用户名和口令(10位)“”“pass”提示输入用户名不能进入系统用户名为空“空格”“pass”提示无效用户名不能进入系统用户名为空格UserUserpass提示用户名太短不能进入系统用户名小于6位user0000011userpass提示用户名太长不能进入系统用户名大于10位22为什么要参数化?没有将测试数据和测试逻辑分开的测试用例可能显得非常庞大,不利于测试员理解,导致难以控制和执行;通过将用例参数化,可以简化用例,使测试用例逻辑清晰,数据与逻辑的关系明了,易于理解;有利于提高测试用例的复用性;23哪些内容需要参数化?测试用例中需要通过使用不同数据来重复执行测试的部分;包括:输入(数据或操作等)输出(结果数据或预期结果等)253.3.6白盒测试用例设计白盒测试作为结构测试方法,是按照程序内部的结构测试程序,对软件的过程性细节做细致的检查,测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例。2627白盒法又称为逻辑覆盖法,其测试用例选择,是按照不同覆盖标准确定的。语句覆盖判定覆盖条件覆盖条件组合覆盖弱强判定条件覆盖路径覆盖281、语句覆盖:选择足够的测试用例,使得程序中每个语句至少都能被执行一次。2、判定覆盖:执行足够的测试用例,使得程序中每个判定至少都获得一次“真”值和“假”值。3、条件覆盖:执行足够的测试用例,使得判定中的每个条件获得各种可能的结果。4、判定/条件覆盖:执行足够的测试用例,使得判定中每个条件取到各种可能的值,并使每个判定取到各种可能的结果。白盒法常用的覆盖标准295、条件组合覆盖:执行足够的例子,使得每个判定中条件的各种可能组合都至少出现一次。6、路径覆盖:执行足够的例子,覆盖程序中所有可能的路径。白盒法常用的覆盖标准30白盒法步骤:例:用白盒法测试以下程序段:Procedure(VARA,B,X:REAL);BEGINIF(A1)AND(B=0)THENX:=X/A;IF(A=2)OR(X1)THENX:=X+1END;1)选择逻辑覆盖标准。2)按照覆盖标准列出所有情况。3)选择确定测试用例。4)验证分析运行结果与预期结果。逻辑结构31白盒法举例Procedure(VARA,B,X:REAL);BEGINIF(A1)AND(B=0)THENX:=X/A;IF(A=2)OR(X1)THENX:=X+1END;A1ANDB=0X:=X/AA=2ORX1X:=X+1YNYN逻辑结构321、语句覆盖•使得程序中每个语句至少都能被执行一次。A1ANDB=0X:=X/AA=2ORX1X:=X+1abcde满足语句覆盖的情况:执行路径:ace选择用例:[(2,0,4),(2,0,3)]用例格式:[输入(A,B,X),输出(A,B,X)]YNYN332、判定覆盖使得程序中每个判定至少为TRUE或FALSE各一次。A1ANDB=0X:=X/AA=2ORX1X:=X+1abcde覆盖情况:应执行路径ace∧abd或:acd∧abe选择用例(其一):⑴[(2,0,4),(2,0,3)]ace[(1,1,1),(1,1,1)]abd⑵[(2,1,1),(2,1,2)]abe[(3,0,3),(3,1,1)]acdYYNN343、条件覆盖A1ANDB=0X:=X/AA=2ORX1X:=X+1abcde使得判定中的每个条件获得各种可能的结果。应满足以下覆盖情况:判定一:A1,A≤1,B=0,B≠0判定二:A=2,A≠2,X1,X≤1选择用例:[(2,0,4),(2,0,3)][(1,1,1),(1,1,1)]NNYY2A≤1A≠20B=04X11A1A=21B≠01X≤1注意:[(1,0,3),(1,0,4)][(2,1,1),(2,1,2)]满足条件覆盖,但不满足判定覆盖。354、判定/条件覆盖同时满足判断覆盖和条件覆盖。A1ANDB=0X:=X/AA=2ORX1X:=X+1abcde应满足以下覆盖情况:条件:A1,A≤1,B=0,B≠0A=2,A≠2,X1,X≤1应执行路径ace∧abd或:acd∧abe选择用例:[(2,0,4),(2,0,3)](ace)[(1,1,1),(1,1,1)](abd)YYNN365、条件组合覆盖使得每个判定中条件的各种可能组合都至少出现一次。A1X:=X/AA=2X:=X+1abcdeB=0X1YNYNYNYN编译系统下的执行情况:部分路径未被执行。满足以下覆盖情况:①A1,B=0②A1,B≠0③A≤1,B=0④A≤1,B≠0⑤A=2,X1⑥A=2,X≤1⑦A≠2,X1⑧A≠2,X≤1选择用例:[(2,0,4),(2,0,3)]①⑤ace[(2,1,1),(2,1,2)]②⑥abe[(1,0,3),(1,0,4)]③⑦abd[(1,1,1),(1,1,1)]④⑧abe376、路径覆盖覆盖程序中所有可能的路径A1ANDB=0X:=X/AA=2ORX1X:=X+1abcdeYYNNABX覆盖路径203101211301aceabdabeacd38语句覆盖判定覆盖条件覆盖判定-条件覆盖条件组合覆盖路径覆盖用例覆盖程度用例设计容易度39等价分类法边值分析法错误推测法因果图法3.3.7黑盒测试用例设计黑盒测试不考虑程序的内部结构与特性,只根据程序功能或程序的外部特性设计测试用例。判定表法场景法401、等价分类法基本思想:根据程序的I/O特性,将程序的定义域划分为有限个等价区段—“等价类”,从等价类中选择出的用例,具有“代表性”。等价类分为:有效等价类—对于程序的规格说明是合理的、有意义的输入数据构成的集合。无效等价类—对于程序的规格说明,是不合理的,是没有意义的输入数据构成的集合。41等价分类法步骤应按照输入条件(如输入值的范围,值的个数,值的集合,输入条件必须如何)划分为有效等价类和无效等价类。例如:每个学生可选修1-3门课程可以划分一个有效等价类:选修1-3门课程。可以划分两个无效等价类:未选修课,选修课超过3门。又如:标识符的第一个字符必须是字母。可以划分为一个有效等价类:第一个字符是字母。可以划分一个无效等价类:第一个字符不是字母。①划分“等价类”A、为每个等价类编号;B、使一个测试用例尽可能覆盖多个有效等价类C、特别要注意的是:一个测试用例只能覆盖一个无效等价类。②选择测试用例等价分类法步骤422、边值分析法基本思想:选择等价类的边缘值作为测试用例,让每个等价类的边界都得到测试,选择测试用例既考虑输入亦考虑输出。分析步骤:A、先划分等价类。B、选择测试用例,测试等价类边界。边界选择原则:A、按照输入值范围的边界。B、按照输入/输出值个数的边界。C、输出值域的边界。D、输入/输出有序集的边界。43A、按照输入值范围的边界。例如:输入值的范围是-1.0至1.0,则可选择用例–1.0、1.0、-1.001、1.001。B、按照输入/输出值个数的边界。例如:输入文件可有1-255个记录,则设计用例:文件的记录数为0个、1个、255个、256个。C、输出值域的边界。例如:检索文献摘要,最多4篇。设计用例:可检索0篇、1篇、4篇,和5篇(错误)。D、输入/输出有序集(如顺序文件、线性表)的边界。应选择第一个元素和最后一个元素。边值分析法举例边界值分析的基本思想❀边界值分析的基本思想是:使用在最小值、略高于最小值、正常值、略低于最大值和最大值处取输入变量值;每个边界都要作为测试条件。边界值分析方法选择测试用例原则(1)如果输入条件规定了值的范围,则应该取上点、离点、内点作为输入数据。1.2m1.4m边界值–离点、上点、内点❀内点:域内得任意点都是内点。❀上点:就是指得边界上得点,无论此时得域是开区间还是闭区间,上点就是域的上限与下限值。❀离点:指得就是离上点最近的点,这里就跟是闭区间还是开区间就有关系了,如果是开区间,那么离点就在域内,如果是闭区间,那么离点就在域外。(开内闭外)[1,10]上点110离点内点(1,10)上点110离点内点[1,10)上点110离点内点练习[5,30)上点530离点内点56黑盒法应用实例(二)保险费率计算某保险公司承担人寿保险已有多年历史,该公