《软件试技术测试设计与开发》由会员分享,可在线阅读,更多相关《软件试技术测试设计与开发(64页珍藏版)》请在金锄头文库上搜索。
1、1软软 件件 测测 试试 技技 术术2第三章第三章 测试设计和开发测试设计和开发3.1 测试设计流程3.2 总体设计3.3 开发测试用例3.4 评审测试用例33.1 测试设计流程测试设计流程测试设计活动的输入是测试计划,测试计划应该说明将用到的方法和测试工作的范围。测试设计活动的输出是将在系统测试和确认测试中使用的评审过的测试用例集合。43.2 总体设计总体设计定义设计目标定义设计目标清楚地说明每项测试的目标使每项测试的目的单一,可以对应到规格说明书中的一项需求 只说明测试将完成什么工作,而不是说明如何完成定义输入说明定义输入说明定义测试环境和配置定义测试环境和配置编写测试设计文挡编写测试设计
2、文挡53.3 开发测试用例开发测试用例什么是测试用例?什么是测试用例?测试用例是为特定目标开发的测试输入、执行条件和预期结果的集合。 3.3.1 了解测试用例了解测试用例什么是好的测试用例?什么是好的测试用例?好的测试用例必须清晰地定义一个或多个期望的结果和测试通过和失败标准。好的测试用例应该容易发现软件错误、且有可重复性、没有冗余。6测试用例的作用测试用例的作用指导测试的实施 作为编写测试脚本的“设计规格说明书” 评估测试结果的度量基准 分析缺陷的标准7什么是测试过程?什么是测试过程?IEEE将测试过程定义为“说明执行一系列测试用例的步骤。测试过程是为了评估一系列功能而进行软件项分析的步骤”
3、 。3.3.2 定义详细测试过程定义详细测试过程测试用例和测试过程的区别?测试用例和测试过程的区别?测试过程是由一系列的测试用例组成的。 83.3.3 定义预期结果定义预期结果测试过程的每一步都需要明确预期的结果。预期结果的来源:项目专家或其他方面的专家将知道如何确定输出结果用户文档可以包含一些用户场景范例需求文档也可以提供必要的信息其他相关文档也可以提供相关线索最终用户也许能够描述所期望的响应结果9测试用例文档由简介和测试用例两部分组成。简介部分描述了测试目的、测试范围、定义术语、参考文档、概述等。测试用例部分逐一列示各测试用例。 测试用例的基本元素:测试索引,测试环境,测试输入,测试操作,
4、预期结果,评价标准。3.3.4 测试用例内容测试用例内容10最简单的测试用例也将包含:用例编号、输入、期望结果、实际结果。 测试用例ID输入预期结果实际结果测试统计利率贷款期限(年)贷款金额(元)月支付总支付总利息月支付总支付总利息通过/失败测试日期测试人员TC-0018%3080000587.01TC-0028.5%3080000615.13TC-0038.5%1580000787.7911测试的一项基本原则是:被测试的系统始终应该处于一种已知的状态。因此测试用例往往需要说明初始条件。说明测试用例ID: TC-001软件版本: 子系统: 用户名字段测试 操作系统: 测试人员姓名: 测试日期:
5、 初始设置1打开注册会话框2在用户名字段放入字符“王”3确保所有其他输入字段为空输入1将光标置于用户名字段2输入字符“帅”预期结果用户名字段出现字符“王帅”实际结果 通过 失败12如果没有测试用例或者仅有简单的测试功能描述,测试过程难以控制,测试结果将毫无可靠性可言。简单的测试用例可靠性低,重用性差,可能导致不同人员理解不同。详细的测试用例可靠性高,而且便于估计执行所需时间,易于控制。3.3.5 测试用例参数化测试用例参数化13测试用例越详细越好?14时间要求时间要求测试时间是否充足?执行者执行者测试执行者对系统的了解程度?建议程度建议程度将测试用例交给其他人执行时不需要过多的解释。15样例样
6、例 登录登录需求:需求:用户名长度为6至10位(含6位和10位)用户名由字符(a-z、A-Z)和数字(0-9)组成不能为空、空格和特殊字符密码规则同用户名规则16简单简单能够正确处理用户登录一般一般输入正确的用户名和口令可以进入系统输入用户名或口令错误无法进入系统17详细详细操作步骤操作步骤预期结果预期结果输入正确的用户名和口令(均为6位),点击OK按钮进入系统输入正确的用户名和口令(均为10位) ,点击OK按钮进入系统输入正确的用户名和口令(均为6至8位之间),进入系统用户名为空,提示输入用户名不能进入系统用户名为空格,提示无效用户名不能进入系统用户名小于6位,提示用户名太短不能进入系统18
7、定义定义 参数化参数化是一个将测试数据与测试逻辑(步骤)分开,简化测试用例的过程;方式是将用例中的一些输入、输出等作为参数,数据则单独列出,在执行时选择相应的数据执行。19为什么要参数化?为什么要参数化?没有将测试数据和测试逻辑分开的测试用例可能显得非常庞大,不利于测试员理解,导致难以控制和执行;通过将用例参数化,可以简化用例,使测试用例逻辑清晰,数据与逻辑的关系明了,易于理解;有利于提高测试用例的复用性;20哪些内容需要参数化?哪些内容需要参数化?测试用例中需要通过使用不同数据来重复执行测试的部分;包括:输入(数据或操作等)输出(结果数据或预期结果等)21样例样例 登录登录步骤:步骤:1、输
8、入2、输入3、点击OK按钮结果:结果:22测试数据(一)测试数据(一)“用户名用户名”“口令口令”“预期结果预期结果”说明说明“user10”“pass10”进入系统正确的用户名和口令(6位)“user789”“pass789”进入系统正确的用户名和口令(7-9位)“user000010”“pass000010”进入系统正确的用户名和口令(10位)“”“pass”提示输入用户名不能进入系统用户名为空“空格”“pass”提示无效用户名不能进入系统用户名为空格23测试数据(二)测试数据(二)“用户名用户名”“口令口令”“预期结果预期结果”说明说明“user”“userpass”提示用户名太短不能进
9、入系统用户名小于6位“user0000011”“userpass”提示用户名太长不能进入系统用户名大于10位243.3.6 白盒测试用例设计白盒测试用例设计白盒测试作为结构测试方法,是按照程序内部的结构测试程序,对软件的过程性细节做细致的检查,测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例。 白盒法又称为逻辑覆盖法,其测试用例选择,是按照不同覆盖标准确定的。语语句句覆覆盖盖判判定定覆覆盖盖条条件件覆覆盖盖条条件件组组合合覆覆盖盖弱弱强强判判定定条条件件覆覆盖盖路路径径覆覆盖盖251 1、语语句句覆覆盖盖: 选选择择足足够够的的测测试试用用例例,使使得得程程序序中每个语句至少都能被
10、执行一次。中每个语句至少都能被执行一次。2 2、判定覆盖:、判定覆盖: 执行足够的测试用例,使得程序执行足够的测试用例,使得程序中每个判定至少都获得一次中每个判定至少都获得一次“真真”值和值和“假假”值。值。3 3、条条件件覆覆盖盖:执执行行足足够够的的测测试试用用例例,使使得得判判定定中中的每个条件获得各种可能的结果。的每个条件获得各种可能的结果。4 4、判判定定/ /条条件件覆覆盖盖: 执执行行足足够够的的测测试试用用例例,使使得得判判定定中中每每个个条条件件取取到到各各种种可可能能的的值值,并并使使每每个个判判定取到各种可能的结果。定取到各种可能的结果。白盒法常用的覆盖标准白盒法常用的覆
11、盖标准白盒法常用的覆盖标准白盒法常用的覆盖标准265 5、条条件件组组合合覆覆盖盖: 执执行行足足够够的的例例子子,使使得得每每个个判定中条件的各种可能组合都至少出现一次。判定中条件的各种可能组合都至少出现一次。 6、路路径径覆覆盖盖: 执执行行足足够够的的例例子子,覆覆盖盖程程序序中中所所有可能的路径。有可能的路径。白盒法常用的覆盖标准白盒法常用的覆盖标准白盒法常用的覆盖标准白盒法常用的覆盖标准27白盒法步骤:白盒法步骤:白盒法步骤:白盒法步骤:例:用白盒法测试以下程序段:Procedure(VAR A,B,X:REAL);BEGIN IF (A1) AND (B=0) THEN X:=X/
12、A ; IF (A=2) OR (X1) THEN X:=X+1END;1 1)选择逻辑覆盖标准。)选择逻辑覆盖标准。2 2)按照覆盖标准列出所有情况。)按照覆盖标准列出所有情况。3 3)选择确定测试用例。)选择确定测试用例。4 4)验证分析运行结果与预期结果。)验证分析运行结果与预期结果。28白盒法举例白盒法举例白盒法举例白盒法举例Procedure (VAR A,B,X:REAL); BEGIN IF(A1) AND (B=0) THEN X:=X/A ; IF (A=2) OR (X1) THEN X:=X+1 END;A1ANDB=0X:=X/AA=2OR X1X:=X+1YNYN29
13、1 1、语句覆盖、语句覆盖、语句覆盖、语句覆盖使得程序中每个语句至使得程序中每个语句至少都能被执行一次。少都能被执行一次。A1ANDB=0X:=X/AA=2OR X1X:=X+1abcde满足语句覆盖的情况:满足语句覆盖的情况: 执行路径:执行路径:aceace选择用例:选择用例:(2,0,4),(2,0,3)(2,0,4),(2,0,3) 用例格式:用例格式: 输入输入(A,B,X)(A,B,X),输出,输出(A,B,X)(A,B,X)YNYN302 2、判定覆盖、判定覆盖、判定覆盖、判定覆盖使得程序中每个判定至少使得程序中每个判定至少为为TRUE TRUE 或或FALSEFALSE各一次。
14、各一次。A1ANDB=0X:=X/AA=2OR X1X:=X+1abcde覆盖情况:覆盖情况:应执行路径应执行路径ace abd 或:或: acd abe选择用例选择用例(其一):其一): (2,0,4),(2,0,3) ace (2,0,4),(2,0,3) ace (1,1,1),(1,1,1) abd (1,1,1),(1,1,1) abd (2,1,1),(2,1,2) abe (2,1,1),(2,1,2) abe (3,0,3),(3,1,1) acd (3,0,3),(3,1,1) acdYYNN313 3、条件覆盖、条件覆盖、条件覆盖、条件覆盖A1ANDB=0X:=X/AA=2
15、OR X1X:=X+1abcde使得判定中的每个条件使得判定中的每个条件获得各种可能的结果。获得各种可能的结果。应满足以下覆盖情况:应满足以下覆盖情况:判定一判定一: A1, A1, B=0, B0判定二判定二: A=2, A2, X1, X1选择用例:选择用例: (2,0,4),(2,0,3) (2,0,4),(2,0,3) (1,1,1),(1,1,1) (1,1,1),(1,1,1) NNYY2 2A1A20 0B=04 4X11 1A1A=21 1B01 1X1注意注意: :(1,0,3),(1,0,4)(1,0,3),(1,0,4)(2,1,1),(2,1,2)(2,1,1),(2,
16、1,2)满足条件覆盖,但不满足判断满足条件覆盖,但不满足判断覆盖。覆盖。324 4、判定、判定、判定、判定/ /条件覆盖条件覆盖条件覆盖条件覆盖同时满足判断覆盖和条同时满足判断覆盖和条件覆盖。件覆盖。A1ANDB=0X:=X/AA=2OR X1X:=X+1abcde应满足以下覆盖情况:应满足以下覆盖情况: 条件条件: A1, A1, B=0, B0 A=2, A2, X1, X1 应执行路径应执行路径ace abd 或:或: acd abe选择用例:选择用例: (2,0,4),(2,0,3) (2,0,4),(2,0,3)(ace)ace) (1,1,1),(1,1,1) (abd) (1,1
17、,1),(1,1,1) (abd)YYNN335 5、条件组合覆盖、条件组合覆盖、条件组合覆盖、条件组合覆盖使得每个判定中条件的各种使得每个判定中条件的各种可能组合都至少出现一次。可能组合都至少出现一次。A1X:=X/AA=2X:=X+1abcdeB=0X1YNYNYNYN编译系统下的执行情况:编译系统下的执行情况:部分路径未被执行。部分路径未被执行。满足以下覆盖情况:满足以下覆盖情况: A1, B =0 A1, B0 A1, B =0 A1, B0 A=2, X1 A=2, X1 A2, X1 A2, X1选择用例:选择用例:(2,0,4),(2,0,3) (2,0,4),(2,0,3) (
18、2,1,1),(2,1,2) (2,1,1),(2,1,2) (1,0,3),(1,0,4) (1,0,3),(1,0,4) (1,1,1),(1,1,1) (1,1,1),(1,1,1) 346 6、路径覆盖、路径覆盖、路径覆盖、路径覆盖覆盖程序中所有可能的路径覆盖程序中所有可能的路径A1ANDB=0X:=X/AA=2OR X1X:=X+1abcdeYYNNA B X覆盖路径2 0 31 0 12 1 13 0 1a c e a b da b e a c d辅助模块设计辅助模块设计白盒测试和集成测试中,往往需要用到辅助模块驱动模块桩模块单元测试的测试环境(P73)3536等等价价分分类类法法
19、边边值值分分析析法法错错误误推推测测法法因因果果图图法法3.3.7 黑盒测试用例设计黑盒测试用例设计黑盒测试不考虑程序的内部结构与特性,只根据程序功能或程序的外部特性设计测试用例。371 1、等价分类法、等价分类法、等价分类法、等价分类法基本思想:根据程序的I/O特性,将程序的定义域划分为有限个等价区段 “等价类”,从等价类中选择出的用例,具有“代表性”。等价类分为: 有效等价类 对于程序的规格说明是合理的、有意义的输入数据构成的集合。 无效等价类 对于程序的规格说明,是不合理的,是没有意义的输入数据构成的集合。38等价分类法步骤等价分类法步骤等价分类法步骤等价分类法步骤 应应按按照照输输入入
20、条条件件(如如输输入入值值的的范范围围,值值的的个个数数,值值的的集集合合,输输入入条件必须如何)划分为有效等价类和无效等价类。条件必须如何)划分为有效等价类和无效等价类。例如:每个学生可选修例如:每个学生可选修1-31-3门课程门课程 可以划分一个有效等价类:选修可以划分一个有效等价类:选修1-31-3门课程。门课程。 可以划分两个无效等价类:未选修课,选修课超过可以划分两个无效等价类:未选修课,选修课超过3 3门。门。又如:标识符的第一个字符必须是字母。又如:标识符的第一个字符必须是字母。 可以划分为一个有效等价类:第一个字符是字母。可以划分为一个有效等价类:第一个字符是字母。 可以划分一
21、个无效等价类:第一个字符不是字母。可以划分一个无效等价类:第一个字符不是字母。 划分划分“等价类等价类” 显然,关键是显然,关键是如何划分等价类如何划分等价类A A、为每个等价类编号;为每个等价类编号;B B、使一个测试用例尽可能覆盖多个有效等价类使一个测试用例尽可能覆盖多个有效等价类C C、特别要注意的是:一个测试用例只能覆盖一个无效等价类。特别要注意的是:一个测试用例只能覆盖一个无效等价类。 选择测试用例选择测试用例选择测试用例选择测试用例 等价分类法步骤等价分类法步骤392 2、边值分析法、边值分析法、边值分析法、边值分析法 基本思想: 选择等价类的边缘值作为测试用例,让每个等价类的边界
22、都得到测试,选择测试用例既考虑输入亦考虑输出。 分析步骤: A、先划分等价类。 B、选择测试用例,测试等价类边界。 边界选择原则: A、按照输入值范围的边界。 B、按照输入/输出值个数的边界。 C、输出值域的边界。 D、输入/输出有序集的边界。40 A A、按照输入值范围的边界。 例如:输入值的范围是-1.0至1.0,则可选择用例 1.0、1.0、-1.001、1.001。 B B、按照输入/输出值个数的边界。 例如:输入文件可有1-255个记录,则 设计用例:文件的记录数为 0个、1个、255个、256个。 C C、输出值域的边界。 例如:检索文献摘要,最多4篇。设计用例:可检索0篇、1篇、
23、4篇,和5篇(错误)。 D、输入/输出有序集(如顺序文件、线性表)的边界。 应选择第一个元素和最后一个元素。边值分析法举例边值分析法举例41黑盒法应用实例(二)黑盒法应用实例(二)黑盒法应用实例(二)黑盒法应用实例(二)保险费率计算 人 人 保 险 公 司 承 担 人 寿 保 险 已 有 多 年 历 史 , 该 公 司 保 费 计 算 方 式 为 投 保 额 保 险 率 , 保 险 率 又 依 点 数 不 同 而 有 别 , 10 点 以 上 费 率 为 0.6 % , 10 点 以 下 费 率 为 0.1 % : 42输入数据说明。43一、分析输入数据形式 年龄:一或两位数字。 性别:以英文
24、Male、 Female、 M、 F表示。 婚姻: 已婚、 未婚。 抚养人数:空白或一位数字。 保险费率:10点以上,10点以下。44二、划分输入数据 4546三、设计输入数据 4748四、设计测试用例: 49503 3 3 3、错误推测法、错误推测法、错误推测法、错误推测法 凭经验或直觉推测可能的错误,列出程序中凭经验或直觉推测可能的错误,列出程序中可能有的错误和容易发生错误的特殊情况,选择可能有的错误和容易发生错误的特殊情况,选择测试用例。测试用例。把输入条件视为“因”,把输出条件视为“果”,将黑盒看成是从因到果的网络图,采用逻辑图的形式来表达功能说明书中输入条件的各种组合与输出的关系。根
25、据这种关系可选择高效的测试用例。因果图是一种形式化语言,是一种组合逻辑因果图是一种形式化语言,是一种组合逻辑网络图。网络图。4 4 4 4、因果图法、因果图法、因果图法、因果图法51一、因果图方法概述4 4 4 4、因果图法、因果图法、因果图法、因果图法 一种黑盒测试方法方法的依据:需求规格说明中的因果关系52二、因果图符号恒等c1=1e1=1c1=0e1=0非c1c2c3c1e1c1e1e1c1c2e1c1=1e1=0c1=0e1=1c1=1 或c=1 或c=1 e1=e1=0否则c1=1 且c=1e1=e1=0否则或与53a输入条件的约束bEacIbabOE约束(异):a,b中至多有一个可
26、能为1即a和b不能同时为约束(或):a,b和c中至少有一个必须是1,即a、b和c不能同时为0O约束(唯一):a和b中必须有一个 且仅有一个为54abRR约束(要求):a是时,b必须是 即不可能a是时b为输出条件的约束abMM约束(强制):若结果a是时, 则结果b强制为55分析规范,即将问题分为若干可工作的步骤。标识出规范中的原因与结果。原因原因输入条件输入条件 结果结果输出或系统变换输出或系统变换分析规范语义、内容,转换为因果图。将因果图转换为有限项判断表。将判断表的每一列,转换为一个测试用例。三、因果图法的步骤56四、因果图方法举例某程序要求:第一列字符必须是或,第二列字符必须是一个数字,在
27、此情况下对文件进行修改。但第一列字符不正确,则给出信息;若第二列字符不是一个数字,则给出信息。分析原因原因第一列字符是第一列字符是第二列字符是一个数字结果结果21修改文件22给出信息23给出信息57因果图因果图21222311E58解判定表和测试用例123456781111 110011001010101011110000001110100001010测试用例A3A8ABA?B5B4BNB!C2X6SDP$条件(原因)动作(结果)11222123593.3.8 黑盒测试与白盒测试比较黑盒测试与白盒测试比较黑盒测试主要是为了发现以下几类错误:是否有不正确或遗漏的功能?是否有不正确或遗漏的功能?在
28、在接接口口上上,输输入入是是否否能能正正确确的的接接受受?能能否否输输出出正正确确的的结结果?果?是是否否有有数数据据结结构构错错误误或或外外部部信信息息(例例如如数数据据文文件件)访访问问错误?错误?性能上是否能够满足要求?性能上是否能够满足要求?是否有初始化或终止性错误?是否有初始化或终止性错误?60白盒测试则被程序员用来对程序模块进行检查,在检查的过程中:对程序模块的所有独立的执行路径至少测试一次对程序模块的所有独立的执行路径至少测试一次对所有的逻辑判定,取对所有的逻辑判定,取“真真”与取与取“假假”的两种情况都能的两种情况都能至少测试一次至少测试一次在循环的边界和运行界限内执行循环体在
29、循环的边界和运行界限内执行循环体测试内部数据结构的有效性测试内部数据结构的有效性61测试方式特征依据测试人员测试驱动程序黑盒测试只关心软件的外部表现,不关心内部设计与实现。软件需求任何人(包括开发人员、独立测试人员和用户)一般无需编写额外的测试驱动程序白盒测试关注软件的内部设计与实现,要跟踪源代码的运行。设计文档由开发人员兼任测试人员的角色需要编写额外的测试驱动程序62白盒测试黑盒测试程序结构已知程序结构未知程序结构规模小规模测试大规模测试依据详细设计说明需求说明、概要设计说明面向程序结构输入输出接口/功能要求适用单元测试组装、系统测试测试人员开发人员专门测试人员/外部人员优点能够对程序内部的
30、特定部位进行覆盖能站在用户的立场上进行测试缺点无法检验程序的外部特性不能检测对要求的遗漏不能测试程序内部特定部位如果规格说明有误,则无法发现633.4 评审测试用例评审测试用例复查测试用例时应该考虑的一些问题:测试或测试组件完全针对的是需求中列出的功能测试或测试组件完全针对的是需求中列出的功能吗?吗?测试组件是否覆盖了所有需求?测试组件是否覆盖了所有需求?有冗余的测试吗?有冗余的测试吗?每一个测试步骤都有清楚描述的预期结果吗?每一个测试步骤都有清楚描述的预期结果吗?测试用例是否考虑了有效和无效的输入情况?测试用例是否考虑了有效和无效的输入情况?64测试用例的优先级 定定义义测测试试用用例例优优先先级级主主要要考考虑虑:必必须须测测试试什什么么功功能能?如果一些功能没被测试会出现什么后果?如果一些功能没被测试会出现什么后果?优先级优先级1:这个测试必须执行:这个测试必须执行优先级优先级2:如果时间允许,执行这个测试:如果时间允许,执行这个测试优先级优先级3:即使不执行这个测试,也不会导致大:即使不执行这个测试,也不会导致大的质量问题的质量问题