测试理论与测试设计2020年1月10日目标听众测试设计人员测试人员全面认识测试设计定位深入了解测试设计理论掌握主流测试设计方法希望您能够有以下收获目录测试设计定位测试设计理论测试设计方法测试设计定位如何以最少的人力、资源投入,在最短的时间内完成测试,发现软件系统的缺陷,保证软件的优良品质,则是软件公司探索和追求的目标。测试用例是测试工作的指导,是软件测试的必须遵守的准则。更是软件测试质量稳定的根本保障。测试用例是软件测试的核心测试设计定位所谓的测试用例就是将软件测试的行为活动,做一个科学化的组织归纳。软件测试是有组织性、步骤性和计划性的,而设计软件测试用例的目的,就是为了能将软件测试的行为转换为可管理的模式。基于时间因素的考虑,软件测试行为必须能够加以量化,才能进一步让管理阶层掌握所需要的测试过程,而测试用例就是将测试行为具体量化的方法之一。什么是测试用例测试设计定位因为我们不可能进行穷举测试,为了节省时间和资源、提高测试效率,必须要从数量极大的可用测试数据中精心挑选出具有代表性或特殊性的测试数据来进行测试。什么是测试用例测试设计理论测试设计步骤理解软件和测试目标设计测试用例跟踪测试用例执行结果并及时维护测试用例评估测试用例和测试策略测试设计步骤既强调目的性也强调计划性目标是追求测试效率和测试结果文档化和按部就班一般会降低管理难度,增强计划性测试设计理论目的建立软件故障模型,了解测试目标,来确定测试策略和测试计划任务了解软件的功能和业务背景、用户环境了解软件的开发背景和系统结构、技术选型了解软件的质量历史、版本变化了解测试目标和资源限制确定测试策略和测试计划理解软件和测试目标测试设计理论方法阅读软件需求规格书,理解软件运行环境和用户行为,了解软件要解决的问题域试运行软件熟悉软件功能确定软件基本可以测试了解软件体系结构、技术选型、开发环境和工具查阅早期版本测试报告,以及单元和集成测试用例确定测试人员限制和时间限制,制定初步测试策略和测试计划,确定测试结束标准理解软件和测试目标测试设计理论目的设计尽可能多、快、好、省发现错误的测试用例任务设计新的测试用例维护已有的测试用例库设计测试用例测试设计理论方法等价类划分法边界值分析法错误推测法因果图法判定表驱动法场景法功能图法设计测试用例测试设计理论目的保证测试用例在测试执行过程中能正确指导测试任务跟踪测试用例执行情况评估测试结果并记录缺陷及时维护测试用例跟踪测试用例执行结果并及时维护测试用例测试设计理论方法根据实现测试执行情况及时更新测试用例设计思路加强测试执行过程中的沟通,迅速反馈问题激励测试人员测试执行过程中多思考跟踪测试用例执行结果并及时维护测试用例测试设计理论目的检验测试用理和测试策略的有效性增加测试经验,为后续项目提供参考、指导任务根据测试结果完善和修正测试策略和测试计划、产生新的测试用例设计思路评估测试用例质量测试用例覆盖率(测试用例发现的缺陷/测试用例总条数)测试用例发现率(通过测试用例发现的缺陷/本项目中总缺陷数)缺陷探测率(产品发行前发现的缺陷/产品发行前发现的缺陷+产品发行后发现的缺陷)评估测试用例和测试策略测试设计理论方法总结经验吸收正面经验反思负面教训评估测试用例和测试策略测试设计方法测试用例的代表性:能够代表并覆盖各种合理和不合理、合法和非法、边界和越界、以及极限的输入数据、操作和环境设置等;测试结果的可判定性:即测试执行结果的正确性是可判定的,每一个测试用例都应有相应的期望结果;测试结果的可再现性:即对同样的测试用例,系统的执行结果应当是相同的。测试设计的基本准则测试设计方法具体的黑盒测试用例设计方法包括等价类划分法、边界值分析法、错误推测法、因果图法、判定表驱动法、场景法、功能图法等。这些方法是比较实用的,但采用什么方法,在使用时自然要针对开发项目的特点对方法加以适当的选择。黑盒测试用例的设计方法测试设计方法等价类划分法是把程序的输入域划分成若干部分,然后从每个部分中选取少数代表性数据当作测试用例。每一类的代表性数据在测试中的作用等价于这一类中的其他值,也就是说,如果某一类中的一个例子发现了错误,这一等价类中的其他例子也能发现同样的错误;反之,如果某一类中的一个例子没有发现错误,则这一类中的其他例子也不会查出错误。等价类划分法测试设计方法可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件,就可以用少量代表性的测试数据取得较好的测试结果。等价类划分有两种不同的情况:有效等价类:是指对于程序的规格说明来说是合理的、有意义的输入数据构成的集合。利用它可检验程序是否实现了规格说明中所规定的功能和性能。无效等价类:是指对于程序的规格说明来说是不合理的、没有意义的输入数据所构成的集合。利用它可以检验程序对于无效数据的处理。划分等价类和列出等价类表测试设计方法在确立了等价类之后,建立等价类表,列出所有划分出的等价类:建立等价类表输入条件有效等价类无效等价类………………测试设计方法我们可以设三角形的3条边分别为A,B,C。如果它们能够构成三角形的3条边,必须满足:A0,B0,C0,且A+BC,B+CA,A+CB。如果是等腰的,还要判断A=B,或B=C,或A=C。如果是等边的,则需判断是否A=B,且B=C,且A=C。等价类方法举例测试设计方法等价类方法指导测试设计举例输入条件有效等价类无效等价类是否构成三角形的三条边(A0),(1)(B0),(2)(C0),(3)(A+BC),(4)(B+CA),(5)(A+CB),(6)(A≤0),(7)(B≤0),(8)(C≤0),(9)(A+B≤C),(10)(B+C≤A),(11)(A+C≤B),(12)是否构成等腰三角形的三条边(A=B),(13)(B=C),(14)(C=A),(15)(A≠B)and(B≠C)and(C≠A)(16)是否构成等边三角形的三条边(A=B)and(B=C)and(C=A)(17)(A≠B),(18)(B≠C),(19)(C≠A),(20)测试设计方法等价类方法指导测试设计举例序号输入数据【A,B,C】覆盖等价类输出结果1【3,4,5】(1),(2),(3),(4),(5),(6)一般三角形2【0,1,2】(7)不能构成三角形3【1,0,2】(8)4【1,2,0】(9)5【1,2,3】(10)6【1,3,2】(11)7【3,1,2】(12)8【3,3,4】(1),(2),(3),(4),(5),(6),(13)等腰三角形9【3,4,4】(1),(2),(3),(4),(5),(6),(14)10【3,4,3】(1),(2),(3),(4),(5),(6),(15)11【3,4,5】(1),(2),(3),(4),(5),(6),(16)非等腰三角形12【3,3,3】(1),(2),(3),(4),(5),(6),(17)等边三角形13【3,4,4】(1),(2),(3),(4),(5),(6),(14),(18)非等边三角形14【3,4,3】(1),(2),(3),(4),(5),(6),(15),(19)15【3,3,4】(1),(2),(3),(4),(5),(6),(13),(20)测试设计方法边界值分析法大量的错误是发生在输入或输出范围的边界上,而不是在输入范围的内部。因此针对各种边界情况设计测试用例,可以查出更多的错误。边界值分析是一种补充等价划分的测试用例设计技术,它不是选择等价类的任意元素,而是选择等价类边界的测试用例。实践证明为检验边界附近的处理专门设计测试用例,常常取得良好的测试效果。测试设计方法边界值设计原则如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。如果输入条件规定了值的个数,则用最大个数、最小个数、比最小个数少一、比最大个数多一的数作为测试数据。如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例。如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例。分析规格说明,找出其他可能的边界条件。测试设计方法错误推测法凭经验或直觉推测可能的错误,列出程序中可能有的错误和容易发生错误的特殊情况,选择测试用例。测试设计方法因果图设计方法优势能够帮助我们按一定步骤,高效率地选择测试用例,同时还能为我们指出,需求规格说明描述中存在着什么问题。当某个模块的输入、输出很多或存在多种组合,又或者变量间存在相应的关系(不是相互独立的)时,使用因果图测试是十分有效的。测试设计方法因果图测试的基本步骤利用因果图生成测试用例一般有以下几个基本步骤:(1)分析软件需求规格说明描述中,原因(即输入条件或输入条件的等价类)、结果(即输出条件),并给每个原因和结果赋予一个标识符。(2)分析软件需求规格说明描述中的语义.找出原因与结果之间,原因与原因之间对应的关系。根据这些关系,画出因果图。(3)由于语法或环境限制,有些原因与原因之间,原因与结果之间的组合情况不可能出现。为表明这些特殊情况,在因果图上用一些记号标明约束或限制条件。(4)把因果图转换成判定表。(5)把判定表的每一列拿出来作为依据,设计测试用例。测试设计方法因果图的画法C1E1C1E1C1C2C3E1C1E1C2图1—1因果图的基本符号(1)恒等(2)非(3)或(4)与测试设计方法因果图基本图形介绍如图1—1中所示,ci表示原因,一般置于图左部;ei表示结果,一般置于图右部。ci和ei都可以取值0或1,0表示某状态不出现,1表示某状态出现。(1)恒等:若c1为1,则e1也为1;否则,e1为0。(2)非:若c1为1,则e1为0;否则e1为1。(3)或:若c1或c2或c3为1,则e1为1;否则e1为0;“或”可有任意个输入。(4)与:若c1和c2都为1,则e1为1;否则e1为0;“与”也可有任意个输入。测试设计方法因果图中约束符号在实际问题中,输入条件相互之间还可能存在某些依赖关系,称之为“约束”,比如某些输入条件本身不可能同时出现,输出状态间也往往存在约束。在因果图中用特定符号表明这些约束,见下图:baE约束(异)bacI约束(或)abO约束(唯一)ababR约束(要求)M约束(强制)图1—2约束符号测试设计方法因果图中约束符号(1)E约束(异):a、b中至多有一个可能为1,即a、b不可能同时为1。(2)I约束(或):a、b、c中至少有一个必须为1,即a、b、c不能同时为0。(3)O约束(唯一):a、b中必须有一个,且仅有一个为1。(4)R约束(要求):a是1时,b必须是1,即不可能出现a是1时,b是0。(5)M约束(强制):如果结果a为1,则结果b强制为0。即a、b不能同时出现.注意:(1)—(5)中只有(5)是对结果的约束。测试设计方法因果图测试举例举例:如想对文件进行修改,输入的第一列字符必须是A或B,第二列字符必须是一个数字,如果第一列字符不正确,则给出信息L;如果第二列字符不正确,则给出信息M。测试设计方法因果图测试举例第一步:分析了上面的规格说明的要求后,我们可以很明确的把原因和结果分开。原因:结果:1.第一列字符为A21.修改文件2.第一列字符为B22.给出信息L3.第二列字符为一数字23.给出信息M测试设计方法因果图测试举例第二步:这个例子规格说明中,很明确的给出了原因和结果之间的对应关系,将原因和结果根据它们之间的对应关系用相应的逻辑符号连接起来,画出因果图如下:图1—3中左列表示原因,右列表示结果,编号为11的结点是导出结果的进一步原因。21312232122图1—3因果图实例修改文件给出信息L给出信息M第一列字符为A第一列字符为B第二列字符为一数字测试设计方法因果图测试举例21312232122E第三步:考虑到原因1和2不可能同时为1(即第一列不能同时为A和B),我们在图上可对其施加E约束,这样就有了具有约束的因果图,如下:图1—4具有约束的因果图实例测试设计方法因果图测试举例第四步:把因果图转换成判定表(决策表)如下规