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 软件版本:子系统:用户名字段测试 操作系统:测试人员姓名:测试日期:初始设置 1打开注
5、册会话框 2在用户名字段放入字符“王”3确保所有其他输入字段为空输入 1将光标置于用户名字段 2输入字符“帅”预期结果 用户名字段出现字符“王帅”实际结果 通过 失败3.3.5测试用例设计的基本原则测试用例设计的基本原则测试用例的代表性:能够代表并覆盖各种合理的和不合理、合法的和非法的、边界的和越界的、以及极限的输入数据、操作和环境设置等;测试结果的可判定性:即测试执行结果的正确性是可判定的,每一个测试用例都应有相应的期望结果;测试结果的可再现性:即对同样的测试用例,系统的执行结果应当是相同的。123.3.6测试用例的特征测试用例的特征最有可能抓住错误的;最有可能抓住错误的;不是重复的、多余的
6、;不是重复的、多余的;一组相似测试用例中最有效的;一组相似测试用例中最有效的;不要太简单,也不要太复杂。不要太简单,也不要太复杂。1314测试用例越详细越好?15时间要求时间要求测试时间是否充足?执行者执行者测试执行者对系统的了解程度?建议程度建议程度将测试用例交给其他人执行时不需要过多的解释。16样例样例 登录登录需求:需求:用户名长度为6至10位(含6位和10位)用户名由字符(a-z、A-Z)和数字(0-9)组成 不能为空、空格和特殊字符 密码规则同用户名规则17简单简单能够正确处理用户登录一般一般输入正确的用户名和口令可以进入系统输入用户名或口令错误无法进入系统18详细详细操作步骤操作步
7、骤预期结果预期结果输入正确的用户名和口令(均为6位),点击OK按钮进入系统输入正确的用户名和口令(均为10位),点击OK按钮进入系统输入正确的用户名和口令(均为6至8位之间),进入系统用户名为空,提示输入用户名不能进入系统用户名为空格,提示无效用户名不能进入系统用户名小于6位,提示用户名太短不能进入系统3.3.6测试用例的组织和跟踪测试用例的组织和跟踪19在执行测试过程中,会遇到如下问题:计划执行哪些测试用例?执行需要多少时间?一轮测试需要多少测试人员?能否挑出测试套装(相关测试用例子集)来测试某些特性或软件部分?在执行测试用例时,能否记录哪些通过?哪些失败;当前测试是否按计划进行?上次执行测
8、试用例时通过的百分比是多少?测试用例跟踪管理方式:测试用例追踪表20如果没有测试用例或者仅有简单的测试功能描述,测试过程难以控制,测试结果将毫无可靠性可言。简单的测试用例可靠性低,重用性差,可能导致不同人员理解不同。详细的测试用例可靠性高,而且便于估计执行所需时间,易于控制。3.3.7 测试用例参数化测试用例参数化21定义定义 参数化参数化是一个将测试数据与测试逻辑(步骤)分开,简化测试用例的过程;方式是将用例中的一些输入、输出等作为参数,数据则单独列出,在执行时选择相应的数据执行。22为什么要参数化?为什么要参数化?没有将测试数据和测试逻辑分开的测试用例可能显得非常庞大,不利于测试员理解,导
9、致难以控制和执行;通过将用例参数化,可以简化用例,使测试用例逻辑清晰,数据与逻辑的关系明了,易于理解;有利于提高测试用例的复用性;23哪些内容需要参数化?哪些内容需要参数化?测试用例中需要通过使用不同数据来重复执行测试的部分;包括:输入(数据或操作等)输出(结果数据或预期结果等)24样例样例 登录登录步骤:步骤:1、输入2、输入3、点击OK按钮结果:结果:25测试数据(一)测试数据(一)“用户名用户名”“口令口令”“预期结果预期结果”说明说明“user10”“pass10”进入系统正确的用户名和口令(6位)“user789”“pass789”进入系统正确的用户名和口令(7-9位)“user00
10、0010”“pass000010”进入系统正确的用户名和口令(10位)“”“pass”提示输入用户名不能进入系统用户名为空“空格”“pass”提示无效用户名不能进入系统用户名为空格26测试数据(二)测试数据(二)“用户名用户名”“口令口令”“预期结果预期结果”说明说明“user”“userpass”提示用户名太短不能进入系统用户名小于6位“user0000011”“userpass”提示用户名太长不能进入系统用户名大于10位273.3.8 测试用例的意义测试用例的意义使用测试用例的好处主要体现在以下几个方面:使用测试用例的好处主要体现在以下几个方面:在开始实施测试之前设计好测试用例,可以避免盲
11、目测试并在开始实施测试之前设计好测试用例,可以避免盲目测试并提高测试效率。提高测试效率。测试用例的使用令软件测试的实施重点突出、目的明确。测试用例的使用令软件测试的实施重点突出、目的明确。在软件版本更新后只需修正少部分的测试用例便可展开测试在软件版本更新后只需修正少部分的测试用例便可展开测试工作,降低工作强度、缩短项目周期。工作,降低工作强度、缩短项目周期。功能模块的通用化和复用化使软件易于开发,而相对于功能功能模块的通用化和复用化使软件易于开发,而相对于功能模块的测试用例的通用化和复用化则会使软件测试易于开展,模块的测试用例的通用化和复用化则会使软件测试易于开展,并随着测试用例的不断精化其效
12、率也不断攀升。并随着测试用例的不断精化其效率也不断攀升。组织性有利于测试的组织;组织性有利于测试的组织;功能覆盖确保功能不被遗漏;功能覆盖确保功能不被遗漏;重复性有利于测试的重复;重复性有利于测试的重复;跟踪有利于测试的跟踪;跟踪有利于测试的跟踪;测试确认在少数高风险的测试中,必须证明确实执测试确认在少数高风险的测试中,必须证明确实执行了计划执行的测试;行了计划执行的测试;28293.3.9 黑盒测试与白盒测试比较黑盒测试与白盒测试比较黑盒测试主要是为了发现以下几类错误:是否有不正确或遗漏的功能?是否有不正确或遗漏的功能?在接口上,输入是否能正确的接受?能否输出正确的结在接口上,输入是否能正确
13、的接受?能否输出正确的结果?果?是否有数据结构错误或外部信息(例如数据文件)访问是否有数据结构错误或外部信息(例如数据文件)访问错误?错误?性能上是否能够满足要求?性能上是否能够满足要求?是否有初始化或终止性错误?是否有初始化或终止性错误?30白盒测试则被程序员用来对程序模块进行检查,在检查的过程中:对程序模块的所有独立的执行路径至少测试一次对程序模块的所有独立的执行路径至少测试一次对所有的逻辑判定,取对所有的逻辑判定,取“真真”与取与取“假假”的两种情况都能的两种情况都能至少测试一次至少测试一次在循环的边界和运行界限内执行循环体在循环的边界和运行界限内执行循环体测试内部数据结构的有效性测试内
14、部数据结构的有效性31测试方式特征依据测试人员测试驱动程序黑盒测试只关心软件的外部表现,不关心内部设计与实现。软件需求任何人(包括开发人员、独立测试人员和用户)一般无需编写额外的测试驱动程序白盒测试关注软件的内部设计与实现,要跟踪源代码的运行。设计文档由开发人员兼任测试人员的角色需要编写额外的测试驱动程序32 白盒测试黑盒测试程序结构已知程序结构未知程序结构规模小规模测试大规模测试依据详细设计说明需求说明、概要设计说明面向程序结构输入输出接口/功能要求适用单元测试组装、系统测试测试人员开发人员专门测试人员/外部人员优点能够对程序内部的特定部位进行覆盖能站在用户的立场上进行测试缺点无法检验程序的
15、外部特性不能检测对要求的遗漏不能测试程序内部特定部位如果规格说明有误,则无法发现333.4 评审测试用例评审测试用例复查测试用例时应该考虑的一些问题:测试或测试组件完全针对的是需求中列出的功能测试或测试组件完全针对的是需求中列出的功能吗?吗?测试组件是否覆盖了所有需求?测试组件是否覆盖了所有需求?有冗余的测试吗?有冗余的测试吗?每一个测试步骤都有清楚描述的预期结果吗?每一个测试步骤都有清楚描述的预期结果吗?测试用例是否考虑了有效和无效的输入情况?测试用例是否考虑了有效和无效的输入情况?34测试用例的优先级 定义测试用例优先级主要考虑:必须测试什么功能?定义测试用例优先级主要考虑:必须测试什么功能?如果一些功能没被测试会出现什么后果?如果一些功能没被测试会出现什么后果?优先级优先级1:这个测试必须执行:这个测试必须执行优先级优先级2:如果时间允许,执行这个测试:如果时间允许,执行这个测试优先级优先级3:即使不执行这个测试,也不会导致大:即使不执行这个测试,也不会导致大的质量问题的质量问题