软件测试的方法黑盒测试边界值分析法等价类划分法错误推测法白盒测试逻辑覆盖法边界值分析法例如:输入值的范围是-1.0至1.0,则可选-1.0、1.0、-1.001和1.001等例子。例如;一个输入文件可以有1~255个记录,则分别设计有0个、1个、255个和256个记录的输入文件。例如一个情报检索系统根据用户打入的命令显示有关文献的摘要,但是最多只提供4篇摘要,则可设计一些例子:使得程序分别产生0篇、1篇或4篇摘要,并设计一个有可能使程序错误地显示5篇摘要的例子。等价类划分法等价类划分是把程序的输入域划分为若干子集,然后从每个子集中选取少数具有代表性的数据用作测试用例,所选取的输入数据对于揭露程序中的错误都是等效的。分类有效等价类•有意义的、合理的输入数据所构成的集合无效等价类•无意义的、不合理的输入数据构成的集合等价类划分法原则(1)如果输入条件规定了取值范围或个数,则可确定一个有效等价类和两个无效等价类。例:输入值是选课人数,在0到100之间有效等价类:“0≤学生人数≤100”无效等价类:“学生人数0”和“学生人数100”等价类划分法原则(2)如果输入条件规定了输入值的集合或是规定了“必须如何”的条件,则可确定一个有效等价类和一个无效等价类。例:输入值是日期类型的数据有效等价类:日期类型的数据无效等价类:非日期类型的数据等价类划分法原则(3)如果输入条件是布尔表达式,则可以分为一个有效等价类和一个无效等价类。例:要求密码非空有效等价类:非空密码无效等价类:空密码。等价类划分法原则(4)如果输入条件是一组值,且程序对不同的值有不同的处理方式,则每个允许的输入值对应一个有效等价类,所有不允许的输入值的集合为一个无效等价类。例:输入条件“职称”的值是初级、中级或高级有效等价类:初级,中级,高级3个无效等价类:其他任何职称等价类划分法原则(5)如果规定了输入数据必须遵循的规则,则可以划分出一个有效的等价类(符合规则)和若干个无效的等价类(从不同的角度违反规则)。设计测试用例的步骤(1)对每个输入和外部条件进行等价类划分,画出等价类表,并为每个等价类进行编号。(2)设计一个测试用例,使其尽可能多地覆盖有效等价类,重复这一步,直到所有的有效等价类被覆盖。(3)为每一个无效等价类设计一个测试用例。等价类划分法示例输入三个变量(年、月、日),函数返回输入日期后面一天的日期:1≤月份≤12,1≤日期≤31,1812≤年≤2012。给出等价类划分表并设计测试用例。等价类划分法示例(1)划分等价类,得到等价类划分表输入及外部条件有效等价类等价类编号无效等价类等价类编号日期的类型数字字符1非数字字符8年在1812与2012之间2小于18129大于201210月在1与12之间3小于111大于1212非闰年的2月日在1与28之间4日小于113日大于2814闰年的2月日在1与29之间5日小于115日大于2916月份为1月、3月、5月、7月、8月、10月、12月日在1与31之间6日小于117日大于3118月份为4月、6月、9月、11月日在1与30之间7日小于119日大于30201≤月份≤12,1≤日期≤31,1812≤年≤2012等价类划分法示例(2)为有效等价类设计测试用例序号输入数据预期输出覆盖范围(等价类编号)年月日年月日1200331520033161,2,3,62200421320042141,2,3,531999231999241,2,3,44197092919709301,2,3,7等价类划分法示例(3)为无效的等价类设计测试用例序号输入数据预期结果覆盖范围(等价类编号)年月日1xy59输入无效82170048输入无效932300111输入无效1042005011输入无效11520091425输入无效12619892-1输入无效1371977230输入无效14820002-2输入无效1592008234输入无效16101956100输入无效17111974878输入无效181220079-3输入无效191318661235输入无效20错误推测法所谓错误推测法就是指软件测试人员根据自身的经验和直觉选择一些测试数据对可能会出现错误和容易发生错误的地方进行测试。例1:报表日期设某公司要打印2001~2005年的报表,其中报表日期为6位数字组成,其中,前4位为年份,后两位为月份。第一步:划分等价类输入及外部条件有效等价类无效等价类报表日期的类型及长度6位数字字符①有非数字字符④少于6个数字字符⑤多于6个数字字符⑥年份范围在2001~2005之间②小于2001⑦大于2005⑧月份范围在1~12之间③小于1⑨大于12⑩第二步:为有效等价类设计测试用例对表中编号为①②③的3个有效等价类用一个测试用例覆盖:测试数据期望结果覆盖范围200105输入有效等价类①②③第三步:为每一个无效等价类至少设计一个测试用例测试数据期望结果覆盖范围001MAY输入无效等价类④20015输入无效等价类⑤2001001输入无效等价类⑥20000输入无效等价类⑦20080输入无效等价类⑧200100输入无效等价类⑨200113输入无效等价类⑩本例的10个等价类至少需要8个测试用例不能出现相同的测试用例输入条件报表日期的类型及长度1个数字字符5个数字字符7个数字字符有1个非数字字符全部是非数字字符6个数字字符显示出错显示出错显示出错显示出错显示出错输入有效测试用例说明测试数据期望结果选取理由52001520010052001.5MAY---200105仅有1个合法字符比有效长度少1比有效长度多1只有1个非法字符6个非法字符类型及长度均有效“报表日期”边界值分析法测试用例输入条件日期范围月份测试用例说明测试数据期望结果选取理由月份为1月月份为12月月份1月份12200101200112200100200113200101200512200100200513输入有效输入有效显示出错显示出错输入有效输入有效显示出错显示出错在有效范围边界上选取数据最小日期最大日期刚好小于最小日期刚好大于最大日期最小月份最大月份刚好小于最小月份刚好大于最大月份范围“报表日期”边界值分析法测试用例对招干考试系统“输入学生成绩”子模块设计测试用例招干考试分三个专业,准考证号第一位为专业代号,如:1-行政专业,2-法律专业,3-财经专业.行政专业准考证号码为:110001~111215法律专业准考证号码为:210001~212006财经专业准考证号码为:310001~314015例2:准考证号码请写出有效等价类和无效等价类例:准考证号码的等价类划分有效等价类:(1)110001~111215(2)210001~212006(3)310001~314015无效等价类:(4)-~110000(5)111216~210000(6)212007~310000(7)314016~+例3电话号码城市的电话号码由两部分组成。这两部分的名称和内容分别是:地区码:以0开头的三位或者四位数字(包括0)电话号码:以非0、非1开头的七位或者八位数字假定被调试的程序能接受一切符合上述规定的电话号码,拒绝所有不符合规定的号码,就可用等价分类法来设计它的调试用例。划分等价类并编号输入数据有效等价类无效等价类地区码1.以0开头的3位数串2.以0开头的4位数串3.以0开头的含有非数字字符的串4.以0开头的小于3位的数串5.以0开头的大于4位的数串6.以非0开头的数串电话号码7.以非0、非1开头的7位数串8.以非0、非1开头的8位数串9.以0开头的数串10.以1开头的数串11.以非0、非1开头的含有非法字符7或者8位数串12.以非0、非1开头的小于7位数串13.以非0、非1开头的大于8位数串为有效等价类设计测试用例测试数据期望结果覆盖范围01023145678显示有效输入(1)、(8)0232234567显示有效输入(1)、(7)08513456789显示有效输入(2)、(7)085123145678显示有效输入(2)、(8)为每一个无效等价类至少设计一个测试用例测试数据期望结果覆盖范围0a3423456789显示无效输入(3)0523456789显示无效输入(4)0123423456789显示无效输入(5)234123456789显示无效输入(6)02801234567显示无效输入(9)02812345678显示无效输入(10)028qw123456显示无效输入(11)028623456显示无效输入(12)028886234569显示无效输入(13)错误推测法错误推测法综合策略比较合理的策略是:1)在任何情况下都需使用边缘值分析(这个方法应包括对输入和输出的边缘值进行分析)。2)必要的话,再用等价分类法补充一些测试用例。3)再用错误推测法附加测试用例。4)检查上述例子的逻辑覆盖程度,如果未能满足某些覆盖标准,则再增加足够的测试用例。5)如果功能说明中含有输入条件的组合情况,则一开始就可先用因果图法。经典题目:三角形测试用例根据下面给出的规格说明,利用等价类划分的方法,给出足够的测试用例。“一个程序读入3个整数,把这三个数值看作一个三角形的3条边的长度值。这个程序要打印出信息,说明这个三角形是不等边的、是等腰的、还是等边的。”经典题目:三角形测试用例我们可以设三角形的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)(17)(A≠B)and(B≠C)and(C≠A)(16)(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数错误推测法法:1)输入3个零2)输入3个负数36因果图因果图是从用自然语言书写的程序规格说明的描述中找到因(输入条件)和果(输出或程序状态的改变),通过因果图转化为判别表。37因果图的基本逻辑符号38因果图的约束符号①E约束(异):a和b中至多有一个可能为1,即a和b不能同时为1。②I约束(或):a、b和c中至少有一个必须是1,即a、b和c不能同时为0。③O约束(唯一);a和b必须有一个,且仅