软件测试用例的几种设计方法
白盒测试也称结构测试或逻辑驱动测试,它是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作。
这一方法是把测试对象看作一个打开的盒子,测试人员依据程序内部逻辑结构相关信息,设计或选择测试用例,对程序所有逻辑路径进行测试,通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。
采用什么方法对软件进行测试呢?常用的软件测试方法有两大类:静态测试方法和动态测试方法。
其中软件的静态测试不要求在计算机上实际执行所测程序,主要以一些人工的模拟技术对软件进行分析和测试;而软件的动态测试是通过输入一组预先按照一定的测试准则构造的实例数据来动态运行程序,而达到发现程序错误的过程。
白盒测试的测试方法有代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、域测试、符号测试、Z路径覆盖、程序变异。
白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。
其中逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。
六种覆盖标准:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖发现错误的能力呈由弱至强的变化。
语句覆盖每条语句至少执行一次。
判定覆盖每个判定的每个分支至少执行一次。
条件覆盖每个判定的每个条件应取到各种可能的值。
判定/条件覆盖同时满足判定覆盖条件覆盖。
条件组合覆盖每个判定中各条件的每一种组合至少出现一次。
路径覆盖使程序中每一条可能的路径至少执行一次。
"白盒"法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。
"白盒"法是穷举路径测试。
在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。
贯穿程序的独立路径数是天文数字。
但即使每条路径都测试了仍然可能有错误。
第一,穷举路径测试决不能查出程序违反了设计规范,即程序本身是个错误的程序。
第二,穷举路径测试不可能查出程序中因遗漏路径而出错。
第三,穷举路径测试可能发现不了一些与数据相关的错误。
如何挑选白盒测试工具 白盒测试目前主要用在具有高可靠性要求的软件领域,例如:军工软件、航天航空软件、工业控制软件等等。
白盒测试工具在选购时应当主要是对开发语言的支持、代码覆盖的深度、嵌入式软件的测试、测试的可视化等。
对开发语言的支持:白盒测试工具是对源代码进行的测试,测试的主要内容包括词法分析与语法分析、静态错误分析、动态检测等。
但是对于不同的开发语言,测试工具实现的方式和内容差别是较大的。
目前测试工具主要支持的开发语言包括:标准C、C++、Visual C++、Java、Visual J++等。
代码的覆盖深度:从覆盖源程序语句的详尽程度分析,逻辑覆盖标准包括以下不同的覆盖标准:语句覆盖、判定覆盖、条件覆盖、条件判定组合覆盖、多条件覆盖和修正判定条件覆盖。
·语句覆盖 为了暴露程序中的错误,程序中的每条语句至少应该执行一次。
因此语句覆盖(Statement Coverage)的含义是:选择足够多的测试数据,使被测程序中每条语句至少执行一次。
语句覆盖是很弱的逻辑覆盖。
·判定覆盖 比语句覆盖稍强的覆盖标准是判定覆盖(Decision Coverage)。
判定覆盖的含义是:设计足够的测试用例,使得程序中的每个判定至少都获得一次“真值”或“假值”,或者说使得程序中的每一个取“真”分支和取“假”分支至少经历一次,因此判定覆盖又称为分支覆盖。
·条件覆盖 在设计程序中,一个判定语句是由多个条件组合而成的复合判定。
为了更彻底地实现逻辑覆盖,可以采用条件覆盖(Condition Coverage)的标准。
条件覆盖的含义是:构造一组测试用例,使得每一判定语句中每个逻辑条件的可能值至少满足一次。
·多条件覆盖 多条件覆盖也称条件组合覆盖,它的含义是:设计足够的测试用例,使得每个判定中条件的各种可能组合都至少出现一次。
显然满足多条件覆盖的测试用例是一定满足判定覆盖、条件覆盖和条件判定组合覆盖的。
·修正条件判定覆盖 修正条件判定覆盖是由欧美的航空/航天制造厂商和使用单位联合制定的“航空运输和装备系统软件认证标准”,目前在国外的国防、航空航天领域应用广泛。
这个覆盖度量需要足够的测试用例来确定各个条件能够影响到包含的判定的结果。
它要求满足两个条件:首先,每一个程序模块的入口和出口点都要考虑至少要被调用一次,每个程序的判定到所有可能的结果值要至少转换一次;其次,程序的判定被分解为通过逻辑操作符(and、or)连接的布尔条件,每个条件对于判定的结果值是独立的。
不同的测试工具对于代码的覆盖能力也是不同的,通常能够支持修正条件判定覆盖的测试工具价格是极其昂贵的。
嵌入式软件的测试:对于嵌入式软件的测试,我们还需要一方面进一步考虑测试工具对于嵌入式操作系统的支持能力,例如DOS、Vxworks、Neculeus、Linux和Windows CE等;另一方面还需要考虑测试工具对于硬件平台的支持能力,包括是...
软件测试分为白盒测试和黑盒测试,等价类划分法属于什么测试?
等价类划分法是一种典型的、重要的黑盒测试方法,它将程序所有可能的输入数据(有效的和无效的)划分成若干个等价类。
然后从每个部分中选取具有代表性的数据当做测试用例进行合理的分类,测试用例由有效等价类和无效等价类的代表组成,从而保证测试用例具有完整性和代表性。
利用这一方法设计测试用例可以不考虑程序的内部结构,以需求规格说明书为依据,选择适当的典型子集,认真分析和推敲说明书的各项需求,特别是功能需求,尽可能多地发现错误。
等价类划分法是一种系统性的确定要输入的测试条件的方法。
由于等价类是在需求规格说明书的基础上进行划分的,并且等价类划分不仅可以用来确定测试用例中的数据的输入输出的精确取值范围,也可以用来准备中间值、状态和与时间相关的数据以及接口参数等,所以等价类可以用在系统测试、集成测试和组件测试中,在有明确的条件和限制的情况下,利用等价类划分技术可以设计出完备的测试用例。
这种方法可以减少设计一些不必要的测试用例,因为这种测试用例一般使用相同的等价类数据,从而使测试对象得到同样的反映行为。
对于等价类我们从以下几个方面讨论它的划分方法。
有效等价类划分 有效等价类指对于程序规格说明来说,是合理的、有意义的输入数据构成的集合。
利用有效等价类可以检验程序是否实现了规格说明预先规定的功能和性能。
有效等价类可以是一个,也可以是多个,根据系统的输入域划分若干部分,然后从每个部分中选取少数有代表性数据当做数据测试的测试用例,等价类是输入域的集合。
以下是对有效等价类数据集的一些例子。
终端用户输入的命令 与最终用户交互的系统提示 接受相关的用户文件的名称 提供初始化值和边界等 提供格式化输出数据的命令 在图形模式(比如鼠标点击时)提供的数据 失败时显示的回应消息无效等价类划分 无效等价类和有效等价类相反,无效等价类是指对于软件规格说明而言,没有意义的、不合理的输入数据集合。
利用无效等价类,可以找出程序异常说明情况,检查程序的功能和性能的实现是否有不符合规格说明要求的地方。
以下是无效等价类数据集的一些例子。
在一个不正确的地方提供适当的值。
验证边界值 验证外部边界的值 用户输入的命令 最终用户与系统交互的提示 验证与边界和外部边界值的数值数据等价类划分的方法有 按区间划分。
按数值划分。
按数值集合划分。
按限制条件或规划划分。
按处理方式划分。
等价类划分的原则如下: 在输入条件规定的取值范围或值的个数的情况下,可以确定一个有效等价类和两个无效等价类。
在规定了输入数据的一组值中(假定有n个值),并且程序要对每个输入值分别处理的情况下,可以确定n个有效等价类和一个无效等价类。
在规定输入数据必须遵守的规则的情况下,可以确定一个有效等价类和若干个无效等价类。
在输入条件规定了输入值的集合或规定了“必须如何”的条件下,可以确定一个有效等价类和一个无效等价类。
在确定已划分的等价类中各元素在程序处理中的方式不同的情况下,则应将该等价类进一步地划分为更小的等价类。
等价类表的建立 等价类表的建立如表3-1所示。
表3-1是等价类表的基础,可依据表3-1确定测试用例。
测试用例可按下列步骤来确定: 表3-1 等价类表 1)在分析需求规格说明的基础上划分等价类,列出等价类表,为每一个等价类规定一个唯一的编号。
2)将程序可能的输入数据分成若干个子集,从每个子集中选取一个有代表性的数据作为测试用例。
等价类是某个输入域的子集,在该子集中的每个输入数据的作用都是等效的。
3)设计新的测试用例,使其尽可能多地覆盖未覆盖的有效等价类,按照这一步骤重复进行,直到所有的有效等价类都被覆盖为止。
4)设计新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,按照这一步骤重复进行,直到所有的无效等价类都被覆盖为止。
等价类表与测试用例的关系 等价类表与测试用例的关系如表3-2所示。
表3-2等价类表与测试用例的关系表
采用“正交试验法”试验时一般要注意什么?
进行正交试验要注意:①用专业知识分析诸因素,找出并确定主要因素;②各因素的试验水 平次数一致;③试验排定后,必须严格按照排定的试验方案进行试验,不得变动;④选择“正交 试验表”时,表中列数应等于或大于所确定的因数数,正交表序号必须等于需试验的因素的水 平数。
正交试验方法
正交实验设计 当析因设计要求的实验次数太多时,一个非常自然的想法就是从析因设计的水平组合中,选择一部分有代表性水平组合进行试验。
因此就出现了分式析因设计(fractional factorial designs),但是对于试验设计知识较少的实际工作者来说,选择适当的分式析因设计还是比较困难的。
正交试验设计(Orthogonal experimental design)是研究多因素多水平的又一种设计方法,它是根据正交性从全面试验中挑选出部分有代表性的点进行试验,这些有代表性的点具备了“均匀分散,齐整可比”的特点,正交试验设计是分式析因设计的主要方法。
是一种高效率、快速、经济的实验设计方法。
日本著名的统计学家田口玄一将正交试验选择的水平组合列成表格,称为正交表。
例如作一个三因素三水平的实验,按全面实验要求,须进行33=27种组合的实验,且尚未考虑每一组合的重复数。
若按L9(3)3正交表按排实验,只需作9次,按L18(3)7正交表进行18次实验,显然大大减少了工作量。
因而正交实验设计在很多领域的研究中已经得到广泛应用。
1.正交表 正交表是一整套规则的设计表格,用 。
L为正交表的代号,n为试验的次数,t为水平数,c为列数,也就是可能安排最多的因素个数。
例如L9(34), (表11),它表示需作9次实验,最多可观察4个因素,每个因素均为3水平。
一个正交表中也可以各列的水平数不相等,我们称它为混合型正交表,如L8(4*24) (表12),此表的5列中,有1列为4水平,4列为2水平。
根据正交表的数据结构看出,正交表是一个n行c列的表,其中第j列由数码1,2,… Sj 组成,这些数码均各出现N/S 次,例如表11中,第二列的数码个数为3,S=3 ,即由1、2、3组成,各数码均出现 次。
正交表具有以下两项性质: (1)每一列中,不同的数字出现的次数相等。
例如在两水平正交表中,任何一列都有数码“1”与“2”,且任何一列中它们出现的次数是相等的;如在三水平正交表中,任何一列都有“1”、“2”、“3”,且在任一列的出现数均相等。
(2)任意两列中数字的排列方式齐全而且均衡。
例如在两水平正交表中,任何两列(同一横行内)有序对子共有4种:(1,1)、(1,2)、(2,1)、(2,2)。
每种对数出现次数相等。
在三水平情况下,任何两列(同一横行内)有序对共有9种,1.1、1.2、1.3、2.1、2.2、2.3、3.1、3.2、3.3,且每对出现数也均相等。
以上两点充分的体现了正交表的两大优越性,即“均匀分散性,整齐可比”。
通俗的说,每个因素的每个水平与另一个因素各水平各碰一次,这就是正交性。
2. 交互作用表 每一张正交表后都附有相应的交互作用表,它是专门用来安排交互作用试验。
表14就是L8(27)表的交互作用表。
安排交互作用的试验时,是将两个因素的交互作用当作一个新的因素,占用一列,为交互作用列,从表14中可查出L8(27)正交表中的任何两列的交互作用列。
表中带( )的为主因素的列号,它与另一主因素的交互列为第一个列号从左向右,第二个列号顺次由下向上,二者相交的号为二者的交互作用列。
例如将A因素排为第(1)列,B因素排为第(2)列,两数字相交为3,则第3列为A*B交互作用列。
又如可以看到第4列与第6列的交互列是第2列,等等。
3.正交实验的表头设计 表头设计是正交设计的关键,它承担着将各因素及交互作用合理安排到正交表的各列中的重要任务,因此一个表头设计就是一个设计方案。
表头设计的主要步骤如下: (1)确定列数 根据试验目的,选择处理因素与不可忽略的交互作用,明确其共有多少个数,如果对研究中的某些问题尚不太了解,列可多一些,但一般不宜过多。
当每个试验号无重复,只有1个试验数据时,可设2个或多个空白列,作为计算误差项之用。
(2)确定各因素的水平数 根据研究目的,一般二水平(有、无)可作因素筛选用;也可适用于试验次数少、分批进行的研究。
三水平可观察变化趋势,选择最佳搭配;多水平能以一次满足试验要求。
(3)选定正交表 根据确定的列数?与水平数(t)选择相应的正交表。
例如观察5个因素8个一级交互作用,留两个空白列,且每个因素取2水平,则适宜选L16(215)表。
由于同水平的正交表有多个,如L8(27)、L12(211)、L16(215),一般只要表中列数比考虑需要观察的个数稍多一点即可,这样省工省时。
(4)表头安排 应优先考虑交互作用不可忽略的处理因素,按照不可混杂的原则,将它们及交互作用首先在表头排妥,而后再将剩余各因素任意安排在各列上。
例如某项目考察4个因素A、B、C、D及A*B交互作用,各因素均为2水平,现选取L8(27)表,由于AB两因素需要观察其交互作用,故将二者优先安排在第1、2列,根据交互作用表查得A*B应排在第3列,于是C排在第4列,由于A*C交互在第5列,B*C交互作用在第6列,虽然未考查A*C与B*C,为避免混杂之嫌,D就排在第7列。
(5)组织实施方案 根据选定正交表中各因素占有列的水平数列,构成实施方案表,按实验号依次进行,共作n次实验,每次实验按表中横行的各水平组合进行。
例如L9(34)表,若安排四个因素,第一次实验A、B、C、D四因...
如何用spss17.0软件处理正交试验数据
黑盒测试(Black-box Testing,又称为功能测试或数据驱动测试)是把测试对象看作一个黑盒子。
利用黑盒测试法进行动态测试时,需要测试软件产品的功能,不需测试软件产品的内部结构和处理过程。
采用黑盒技术设计测试用例的方法有:等价类划分、边界值分析、错误推测、因果图和综合策略。
黑盒测试注重于测试软件的功能性需求,也即黑盒测试使软件工程师派生出执行程序所有功能需求的输入条件。
黑盒测试并不是白盒测试的替代品,而是用于辅助白盒测试发现其他类型的错误。
黑盒测试试图发现以下类型的错误: 1)功能错误或遗漏; 2)界面错误; 3)数据结构或外部数据库访问错误; 4)性能错误; 5)初始化和终止错误。
一、黑盒测试的测试用例设计方法·等价类划分方法·边界值分析方法·错误推测方法·因果图方法·判定表驱动分析方法·正交实验设计方法·功能图分析方法等价类划分: 是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例.该方法是一种重要的,常用的黑盒测试用例设计方法. 1) 划分等价类: 等价类是指某个输入域的子集合.在该子集合中,各个输入数据对于揭露程序中的错误都是等效的.并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试.因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件,就可以用少量代表性的测试数据.取得较好的测试结果.等价类划分可有两种不同的情况:有效等价类和无效等价类. 有效等价类:是指对于程序的规格说明来说是合理的,有意义的输入数据构成的集合.利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能. 无效等价类:与有效等价类的定义恰巧相反. 设计测试用例时,要同时考虑这两种等价类.因为,软件不仅要能接收合理的数据,也要能经受意外的考验.这样的测试才能确保软件具有更高的可靠性. 2)划分等价类的方法:下面给出六条确定等价类的原则. ①在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类. ②在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可确立一个有效等价类和一个无效等价类. ③在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类. ④在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类. ⑤在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则). ⑥在确知已划分的等价类中各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步的划分为更小的等价类.3)设计测试用例:在确立了等价类后,可建立等价类表,列出所有划分出的等价类: 输入条件 有效等价类 无效等价类 ... ... ... ... ... ... 然后从划分出的等价类中按以下三个原则设计测试用例: ①为每一个等价类规定一个唯一的编号. ②设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖地有效等价类,重复这一步.直到所有的有效等价类都被覆盖为止. ③设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步.直到所有的无效等价类都被覆盖为止.边界值分析法 边界值分析方法是对等价类划分方法的补充.(1)边界值分析方法的考虑: 长期的测试工作经验告诉我们,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部.因此针对各种边界情况设计测试用例,可以查出更多的错误. 使用边界值分析方法设计测试用例,首先应确定边界情况.通常输入和输出等价类的边界,就是应着重测试的边界情况.应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据.(2)基于边界值分析方法选择测试用例的原则: 1)如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据. 2)如果输入条件规定了值的个数,则用最大个数,最小个数,比最小个数少一,比最大个数多一的数作为测试数据. 3)根据规格说明的每个输出条件,使用前面的原则1). 4)根据规格说明的每个输出条件,应用前面的原则2). 5)如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例. 6)如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例. 7)分析规格说明,找出其它可能的边界条件.错误推测法 错误推测法: 基于经验和直觉推测程序中所有可能存在的各种错误, 从而有针对性的设计测试用例的方法. 错误推测方法的基本思想: 列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例. 例如, 在单元测试时曾列出的许多在模块中常见的错误. 以前产品测试中曾经发现的错误等, 这些就是经验的总结. 还有, 输入数据和输出数据为0的情况. 输入表格为空格或输...
【系统架构和软件架构】正交软件架构方法
果你想要制作易于设计、构建、测试及扩展的系统,正交性是一个十分关键的概念,但是,正交性的概念很少被直接讲授,而常常是你学习的各种其他方法和技术的隐含特性。
这是一个错误。
一旦你学会了直接应用正交性原则,你将发现,你制作的系统的质量立刻就得到了提高。
什么是正交性 文本框: “正交性”是从几何学中借来的术语。
如果两条直线相交成直角,它们就是正交的,比如图中的坐标轴。
用向量术语说,这两条直线互不依赖。
沿着某一条直线移动,你投影到另一条直线上的位置不变。
在计算技术中,该术语用于表示某种不相依赖性或是解耦性。
如果两个或更多事物中的一个发生变化,不会影响其他事物,这些事物就是正交的。
在设计良好的系统中,数据库代码与用户界面是正交的:你可以改动界面,而不影响数据库;更换数据库,而不用改动界面。
在我们考察正交系统的好处之前,让我们先看一看非正交系统。
非正交系统 你正乘坐直升机游览科罗拉多大峡谷,驾驶员——他显然犯了一个错误,在吃鱼,他的午餐——突然呻吟起来,晕了过去。
幸运的是,他把你留在了离地面100英尺的地方。
你推断,升降杆控制总升力,所以轻轻将其压低可以让直升机平缓降向地面。
然而,当你这样做时,却发现生活并非那么简单。
直升机的鼻子向下,开始向左盘旋下降。
突然间你发现,你驾驶的这个系统,所有的控制输入都有次级效应。
压低左手的操作杆,你需要补偿性地向后移动右手柄,并踩右踏板。
但这些改变中的每一项都会再次影响所有其他的控制。
突然间,你在用一个让人难以置信的复杂系统玩杂耍,其中每一项改变都会影响所有其他的输入。
你的工作负担异常巨大:你的手脚在不停地移动,试图平衡所有交互影响的力量。
直升机的各个控制器断然不是正交的。
正交的好处 如直升机的例子所阐明的,非正交系统的改变与控制更复杂是其固有的性质。
当任何系统的各组件互相高度依赖时,就不再有局部修正(local fix)这样的事情。
提示13 Eliminate Effects Between Unrelated Things 消除无关事物之间的影响 我们想要设计自足(self-contained)的组件:独立,具有单一、良好定义的目的(Yourdon和Constantine称之为内聚(cohesion)[YC86])。
如果组件是相互隔离的,你就知道你能够改变其中之一,而不用担心其余组件。
只要你不改变组件的外部接口,你就可以放心:你不会造成波及整个系统的问题。
如果你编写正交的系统,你得到两个主要好处:提高生产率与降低风险。
提高生产率 l 改动得以局部化,所以开发时间和测试时间得以降低。
与编写单个的大块代码相比,编写多个相对较小的、自足的组件更为容易。
你可以设计、编写简单的组件,对其进行单元测试,然后把它们忘掉——当你增加新代码时,无须不断改动已有的代码。
l 正交的途径还能够促进复用。
如果组件具有明确而具体的、良好定义的责任,就可以用其最初的实现者未曾想象过的方式,把它们与新组件组合在一起。
l 如果你对正交的组件进行组合,生产率会有相当微妙的提高。
假定某个组件做M件事情,而另一个组件做N件事情。
如果它们是正交的,而你把它们组合在一起,结果就能做M x N件事情。
但是,如果这两个组件是非正交的,它们就会重叠,结果能做的事情就更少。
通过组合正交的组件,你的每一份努力都能得到更多的功能。
降低风险 正交的途径能降低任何开发中固有的风险。
l 有问题的代码区域被隔离开来。
如果某个模块有毛病,它不大可能把病症扩散到系统的其余部分。
要把它切掉,换成健康的新模块也更容易。
l 所得系统更健壮。
对特定区域做出小的改动与修正,你所导致的任何问题都将局限在该区域中。
l 正交系统很可能能得到更好的测试,因为设计测试、并针对其组件运行测试更容易。
l 你不会与特定的供应商、产品、或是平台紧绑在一起,因为与这些第三方组件的接口将被隔离在全部开发的较小部分中。
让我们看一看在工作中应用正交原则的几种方式。
项目团队 你是否注意到,有些项目团队很有效率,每个人都知道要做什么,并全力做出贡献,而另一些团队的成员却老是在争吵,而且好像无法避免互相妨碍? 这常常是一个正交性问题。
如果团队的组织有许多重叠,各个成员就会对责任感到困惑。
每一次改动都需要整个团队开一次会,因为他们中的任何一个人都可能受到影响。
怎样把团队划分为责任得到了良好定义的小组,并使重叠降至最低呢?没有简单的答案。
这部分地取决于项目本身,以及你对可能变动的区域的分析。
这还取决于你可以得到的人员。
我们的偏好是从使基础设施与应用分离开始。
每个主要的基础设施组件(数据库、通信接口、中间件层,等等)有自己的子团队。
如果应用功能的划分显而易见,那就照此划分。
然后我们考察我们现有的(或计划有的)人员,并对分组进行相应的调整。
你可以对项目团队的正交性进行非正式的衡量。
只要看一看,在讨论每个所需改动时需要涉及多少人。
人数越多,团队的正交性就越差。
显然,正交的团队效率也更高(尽管如此,我们也鼓励子团队不断地相互交流)。
希望能帮到你,麻烦点击 好评,...
如何设计一个完整的测试用例
测试用例的设计一般从分析需求设计说明书开始,了解开发人员设计这个项目的思路、设计的要求、实现的功能等(最好有use case,这样看起来更清晰)。
软件测试的W模型,就要求测试与开发同步,在开发设计需求设计说明书的时候就开始测试流程,一般情况下,讨论需求设计的时候需要测试主管或者组员的参与,了解这个项目设计的总体情况。
事实上,测试用例的编写一般是在需求设计说明书定下来之后才真正的开始的。
因为测试用例的内容要以需求设计说明书为依据,设计说明书上没体现的功能,不需要在测试用例中体现。
编写测试用例(这里指功能测试用例的编写),首先要做的就是设计测试用例的模板。
每个公司都有适合自己公司用例编写的模板,各有各的特点。
测试用例的格式包括,测试用例摘要、测试用例需求编号(一个需求设计说明书可以分好几个用例编写)、编写用例的日期、编写人员、编写日期、前置条件、准备数据等等。
格式没有固定的要求,可以根据自己测试用例设计的思路,对测试用例的格式作相应的改变。
下面以一个登陆窗口为例,说说我设计登陆界面的思路和方法。
我把这个测试用例分为三层结构,表单测试、逻辑判断、业务流程。
第一层,表单测试为最底层(最基础的)。
这部分的测试用例是对登陆窗口这个界面的输入框、按钮功能、界面等最基本功能的测试。
一般来说登陆用户名和登陆用户密码是输入框的形式体现,那么,我们需要的是针对这两个输入框进行功能的测试。
这时,我们只要考虑这个输入框的功能,而不需要考虑业务方面的内容。
这样,我们考虑就是这个输入框的长度限制是多少?能否输入特殊字符?能否输入全角字符?当然,登陆窗口还有其他按钮,例如登陆按钮、退出按钮、界面设计等,这一层的测试用例只对他们最简单的功能的测试。
我觉得这一层的测试用例对新开发项目很重要,也必须执行,因为这些是最基本的功能保证,当项目进入维护阶段后,如果没有修改就不需要执行这部分的测试了或者说把这层的用例优先级置为最低,时间不充足的情况就不用去执行。
第二层,逻辑判断层。
根据需求的设计,各功能之间的简单逻辑联系。
以登陆窗口为例,账号登录,账号和密码必须对应才能登录,否则登录失败。
根据这一点,我们就可以从这个要求设计这一层测试用例。
例如,账号和密码不一致时;账号为空时;密码为空时;账号密码对应时等等情况。
输入这些情况时,程序是作怎么样的逻辑控制的?控制是否正确?是否有相应的提示信息?我觉得,这一层的用例时最常规的一层,平时使用这个软件用经常碰到的一些情况,在常规测试或修改这部分的功能之后,这一部分的测试用例也必须执行。
第三层,业务流程层。
这部分不关心软件的本身的基本功能,而是关心这个软件的业务有没有实现,不同的需求就有不同的业务需求。
以登陆窗口为例,就可能有不同的需求,可能用户要求停用的账号能够登录系统(可能要求登录后不允许进行其他操作),也可能用户直接要求停用的用户账号不准登录系统。
根据不同的业务需求,就有不同的业务流程。
这样这层的测试用例,我们就只要考虑业务需求,仍然以登录窗口为例,我们就只要考虑删除的用户能否登录?停用的用户能否登录?超级用户是如何登录的?普通用户是何种方式登录的?简单的说,这层的用例只描述业务流程,不关心具体这个业务是怎么实现的,执行这部分用例时,不要考虑哪个输入框控制了多少长度,能否输入空格等其他功能,因为这部分的测试需要基于上面两层的测试用例都已经测试通过了,所以在项目维护阶段或者说时间很紧迫的阶段,我们只需要执行这部分的用例,保证业务能够通畅的完成。
其实个人觉得在执行这部分用例时,对包含了对基本功能的测试,一些明显的问题应该能被发现,虽然严格来说测试覆盖率很低,但是基本能达到要求。
这三层的组合起来才是一个完整的测试用例。
这是我个人对测试用例设计的一个思路和方法。
真正设计这个测试用例的时候,可能会使用到黑盒测试用例的方法,例如等价类划分、边界值分析、错误猜测法(主要是个人经验)、正交分解等方法针对具体情况设计测试用例。
分层测试用例的思路主要来自对自动测试实现的考虑。
因为我觉得,如果需要实现自动化测试就必须对测试用例进行细分,划分得越细就越有利于自动化的实现。
以上三层的划分也并不是很全面,需要在实践中不断完善,例如可以增加对数据库的部分功能的数据校验的分析。
总之,测试用例写的细致、全面、步骤清晰,那么无论是用手工测试的方法还是用自动化测试的方法实现,只要能完整的跑完整个测试用例,就达到了测试的目标了。
正交表测试用例设计方法的特点是什么?
是在功能测试时设计用例的一种方法,针对多个输入的组合,用尽量少的用例覆盖输入的两两组合。
使用此方法时,先根据功能说明找出输入(因子)和输入的取值(状态),得到因子状态表;然后把不重要的因子状态,得到因素分析表;再根据因子数和状态数选择一个合适的正交表,如果状态数不同的话,就选择状态数出现次数最多的;然后用因子状态去替换正交表中的节点 ;最终得到测试用例。
...