1、2018/4/16,author: henry Date: 16Oct, 2007,测试用例设计,2,课程介绍,目标掌握测试用例设计的实践、方法和要点听众测试管理人员、测试工程师应用开发人员、QA人员必备条件熟悉测试过程有过实际的测试经验,3,课程内容,如何设计好测试用例设计测试用例的思路黑盒测试用例的设计白盒测试用例的设计自动化测试用例的设计,4,测试用例设计,下面我们学习如何设计好测试用例测试用例与软件质量怎样衡量一个好的测试用例测试用例的类型剖析测试用例提高设计测试用例的效率常出现的错误,2018/4/16,5,测试用例与软件质量,测试用例是为了发现软件缺陷,或至少可能发现缺陷而设计;通
2、过好的用例来提高质量,从而降低维护成本;不好的用例将给质量带来一定的风险;好的用例是度量质量的一个标准。经常用“测试用例数/千行代码“来评价项目。,2018/4/16,6,怎样衡量一个好的测试用例,有效性是否能发现软件缺陷,至少可能发现软件缺陷;开销测试事例的执行、分析和调试是否经济;可仿效性测试用例可以测试多项内容,因而减 少了测试事例的数量;可维护性每次软件修改后对测试事例的维护成本;可执行性是否依赖于测试用例设计者;,2018/4/16,7,测试用例的类型,按表现形式分:向导型 一步一步的指示说明表脚本型 执行测试或回放记录的脚本 按设计目标分:单元测试用例 -发现编码的缺陷系统测试用例
3、 -发现功能说明的缺陷集成 测试用例-发现设计的缺陷验收测试用例 -发现需求的缺陷,2018/4/16,8,剖析测试用例,对任何一个测试用例而言都顺序执行这5个测试开发活动,标识,设计,建立,分析,执行,标识测试条件(确定测试什么)和测试的优先级,设计测试用例(确定怎样测试),建立测试(确定测试脚本、数据等),执行测试用例,将测试用例的输出结果与期望结果进行比较,2018/4/16,9,提高设计测试用例的效率,使用模板 防止空白页 建立标准 帮助测试者发现信息 打印好的测试例子使用测试管理软件 容易增加、移动、删除用例与步骤 可以借鉴很多模板 制作大纲 可以对步骤、用例进行拷贝 能自动编号,复
4、制技术 使用“另存为”命令 使用“替换”命令 使用存储文本、宏,2018/4/16,10,常出现的错误,用例太长不完善,不正确、不连贯遗漏步骤对字段的命名有所改变或使其根本不存在对系统的操作不清楚不能确定用例是否通过参数化错误,11,测试用例设计,下面我们学习设计测试用例的思路由简而繁参数化案例,2018/4/16,12,由简而繁,“繁”,这里是指详细的意思;,是一个过程,是一个逐步细化的过程,是一个从简单的测试描述(测试功能点、测试需求等)逐步细化到能够去依照执行的测试用例的过程,由简而繁,2018/4/16,13,为什么要由简而繁?,如果没有测试用例或者仅有简单的测试功能描述,测试过程难以
5、控制,测试结果将毫无可靠性可言;,简单的测试用例可靠性低,重用性差,可能导致不同人员理解不同;,详细的测试用例可靠性高,而且便于估计执行所需时间,易于控制。,2018/4/16,14,到何种程度?,时间要求测试时间是否充足?执行者测试执行者对系统的了解程度?建议程度将测试用例交给其他人执行时不需要过多的解释。,2018/4/16,15,样例 登录,需求:用户名长度为6至10位(含6位和10位)用户名由字符(a-z、A-Z)和数字(0-9)组成用户名不能为空,不能有空格和特殊字符密码规则同用户名规则,2018/4/16,16,简单理解需求,能够正确处理用户登录,2018/4/16,17,一般用例
6、的设计,输入正确的用户名和口令可以进入系统输入错误用户名或口令错误无法进入系统,2018/4/16,18,详细用例的设计,2018/4/16,19,什么是参数化,是一个将测试数据与测试逻辑(步骤)分开,简化测试用例的过程;方式是将用例中的一些输入、输出等作为参数,数据则单独列出,在执行时选择相应的数据执行。,2018/4/16,20,为什么要参数化?,没有将测试数据和测试逻辑分开的测试用例可能显得非常庞大,不利于测试员理解,导致难以控制和执行;,通过将用例参数化,可以简化用例,使测试用例逻辑清晰,数据与逻辑的关系明了,易于理解;,有利于提高测试用例的复用性;,2018/4/16,21,哪些内容
7、需要参数化?,测试用例中需要通过使用不同数据来重复执行测试的部分;包括:输入(数据或操作等)输出(结果数据或预期结果等),2018/4/16,22,样例 登录的测试步骤,2018/4/16,23,样例 登录的测试数据,24,测试用例设计,下面我们学习黑盒测试用例的设计等价类划分法边界值分析法错误推测法因果图法。,2018/4/16,25,等价类划分,定义:是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例;基本思想是设想用一组有限的数据去代表近似无限的数据;,2018/4/16,26,等价类划分,有效等价类是指对于程序的规格说明
8、来说是合理的、有意义的输入数据构成的集合。(正确的)无效等价类无效等价类指对程序的规格说明是不合理的或无意义的输入数据所构成的集合。(错误的)设计测试用例时,要同时考虑这两种等价类。因为软件不仅要能接收合理的数据,也要经受意外的考验,这样的测试才能确保软件具有更高的可靠性。,2018/4/16,27,划分等价类的方法,在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类。如:输入值是学生成绩,范围是0100;,2018/4/16,28,划分等价类的方法,在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类;在规定了输入数据的一组值(假定N个),并
9、且程序要对每一个输入值分别处理的情况下,可确立N个有效等价类和一个无效等价类;。,2018/4/16,29,设计测试用例,在确立了等价类后,可建立等价类表,列出所有划分出的等价类输入条件,然后从划分出的等价类中按以下三个原则设计测试用例:为每一个等价类规定一个唯一的编号;设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖地有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止;设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止;,2018/4/16,30,例子档案管理系统,有一个档案管理系统,要求用户输入以年月表示的日期。假设日期限定在1
10、990年1月2049年12月并规定日期由6位数字字符组成,前4位表示年,后2位表示月。现用等价类划分法设计测试用例,来测试程序的“日期检查功能”。,2018/4/16,31,例子档案管理系统,划分等价类并编号,下表为等价类划分的结果:,2018/4/16,32,例子档案管理系统,设计测试用例,以便覆盖所有的有效等价类在表中列出了3个有效等价类,编号分别为1、2、3,设计的测试用例如下:,2018/4/16,33,例子档案管理系统,为每一个无效等价类设计一个测试用例,设计结果如下:,2018/4/16,34,边界值分析,定义:边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。 通常
11、边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。,2018/4/16,35,边界值分析方法的考虑,长期的测试工作经验告诉我们,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部。使用边界值分析方法设计测试用例,应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据。,2018/4/16,36,常见的边界值,对16-bit 的整数而言 32767 和 -32768 是边界;屏幕上光标在最左上、最右下位置;报表的第一行和最后一行;数组元素的第一个和最后一个;循环的第 0 次、第 1 次和倒数第
12、2 次、最后一次;。,2018/4/16,37,边界检验的几种类型,边界检验的几种类型:数字、字符、位置、重量、大小、速度、方位、尺寸、空间等。,2018/4/16,38,数值的边界值检验,2018/4/16,39,字符的边界值检验,2018/4/16,40,例子档案管理系统(同前),有一个档案管理系统,要求用户输入以年月表示的日期。假设日期限定在1990年1月2049年12月并规定日期由6位数字字符组成,前4位表示年,后2位表示月。现用等价类划分法设计测试用例,来测试程序的“日期检查功能”。,2018/4/16,41,例子档案管理系统,边界值分析后的用例:,2018/4/16,42,错误推测
13、法,定义:基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性的设计测试用例的方法 。方法:列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例。,2018/4/16,43,例子,例如:输入数据和输出数据为0的情况;输入表格为空格或输入表格只有一行。如前面的例子可补充的用例有:输入空格输入中有字符输入“999999”或“000000”输入“-202-2” 。,2018/4/16,44,因果图法,定义:因果图法就是一种利用图解法分析输入的各种组合情况,生成判定表,从而设计测试用例的方法。优点:适合于检查程序输入条件的各种情况的组合。可以为逻辑条件和相应动作之间的关系
14、提供简洁的表示方法。,45,测试用例设计,下面我们学习白盒测试用例的设计为什么要进行白盒测试白盒测试用例设计方法逻辑覆盖法 基本路径覆盖法。,2018/4/16,46,为什么要进行白盒测试,假如有一个程序流程如图所示:,2018/4/16,47,为什么要进行白盒测试,如果测试组不知道代码中有一个潜在的被0 除的错误。测试组按照如下由蓝色和绿色标记的路径进行测试;显然测试工作似乎非常完善,测试用例覆盖了所有执行语句,没有被0 除的错误发生。,2018/4/16,48,为什么要进行白盒测试,但是,当客户在接到该产品并使用的过程中,执行了如下红色标记所示的路径时,错误发生了。,2018/4/16,4
15、9,为什么要进行白盒测试,从本例可以看到,如果不对程序内部的逻辑结构做分析,则设计的测试用例可能无法发现内部潜在的错误。,2018/4/16,50,白盒测试用例设计方法,逻辑覆盖法基本路径覆盖法其它方法等价类划分边界值分析。,2018/4/16,51,逻辑覆盖法,逻辑覆盖是以程序内部的逻辑结构为基础的测试用例设计技术,这一方法要求测试人员对程序的逻辑结构有清楚的了解。逻辑覆盖可分为:语句覆盖判定覆盖条件覆盖判定-条件覆盖条件组合覆盖,2018/4/16,52,逻辑覆盖各种方法定义,语句覆盖就是设计若干个测试用例,运行所测程序,使得每一可执行语句至少执行一次。判定覆盖就是设计若干个测试用例,运行
16、所测程序,使得程序中每个判断的取真分支和取假分支至少经历一次。条件覆盖就是设计若干个测试用例,运行所测程序,使得程序中每个判断的每个条件的可能取值至少执行一次。,2018/4/16,53,逻辑覆盖各种方法定义,判定-条件覆盖就是设计足够的测试用例,使得判断中每个条件的所有可能取值至少执行一次,同时每个判断的所有可能判断结果也至少执行一次。条件组合覆盖就是设计足够的测试用例,运行所测程序,使得每个判断的所有可能的条件取值组合至少执行一次。,2018/4/16,54,基本路径法,定义:基本路径测试法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方
17、法。基本路径法也叫独立路径法。,2018/4/16,55,流图符号,2018/4/16,56,流程图转为流图,2018/4/16,57,基本路径,经过分析后,基本路径集合为:路径1:1-11路径2:1-2-3-4-5-10-1-11路径3:1-2-3-6-8-9-10-11路径4:1-2-3-6-7-9-10-1-11为了覆盖所有程序语句,必须设计至少4 个测试用例使程序运行于这4 条路径。,2018/4/16,58,其它白盒测试用例设计方法,等价类划分边界值分析。,59,测试用例设计,下面我们学习自动化测试用例的设计自动化测试时用例的选择数据的参数化,2018/4/16,60,自动化测试时用
18、例的选择,并不是所有的用例都会进行自动化测试;选择用例来进行自动化测试时,需要考虑的因素有:项目类型操作类型测试工具易实现性可维护性流程稳定性。,2018/4/16,61,测试脚本的参数化,在实现自动化测试过程中,需要提交了数据。这些操作都被记录到了脚本中。当多次运行脚本时, 就会提交相同的记录, 这样不符合实际的运行情况, 而且有可能引起冲突。为了更加真实的模拟实际环境, 需要各种各样的输入。脚本的参数化输入是一种不错的方法。,2018/4/16,62,脚本的参数化,脚本的数据参数化就是在脚本中将静态值更换为值变量,以使脚本在执行过程中,自动输入不同数据的方法。(实现方法视工具而不同)数据参
19、数化的好处: 可以使脚本的长度变短。可以使用不同的数值来测试你的脚本。可以将设计的用例放置在数据源中一次执行完成。数据参数化包含以下两项任务: 在脚本中用参数取代常量值。设置参数的属性以及数据源。,63,课程回顾,如何设计好测试用例设计测试用例的思路黑盒测试用例的设计白盒测试用例的设计自动化测试用例的设计,2018/4/16,64,对测试的误解,有时间就多测试一些,来不及就少测试一些。软件测试是测试人员的事,与开发人员无关。设计实现测试,软件测试是开发后期的一个阶段。,2018/4/16,65,测试格言,不要改变程序,使测试更容易(除非这个修改是永久的)。每个测试用例的一个必需的部分是对预期输出的描述。避免不可重复的或无用的测试。既要写有效输入条件的测试用例,也要写无效输入条件的测试用例。,2018/4/16,66,Question?,THANKYOU,