您好,欢迎访问三七文档
计算机科学与工程学院《软件测试》实验报告专业班级08双特01实验地点J503学生学号0705060314指导教师胡宏银学生姓名罗玲实验时间2011-11-29实验项目实验三单元测试及测试工具使用实验类别操作性()验证性()设计性(√)综合性(√)其它()实验目的及要求实验目的:1、掌握单元测试技术,并按单元测试的要求设计测试用例。2、掌握一种单元测试工具的使用。实验要求:1、根据题目要求编写测试用例。2、根据测试用例编写测试程序进行测试,并记录结果。3、选择合适测试工具进行单元测试。4、撰写实验报告。成绩评定表类别评分标准分值得分合计上机表现积极出勤、遵守纪律主动完成实验设计任务30分程序代码比较规范、基本正确功能达到实验要求30分实验报告及时递交、填写规范内容完整、体现收获40分说明:评阅教师:日期:2011年月日实验内容一、实验原理单元测试是软件开发过程中进行的最低级别的测试活动,其目的是要检测程序模块中有无障碍存在。也就是说,一开始不是把程序作为一个整体来测试,而是首先集中注意力来测试程序中较小的结构块,以便发现并纠正模块内部的故障。单元测试又称为模块测试。模块并没有严格的定义,按照一般的理解,模块应具有一些基本属性,如名字、明确规定的功能、内部使用的数据、与其他模块或外界的数据联系,实现其特定功能的算法,模块可被其上层模块调用,也可调用其下属模块进行协同工作等。二、实验内容题目一:针对三角形问题进行单元测试三角形问题:接受三个正整数a、b、c作为输入,用做三角形的边。三边必须满足条件:0a、b、c≤1000;程序的输出是由这三条边确定的三角形类型:等边三角形、等腰三角形、不等边三角形或非三角形。要求:1、编写测试用例。2、根据测试用例编写测试程序进行测试,并记录结果。3、选择合适测试工具进行单元测试。三、实验步骤1、根据功能测试技术设计测试用例,主要考虑边界测试、等价类(弱一般、强一般、弱健壮性、强健壮性)和基于决策表等技术。1)边界值测试:对于一个n变量的程序,边界值分析测试会产生4n+1个测试用例。健壮性边界值测试将产生6n+1个测试用例.健壮性测试最有意义的部分不是输人,而是预期的输出,观察例外情况如何处理。假定三角形的三条边为a,b,c.输入变量a,b,c.在下列范围内取值:1≤a≤1000,1≤b≤1000,1≤c≤1000边界值分析利用输入变量的最小值(min),稍大于最小值(min+),域内任意值(nom),稍小于最大值(max-),最大值(max)来设计测试用例。即通过使所有变量取正常值,只使一个变量分别去最小值,略高于最小值、略低于最大值和最大值。健壮性测试是边界值分析的一种扩展。变量除了取min,min+,nom,max-,max五个边界值外,还要考虑采用一个略超过最大值(max+)以及一个略小于最小值(min-)的取值,看看超过极限值时系统会出现什么情况。边界值分析测试用例测试用例abc预期输出Test1Test2Test3Test4Test5Test6Test7Test860060060050060050060050060060060050070050060050012600999800100001001等腰三角形等腰三角形等边三角形等腰三角形非等边三角形非三角形边长不能为0边长不能超过1000Test9Test10Test11Test12Test13Test14Test1560060050060050060050012999700100001001600600500800500600500等腰三角形等腰三角形等腰三角形非等边三角形非三角形边长不能为0边长不能超过1000Test16Test17Test18Test19Test20129997001000600600500600500600600500800500等腰三角形等腰三角形等腰三角形非等边三角形非三角形2)等价类测试:(1)根据功能性测试技术设计测试用例,主要考虑等价类划分测试技术。•使用等价类划分方法必须仔细分析和推敲题目所给出的要求。本题的输人条件要求的关键之处有:–1)整数;–2)三个数;–3)非零数;–4)正数;•输出条件要求的关键之处有:–5)应满足两边长之和大于第三边边长;–6)等腰;–7)等边;•其中,3)、4)和5)并没有在题目上明显给出,但这些条件是必要的。列出等价类表(表中号码为等价类编号)表1-1三角形问题等价类划分有效等价类号码无效等价类号码输入条件输入三个整数整数1一边为非整数a为非整数12b为非整数13c为非整数14两边为非整数a,b为非整数15b,c为非整数16a,c为非整数17三边均为非整数18三个数2只给一边只给a19只给b20只给c21只给两边只给a,b22只给b,c23只给a,c24给出三个以上25非零数3一边为零a为026b为027c为028二边为零a,b为029a,c为030b,c为031三边a,b,c均为032正数4一边0a033b034c035二边0a0且b036a0且c037b0且c038三边均0;a0且b0且039输出条件构成一般三角形a+bc5a+bc40a+b=c41b+ca6b+ca42b+c=a43a+cb7a+cb44a+c=b45构成等要三角形两边之和大于第三边a=b8b=c9a=c10构成等边三角形a=b=c11(2)根据所学知识确定优化策略(原则:用最少的用例检测出更多的缺陷、软件测试的充分性与冗余性考虑),设计两套测试用例集。列出覆盖步骤1中的等价类划分的测试用例表1-2三角形问题测试用表abc覆盖等价类号码3004005001—74004005001—7,84005005001—7,95004005001—7,104004004001—7,11(3)根据设计的两套测试用例集进行测试。表1-3Test1测试用例的测试结果测试用例IDTest1目的测试程序能否识别一般三角形前提输入三个不等的正整数,且两边之和大于第三边输入a=300;b=400;c=500预期结果输出“三角形是一般三角形”测试结果输出“三角形是一般三角形”测试日期2011-11-15备注无表1-4Test2测试用例的测试结果测试用例IDTest2目的测试程序能否识别等腰三角形前提输入三个不等的正整数,且两边之和大于第三边输入a=400;b=400;c=500预期结果输出“三角形是等腰三角形”测试结果输出“三角形是等腰三角形”测试日期2011-11-28备注无3)决策表测试:决策表通常由条件桩、条件项、动作桩和动作项4部分组成。条件桩:列出了问题的所有条件。通常认为列出的条件的次序无关紧要。动作桩:列出了问题规定可能采取的操作。这些操作的排列顺序没有约束。条件项:列出针对它左列条件的取值。在所有可能情况下的真假值。动作项:列出在条件项的各种取值情况下应该采取的动作。规则:任何一个条件组合的特定取值及其相应要执行的操作称为规则。将具有相同动作,并且其条件项之间存在着极为相似关系的两条或多条规则合并为一条规则构造决策表可采用以下5个步骤:(1)列出所有的条件桩和动作桩。(2)确定规则的个数。(3)填入条件项。(4)填入动作项,得到初始决策表。(5)简化决策表,合并相似规则决策表的化简对于n个条件的决策表,相应有2n个规则(每个条件分别取真、假值),当n较大时,决策表很繁琐。实际使用决策表时,常常先将它简化。决策表的简化是以合并相似规则为目标。即若表中有两条以上规则具有相同的动作,并且在条件项之间存在极为相似的关系,便可以合并。列出条件桩C1:ab+c?C2:ba+c?C3:Ca+b?C4:a=b?C5:a=c?C6:b=c?列出动作桩A1:非三角形A2:不等边三角形A3:等腰三角形A4:等边三角形决策表12345678条件C1:ab+c?FTTTTTTTC2:ba+c?—FTTTTTTC3:ca+b?—FFTTTTTC4:a==b?———TTFFFC5:a==c?———TFTFFC6:b==c?———TFFTF动作A1:非三角形XXXA2:不等边三角形XA3:等腰三角形XXXA4:等边三角形X决策表测试用例测试用例abc预期输出Test1400100200非三角形Test2100400200非三角形Test3100200400非三角形Test4500500500等边三角形Test5200200300等腰三角形Test6200300200等腰三角形Test7300200200等腰三角形Test8300400500不等边三角形2、根据结构性测试技术设计测试用例,主要考虑路径测试、数据流等测试技术。路径测试:2、根据结构性测试技术设计测试用例,主要考虑路径测试、数据流等测试技术。(1)路径测试:首先根据题目旨意画出程序流程图,如下图1-1所示:图1-1三角形问题程序流程图其次根据题目旨意画出控制流程图,如下图1-2所示:不能构成三角形此三角形为不等边三角形输入三条边:A,B,CA=0||B=0||C=0||A+BC||A+CB||B+CAA==B&&A==C&&B==C此三角形为等边三角形A==B||A==C||B==C此三角形为等腰三角形三角形的周长为:A+B+CTFTFTF图4-4三角形问题控制流程图环形复杂度V(G)=边数-节点数+2即环形复杂度V(G)=8-6+2=4路径覆盖的测试用例测试用例A,B,C执行路径测试用例1-1,200,200e0e6e7e9测试用例2200,200,200e0e1e5e8e9测试用例3200,200,300e0e1e2e4e8e9测试用例4500,300,400e0e1e2e3e8e9(2)数据流测试:控制流测试是面向程序的结构,控制流图和测试覆盖准则一旦给定,即可产生测试用例,至于程序中每个程序是如何实现的它不关心。与控制流的测试思想不同,数据流测试是面向程序中的变量。如图1-3所示:e0e1e2e3e4e5e6e7e8e9图1-2数据流信息的控制流图数据流的测试用例测试用例A,B,C预期结果测试用例1-1,200,200非三角形测试用例2200,200,200等边三角形测试用例3200,200,300等腰三角形测试用例4500,300,400不等边三角形3、用Junit(Java程序)或Cunit(C程序)进行单元测试。C程序代码如下:voidmain(){inta,b,c;cout请输入三角形的三条边a,b,c;cinabc;if(a=0||b=0||c=0||a+b=c||a+c=b||b+c=a)cout无法构成三角形;elseif(a==b&&a==c&&b==c)定义:a,b,c判定是否构成三角形判定是否构成不等边三角形输出三角形类型使用:a,b,c判定是否构成等腰三角形使用:a,b,c使用:a,b,c使用:a,b,c使用:a,b,c使用:a,b,c使用:a,b,ccout构成等边三角形;elseif(a==b||a==c||b==c)cout构成等腰三角形;elsecout构成不等边三角形;}实验总结从这次实验中,我学习到了许多知识,单元测试对象一般对应详细设计中所描述的基本单元。结构化编程语言,如C,单元测试对象是函数或者子过程。面向对象语言,如C++,单元测试对象是类或者类的方法。单元测试环境中的基本单元本身不是一个独立的程序,自己不能运行,要靠其它部分来调用和驱动,必须为每个基本单元开发驱动模块或桩模块。通过这次实验,我学会测试用例的编写,相信自己通过不断的努力,会对单元测试有更深的认识。
本文标题:单元测试
链接地址:https://www.777doc.com/doc-5841417 .html