1、软件测试实例课件第3章 测试用例设计 教学提示:在软件测试中,设计测试用例是整个过程的核心,起着非常关键的作用,也是测试执行环节的基本依据。测试用例的设计是每个测试工程师必备的基本职业技能。本章将通过实例对测试用例设计的基本原则和设计方法等进行阐述和分析。教学目标:通过本章的学习,读者将掌握黑盒测试和白盒测试的各种基础知识,通过实际案例进一步学习设计软件测试用例的方法。3.1黑盒测试用例设计一、等价类划分法1工作任务描述用户注册是网上购物系统的基本模块,也是必需的功能。本节任务就是对用户注册功能进行测试,编写测试用例集。在此,我们使用最经典的黑盒测试方法等价类划分法来设计测试用例。后面的各节将
2、使用其他的方法继续设计相关的测试用例。2应知应会(1)等价类划分法等价类划分法作为一种最为典型的黑盒测试方法,它完全不考虑程序的内部结构,以需求规格说明书为依据,选择适当的典型子集,认真分析和推敲说明书的各项需求,特别是功能需求,尽可能多地发现错误。它将程序所有可能的输入数据(有效的和无效的)划分成若干个等价类,然后从每个部分中选取具有代表性的数据当做测试用例进行合理的分类,测试用例由有效等价类和无效等价类的代表数据组成,从而保证测试用例具有完整性和代表性。等价类划分法是一种系统性确定要输入的测试条件的方法。有效等价类划分有效等价类指对于程序规格说明而言,是合理的、有意义的输入数据构成的集合。
3、利用有效等价类可以检验程序是否实现了规格说明预先规定的功能和性能。有效等价类可以是一个,也可以是多个,根据系统的输入域划分若干部分,然后从每个部分中选取少数有代表性数据当做数据测试的测试用例,有效等价类是输入域中代表有效数据的集合。无效等价类划分无效等价类和有效等价类相反,无效等价类是指对于软件规格说明而言,没有意义的、不合理的输入数据集合。利用无效等价类,可以找出程序异常说明情况,检查程序的功能和性能的实现是否有不符合规格说明要求的地方。(2)等价类的划分原则如何确定等价类成为使用等价类划分法过程中的重要问题,以下是进行等价类划分的几项依据。按区间划分。在输入条件规定的取值范围或值的个数的情
4、况下,可以确定一个有效等价类和两个无效等价类。按数值划分。在规定了输入数据的一组值(假定有n个值),并且程序要对每个输入值分别处理的情况下,可以确定n个有效等价类和一个无效等价类。(3)等价类划分法的测试用例设计在设计测试用例时,应同时考虑有效等价类和无效等价类测试用例的设计。测试人员总是希望用最少的测试用例覆盖所有的有效等价类,但对每一个无效等价类,至少要设计一个测试用例来覆盖它。3学习案例某城市电话号码由3部分组成:(地区码)前缀后缀。它们的名称和内容分别是:地区码:空白或3位数字;前 缀:起始位为非“0”或“1”的3位数字;后 缀:4 位数字。假定被测程序能接受一切符合上述规定的电话号码
5、,拒绝所有不符合规定的电话号码。根据该程序的规格说明,做等价类的划分,并设计测试方案。输入条件有效等价类无效等价类地区码1.空白 2.3位数字 1.有非数字字符 2.少于3位数字 3.多于3位数字 前 缀3.200 999的3位数字 4.有非数字字符 5.起始位为“0”6.起始位为“1”7.少于3位数字 8.多于3位数字 后 缀4.4位数字 9.有非数字字符 10.少于4位数字 11.多于4位数字(1)划分等价类方案内容输 入预期结果地区码前缀后缀1空白 200 999的3位数字 4位数字()276-2345有效 23位数字(635)805-9321有效 3有非数字字符 (20A)723-45
6、67无效 4少于3位数字 (33)234-5678无效 5多于3位数字 (5555)345-6789无效 6 有非数字字符 (345)5A2-3456无效 7 起始位为“0”(345)012-3456无效 8 起始位为“1”(345)132-3456无效 9 少于3位数字 (345)92-3456无效 10 多于3位数字 (345)4562-3456无效 11 有非数字字符(345)342-3A56无效 12 少于4位数字(345)342-356无效 13 多于4位数字(345)562-34567无效(2)设计测试方案4模仿设计测试用例练习学生成绩等级评定(AC):总分(0100)=考试分(0
7、70)+平时分(030)总分=80,Grade=“A”总分=60 and=0 and 60,Grade=“C”假定被测程序能接受一切符合上述规定的数据,拒绝所有不符合规定的数据。根据该程序的规格说明,做等价类的划分,并设计测试方案。5.实际案例使用等价类划分法为网上商城系统的“用户注册”子功能设计测试用例。功能需求简介如下。用户名:不能为空,不能出现空格,最大长度为20个字符。密码:不能为空,长度必须大于等于6个字符,小于等于20个字符。确认密码:同密码。同意用户协议:必须勾选。二、边界值分析法1工作任务描述本节任务是继续上节内容,对用户注册功能进行测试,编写测试用例集。在此我们使用另一种黑盒
8、测试方法边界值分析法来设计测试用例。2应知应会(1)边界值分析法边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。(2)使用边界值分析法的原因无数的测试实践表明,大量的故障往往发生在输入定义域或输出值域的边界上,而不是在其内部。因此,针对各种边界情况设计测试用例,通常会取得很好的测试效果。(3)使用边界值分析法设计测试用例的方法 首先确定边界情况。通常输入或输出等价类的边界就是为了着重测试的边界情况。选取正好等于、刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值。(4)与
9、等价划分的区别 边界值分析不是从某等价类中随便挑一个作为代表,而是使这个等价类的每个边界都作为测试条件。边界值分析不仅考虑输入条件,还要考虑输出空间产生的测试情况。(5)在应用边界值分析法进行测试用例设计时,要遵循的几条原则如果输入条件规定了值的范围,则应取刚达到这个范围的边界值以及刚刚超过这个范围边界的值作为测试输入数据。如果输入条件规定了值的个数,则用最大个数、最小个数和比最大个数多1个、比最小个数少1个的数作为测试数据。根据程序规格说明的每个输出条件,使用原则。根据程序规格说明的每个输出条件,使用原则。如果程序的规格说明给出的输入域或输出域是有序集合(如有序表、顺序文件等),则应选取集合
10、中的第一个和最后一个元素作为测试用例。如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例。分析程序规格说明,找出其他可能的边界条件。(6)健壮性测试健壮性测试是作为边界值分析的一个简单的扩充,它除了对变量的5个边界值分析取值外,还需要增加一个略大于最大值(max+)以及略小于最小值(min-)的取值,检查超过极限值时系统的情况。因此,对于有n个变量的函数采用健壮性测试需要6n+1个测试用例。3.学习案例三角形问题。输入3个整数a、b、c分别作为三角形的3条边,现通过程序判断由3条边构成的三角形的类型为:等边三角形、等腰三角形、一般三角形以及构不成三角形。现在要
11、求输入3个整数a、b、c,必须满足以下条件:条件1 1a100 条件2 1b100 条件3 1c100条件4 a b+c条件5 b a+c条件6 c=80,Grade=“A”总分=60 and=0 and 60,Grade=“C”假定被测程序能接受一切符合上述规定的数据,拒绝所有不符合规定的数据。根据该程序的规格说明,使用边界值分析法,并设计健壮性测试用例。5实际案例使用边界值分析法为网上商城系统的“用户注册”子功能设计测试用例。“用户注册”界面如图3-5所示,功能需求简介如下。用户名:不能为空,不能出现空格,最大长度为20个字符。密码:不能为空,长度必须大于等于6个字符,小于等于20个字符。
12、确认密码:同密码。同意用户协议:必须勾选。三、错误推测法1.工作任务描述本节任务是继续上节内容,对用户注册功能进行测试,编写测试用例集。在此我们使用另一种黑盒测试方法错误推测法来设计测试用例。2.应知应会错误推测法,即错误推测法就是根据经验和直觉推测程序中所有可能存在的各种错误,从而有针对性地设计测试用例的方法。使用错误推测法时,可以凭经验列举出程序中所有可能有的错误和容易发生错误的特殊情况,帮助猜测错误可能发生的位置,提高错误推测的有效性,根据他们来选择测试用例。3.学习案例三角形问题。输入3个整数a、b、c分别作为三角形的3条边,现通过程序判断由3条边构成的三角形的类型为:等边三角形、等腰
13、三角形、一般三角形以及构不成三角形。现在要求输入3个整数a、b、c,必须满足以下条件:条件1 1a100 条件2 1b100 条件3 1c100条件4 a b+c条件5 b a+c条件6 c=80,Grade=“A”总分=60 and=0 and 60,Grade=“C”假定被测程序能接受一切符合上述规定的数据,拒绝所有不符合规定的数据。根据该程序的规格说明,使用边界值分析法,并设计健壮性测试用例。5实际案例使用错误推测法为网上商城系统的“用户注册”子功能设计测试用例。“用户注册”界面如图所示,功能需求简介如下。用户名:不能为空,不能出现空格,最大长度为20个字符。密码:不能为空,长度必须大于
14、等于6个字符,小于等于20个字符。确认密码:同密码。同意用户协议:必须勾选。四、因果图法1工作任务描述本节任务是继续上节内容,对用户购物功能进行测试,编写测试用例集。在此我们使用因果图法来设计测试用例。2应知应会(1)因果图法产生的背景等价类划分法和边界值分析方法都是着重考虑输入条件,但没有考虑输入条件的各种组合、输入条件之间的相互制约关系。这样虽然各种输入条件可能出错的情况已经测试到了,但多个输入条件组合起来可能出错的情况却被忽视了。(2)因果图法简介因果图法基于这样的一种思想:一些程序的功能可以用判定表(或称决策表)的形式来表示,并根据输入条件的组合情况规定相应的操作。因果图法的定义:是一
15、种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况。(3)使用因果图法的基本步骤 分析软件规格说明描述中哪些是原因,哪些是结果,原因是输入或输入条件的等价类,结果是输出条件。给每个原因和结果赋予一个标识符。分析软件规格说明描述中的语义。找出原因与结果之间、原因与原因之间的对应关系,并根据这些关系画出因果图。在因果图上用一些记号标明约束或限制条件。把因果图转换为判定表。依据判定表的每一列,设计测试用例。(4)使用因果图法的优点 考虑到了输入情况的各种组合以及各个输入情况之间的相互制约关系。能够帮助测试人员按照一定的步骤,高效率开发测试用例。因果图法
16、是将自然语言规格说明转化成形式语言规格说明的一种严格的方法,可以指出规格说明存在的不完整性和二义性。(5)因果图中的4种基本关系在因果图中,用ci表示输入状态(或称原因),ei表示输出状态(或称结果)。因果图中用4种符号分别表示规格说明中的4种因果关系,其基本符号如图所示。恒等 非 或 与ci 与 ei 取值0或1,0表示某状态不出现,1则表示某状态出现。a.恒等:若 c1 是1,则 e1 也为1,否则 e1 为0。b.非:若 c1 是1,则 e1 为0,否则e1为1。c.或:若 c1 或 c2 或 c3 是1,则 e1 为1,否则 e1 为0。d.与:若 c1 和 c2 都是1,则 e1 为
17、1,否则 e1 为0。6.因果图中的约束在实际问题中,输入状态相互之间、输出状态相互之间可能存在某些依赖关系,称为“约束”。对于输入条件的约束有E、I、O、R四种约束,对于输出条件的约束只有M约束。因果图中用来表示约束关系的约束符号如图所示。E约束(异):a和b中最多有一个可能为1,即a和b不能同时为1。I 约束(或):a、b、c中至少有一个必须为1,即 a、b、c不能同时为0。O约束(唯一):a和b必须有一个且仅有一个为1。R约束(要求):a是1时,b必须是1,即a为1时,b不能为0。M约束(强制):若结果a为1,则结果b强制为0。3学习案例有一个自动售货机软件处理单价为5角钱饮料。若投入5
18、角钱或1元钱的硬币,压下“橙汁”或“啤酒”的按钮,则相应的饮料就送出来。若售货机没有零钱找,则一个显示“零钱找完”的红灯亮,这时再投入1元硬币并压下按钮后,饮料不送出来而且1元硬币也被退出来;若有零钱找,则显示“零钱找完”的红灯灭,在送出饮料的同时找回5角硬币。4模仿设计测试用例练习薪金管理系统扣款模块功能描述如下 薪制员工:严重过失,扣年终风险金4;过失,扣年终风险金的2。年薪制员工:严重过失,扣当月薪资的8;过失,扣当月薪资的4。请画出因果图,并进行测试用例设计。5实际案例网上商城系统的“折扣计费”子功能简介如下。用户购物时收费有4种情况:非VIP会员一次购物累计少于100元,按A类标准收
19、费(不打折),一次购物累计多于或等于100元,按B类标准收费(打9折);VIP会员顾客按VIP会员价格一次购物累计少于1000元,按C类标准收费(打8折),一次购物累计等于或多于1000 元,按D类标准收费(打7折)。请使用因果图法设计测试用例,测试以上计算顾客购物收费的模块。五、场景分析法1工作任务描述 本节任务是继续前几节内容,对用户购物功能进行测试,编写测试用例集。在此我们使用场景分析法来设计测试用例。2应知应会(1)场景分析法简介现在的软件几乎都是用事件触发来控制流程的,事件触发时的情景便形成了场景,而同一事件不同的触发顺序和处理结果就形成事件流。这种在软件设计方面的思想也可以引入软件
20、测试中,可以比较生动地描绘出事件触发时的情景,有利于测试设计者设计测试用例,同时使测试用例更容易理解和执行。提出这种测试思想的是Rational公司。通过运用场景来对系统的功能点或业务流程进行描述,从而提高测试效果。场景法一般包含基本流和备用流,从一个流程开始,通过描述经过的路径来确定的过程,经过遍历所有的基本流和备用流来完成整个场景。(2)场景法能清晰地描述整个事件的原因 原因:现在的系统基本上都是由事件来触发控制流程的。如我们申请一个项目,需先提交审批单据,再由部门经理审批,审核通过后由总经理来最终审批,如果部门经理审核不通过,就直接退回。每个事件触发时的情景便形成了场景。而同一事件不同的
21、触发顺序和处理结果形成事件流。(3)基本流和备选流 事件流示意图如图3-14所示。每个经过用例的可能路径,可以确定不同的用例场景。从基本流开始,再将基本流和备选流结合起来,可以确定以下用例场景:场景1基本流场景2基本流 备选流 1场景3基本流 备选流 1 备选流 2场景4基本流 备选流 3场景5基本流 备选流 3 备选流 1场景6基本流 备选流 3 备选流 1 备选流 2场景7基本流 备选流 4场景8基本流 备选流 3 备选流 43学习案例 用户进入网上商城购物网站进行购物,选择物品后,进行在线购买,这时需要使用账号登录,登录成功后,付钱交易,交易成功后,生成订购单,完成整个购物过程。4模仿设
22、计测试用例练习 图3-15所示是ATM的流程示意图。3.2白盒测试用例设计 3.2.1逻辑覆盖法 1工作任务描述 在本节中我们将使用白盒测试方法购物网站的相关功能源代码进行测试用例设计。我们以用户注册模块源代码进行白盒测试用例设计介绍。用户注册模块中考虑到系统的交互性,用户在进行注册信息填写时,如果填写信息不符合数据合理性要求应该有相应的信息提示,如下图所示。3.2白盒测试用例设计 3.2.1逻辑覆盖法 2应知应会(1)逻辑覆盖方法逻辑测试方法是白盒测试方法的一种。白盒测试是将测试对象看成一个透明的盒子,测试人员可以看到程序的内部逻辑结构,而测试人员正是利用了手头的程序规格说明和程序清单为基础
23、来设计测试用例的。白盒测试法需要考虑测试用例对程序内部逻辑结构的覆盖程度,所以最好的白盒测试用例是要覆盖程序中的每一条路径。但要执行每一条路径将是不可能的,在白盒测试中为了衡量覆盖程度,建立了一些测试覆盖标准。逻辑覆盖法根据测试用例中覆盖目标的不同,并且根据覆盖标准发现错误的能力从低向高又可以分为语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。(2)语句覆盖 语句覆盖是一个比较弱的测试标准,对程序执行逻辑的覆盖很低。语句覆盖法是设计最少的测试用例,运行被测程序,使得程序中每一条可执行语句至少执行一次。语句覆盖在测试中主要用于发现缺陷或错误语句,是最弱的覆盖标准。(3)判断
24、覆盖 判定覆盖,也称为分支覆盖,这种测试方法是设计若干个测试用例,运行被测程序,使得程序中的每一个判定(每一个分支)的真、假取值至少都通过一次。判定覆盖标准包含了分支覆盖,并且只比语句覆盖标准稍强一些,在判定覆盖法中,虽然把程序所有判定(分支)均覆盖到了,但其主要对整个判定表达式最终取值进行测试,而忽略了判定细节,如果在判定条件表达式的内部出现了问题则无法通过此种覆盖完全找出。(4)条件覆盖条件覆盖较之判定覆盖考虑了判定条件表达式中的每一个逻辑条件,这种测试方法是设计若干个测试用例,运行被测程序,使得每一判定表达式中每个逻辑条件的真、假取值至少都通过一次。条件覆盖深入判定表达式中的每一个逻辑条
25、件,但是测试用例可能不能满足判定覆盖的要求。(5)判定/条件覆盖 判定/条件覆盖是将判定覆盖和条件覆盖两个标准都覆盖到,这种测试方法是设计若干个测试用例,运行被测程序,使得程序中的每一个判定的真假取值以及每个判定中的每一个逻辑条件的真假取值都通过一次。判定/条件覆盖充分解决了前3种覆盖的缺陷,但是这种覆盖方法依然存在缺陷。在程序中往往某些条件掩盖了另一些条件,因此会遗漏某些条件取值错误的情况。(6)条件组合覆盖条件组合覆盖,也称多条件覆盖,这种测试方法是设计足够多的测试用例,运行被测程序,使得每个判定表达式中的逻辑条件的各种可能组合都至少通过一次。条件符合测试是相当强的覆盖准则,可以有效地检查
26、各种可能的条件取值的组合是否正确。它不但可覆盖所有逻辑条件的可能取值的组合,还可覆盖所有判定的所有分支。3.2.1逻辑覆盖法 3学习案例(1)“三角形判定”问题:在三角形判定中,要求三角形的3个边长:a、b 和c,当3边不可能构成三角形时提示“无法构成三角形”;若是等腰三角形,打印“等腰三角形”;若是等边三角形,则提示“等边三角形”;否则提示构成普通三角形。在利用逻辑覆盖法设计测试用例时,可以使用程序流程图直观地看到程序逻辑结构,然后使用依据不同的覆盖标准得到测试用例。3.2.1逻辑覆盖法 4模仿设计测试用例练习 “日期判定”问题:从键盘输入3个整数,由这三个整数作为年、月、日组成日期,但是并
27、不是任意的3个整数都可以组成正确的日期,因此,需要对于输入的,3个整数进行判定。请对于上述的源代码进行白盒测试,分析程序中的执行语句有哪些,分析程序中的判定条件有哪些,分析每一个判定中的逻辑条件有哪些,分别使用语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖和条件组合覆盖标准来设计测试用例。并分析各种覆盖标准得到的测试用例的覆盖强弱关系。3.2.1逻辑覆盖法 5实际案例 使用逻辑覆盖法为网上商城系统的“用户注册”功能中用户名填写交互信息提示子功能设计测试用例。3.2白盒测试用例设计 3.2.2路径测试法 1工作任务描述 使用白盒测试方法中的路径测试法为网上商城系统的“用户结算”功能中的验证优惠券子
28、功能设计测试用例。3.2白盒测试用例设计 3.2.2路径测试法 2应知应会 路径测试就是从一个程序的入口开始,执行所经历的各个语句的完整过程。从广义的角度讲,任何有关路径分析的测试都可以被称为路径测试。为了了解路径测试方法,需要对于两个基本概念有清晰的认识,即控制流图和路径表达式。3.2.2路径测试法 2应知应会(1)控制流图 控制流图简称流图,在这种图形中更加突出了程序控制流的结构,它是对程序流程图的一种简化。在控制流图中主要包含两种图形符号:节点和控制流线。节点是将代表一个或多个语句、一个处理框序列和一个条件判断框(假设不包含复合判定条件)由带标号的圆圈表示。如果程序中存在复合判定条件,可
29、以将条件分解为多个单个条件。包含判定条件的节点也称为判定节点。在控制流图中从判定节点出发最后需要汇聚为一个节点,因此有时需要添加虚节点表示汇聚节点。控制流线也称之为边,是将程序中的控制流由带箭头的弧或线表示。3.2.2路径测试法 2应知应会(2)路径表达式 路径可以用控制流图中表示程序通路的节点序列表示,也可用弧线表示。路径表达式是针对控制流图中的弧进行加和乘两种运算形成的数学表达式。弧a乘弧b(描述成ab)表示流图中先沿弧a再沿弧b所经历的路径;弧a加弧b(描述成a+b)表示流图中弧a和弧b的关系为或关系。3.2.2路径测试法 2应知应会(3)路径测试方法 将待测试程序的流程图转换成控制流图
30、,在控制流图中给每一条弧用符号标明。根据控制流图写出路径表达式,对路径表达式进行分解 进行路径表达式计算,即将表达式中的每一条弧取值为1,然后依加法和乘法运算得到路径数。通过路径条件枚举产生特定路径测试用例。3.2白盒测试用例设计 3.2.2路径测试法 3学习案例 对于上一节提到的“三角形判定”问题使用路径测试方法设计测试用例。为了完成路径测试需要先画出控制流图,由于在控制流图中需要将复杂判定条件分解成简单判定条件,因此将“三角形判定”问题中的复合判定表达式进行分解 3.2白盒测试用例设计 3.2.2路径测试法 4模仿设计测试用例练习 博弈论中的经典案例“囚徒困境”:即A、B两个同犯被隔离审查
31、,均被告之可能有3种结果。如果都不招供,各判年徒刑;如A招供,B未招供,A将被释放,B被判10年徒刑,反之亦然;如都招供,都被判5年徒刑。3.2.2路径测试法 5实际案例 使用路径测试法为网上商城系统的“购物结算”功能中优惠券验证子功能设计测试用例。(1)画出程序流程图(2)画出控制流图(3)写出路径表达式并进行分解(4)计算路径表达式并写出路径(5)根据路径设计测试用例3.2白盒测试用例设计 3.2.3基本路径法 1工作任务描述 在本节中使用白盒测试方法中最经典的基本路径法为网上购物系统中的“用户密码修改”模块的测试用例集,填写测试用例表。3.2白盒测试用例设计 3.2.3基本路径法2应知应
32、会 任何有关路径分析的测试都可以被称为路径测试。而我们也知道完成路径测试的理想情况是做到路径覆盖,但对于复杂性强的程序要做到所有路径覆盖(测试所有可执行路径)是不可能的。在不能做到所有路径覆盖的前提下,可以使用基本路径测试方法。3.2.3基本路径法2应知应会(1)基本概念 独立路径:是指至少包含有一条在其他独立路径中从未有过的边的路径,也就是指在程序中至少引入一个新的处理语句集合或一个新条件的程序通路。环形复杂度:也称为圈复杂度,是一种为程序逻辑复杂性提供定量测度的软件度量,将该度量用于计算程序的基本的独立路径数目,为确保所有语句至少执行一次的测试数量的上界。2应知应会(2)基本路径测试方法步
33、骤 画出程序的控制流图,在控制流图中标明节点和弧,明确哪些节点为判定节点,并保证判定节点要有对应的汇聚节点,形成相应的区域。区域是由节点和弧组成的限定范围,且计算区域时也需要包含控制流图中的外部范围。计算控制流图的环形复杂度。根据环形复杂度个数导出独立路径个数,独立路径个数等于环形复杂度。3.2.3基本路径法3学习案例使用C语言为“学生成绩统计系统”编写系统入口,使用基本路径测试法设计测试用例。(1)画出程序流程图并转换为控制流图(2)计算环形复杂度(3)导出独立路径(4)为上述每一条独立路径设计测试用例 3.2.3基本路径法4模仿设计测试用例练习使用基本路径测试法对下列函数进行测试,给出测试
34、用例。在下列程序中完成对于参数给定的3个整数描述的日期(年、月、日),判定它是星期几?假定3个整数可以构成正确的日期。3.2.3基本路径法5实际案例使用基本路径法为网上购物系统中的“用户密码修改”模块设计测试用例。3.2白盒测试用例设计 3.2.4图形矩阵法 1工作任务描述 完成对用户注册模块的白盒测定时用例设计。用户进行注册时需要进行正确用户名、密码、确认密码、电子邮箱、密码保护问题和找回密码答案的输入,其中前4项是必填项目,当输入正确后勾选同意注册协议,点击“提交”按钮就可注册。3.2白盒测试用例设计 3.2.4图形矩阵法 2应知应会 图形矩阵法实际上是计算环形复杂度的一种方法,因此,本节
35、所介绍的测试方法是基本路径测试方法的一种,在基本路径测试方法中用图形矩阵来求解程序的环形复杂度。3.2.4图形矩阵法 2应知应会(1)图形矩阵 图形矩阵是程序控制流图的矩阵表示形式,它是一个方阵,方阵的维数就是控制流图中的节点数。矩阵中的每一行和每一列依次对应到一个被标识的节点,矩阵元素对应到节点间的弧。如果在控制流图中第i个节点到第j个节点有一个弧相连接,则在对应的图形矩阵中第i行和第j列的位置上有一个非空的元素x。在本书中我们将这个x取值为1。因此在图形矩阵中有一个元素(i,j)为1,那么它代表在程序的控制流图中有一个从节点i到节点j的弧。3.2.4图形矩阵法 2应知应会(1)图形矩阵在图
36、形矩阵中读取独立路径的方法:从第一行开始找到一个“1”元素,读取它所在的列号m,然后在以m为行号,在第m行开始找到一个“1”元素,读取它所在的列号n,依次往下,直到读到程序的出口节点,形成一条通路:1mn2应知应会(2)图形矩阵法测试步骤 画出程序的控制流图,在控制流图中标明节点和弧。为程序的控制流图画出图形矩阵,在图形矩阵中获取判定节点数目,计算环形复杂度。根据环形复杂度得到独立路径个数,然后在图形矩阵中读取每一条独立路径。计算独立路径的条件,设计测试用例。3学习案例 “日期判定”问题:从键盘输入3个整数,由这3个整数作为年、月、日组成日期,但是并不是任意的3个整数都可以组成正确的日期,因此
37、需要对输入的3个整数进行判定。使用图形矩阵法为“日期判定”问题设计测试用例。4模仿设计测试用例练习“寻找最大值”问题,在长度为num的数组Math中查找最大值并将最大值返回。使用图形矩阵法为“寻找最大值”问题设计测试用例。5实际案例 使用图形矩阵法为网上商城系统的“用户注册”功能设计测试用例。本章小节 本章主要介绍了软件测试用例的设计,包括黑盒测试用例的设计和白盒测试用例的设计。黑盒测试用例的设计主要包括等价类划分法、边界值分析法、错误猜测法、因果图法、场景分析法等。白盒测试用例的设计主要包括逻辑覆盖法、路径测试法、基本路径法、图形矩阵法等。在每一种方法的介绍中都举出了大量的具体案例,以便于读者更好地理解。在具体的测试工作中,要综合运用多种测试方法,不能只是单一使用某种方法。