单元测试实践实验报告

合集下载

实验03.基本路径测试法和单元测试工具JUnit的使用

实验03.基本路径测试法和单元测试工具JUnit的使用

实验报告
实验序号:03 实验项目名称:白盒测试工具JUnit的使用
学号122
姓名专业、班
实验地点实1-511 指导教师实验时间2013/4/18
一、实验目的
●掌握在Eclipse环境下JUnit单元测试工具的安装和使用方法;
●针对一个实际问题,在JUnit环境下设计并执行测试用例。

二、实验要求
●开发环境:Eclipse v3.7及以上版本;JUnit v4.10及以上版本;文本编辑软件。

●硬件要求:CPU PIV 以上,256M 内存,1G 硬盘空间。

●系统要求:Windows98/Me/XP/NT/2000,IE 5 以上。

三、实验内容与步骤
先将junit软件放入Eclipse安装目录下的plugins文件中,然后开始实验:
1、新建Java project命名...:
2、添加junit单元测试软件:
3、a、新建待测试类SaleMachine.java
b、新建Junit Test Case测试类SaleMachineTest.java:
C、对operation进行测试:d、
4、运行测试类(只测试一个用例),可以正确通过:
5、修改测试代码(添加新的测试用例),可以正确通过运行:
6、修改测试代码(添加第3个测试用例),运行出现错误:
7、查看错误提示:
8、根据错误修改代码:a、
b、
运行,任提示出错:
根据错误继续修改:a:
b:
运行,任提示出错:
继续修改错误:
a、
b、
9、修改完,运行测试代码,可以通过:。

常用工具类体验实验报告

常用工具类体验实验报告

常用工具类体验实验报告
一、背景介绍
常用工具类(CommonUtils)是一套实用的通用工具类,可以提高开发效率,减少重复代码,让开发更加高效。

常用工具类提供了一系列的工具类方法,涵盖了Java基础开发、快速查询、字符串处理、日期操作、数字操作、文件处理等多个方面。

二、测试目的
本次实验旨在评估常用工具类的实用性和性能。

三、测试环境
1. 操作系统:Windows 10
2. 运行环境:Java版本:1.8.0
3. 测试工具:Junit
四、测试方法
本次测试采用了Junit测试框架,根据常用工具类的各个功能进行了单元测试。

对每一个功能模块,均编写了多个测试用例,比较测试结果,验证常用工具类的可靠性和正确性,以及它的性能性。

五、测试结果
本次测试结果如下表所示:
| 测试模块 | 测试结果 |
| --------- | -------- |
| Java基础开发 | 通过 |
| 快速查询 | 通过 |
| 字符串处理 | 通过 |
| 日期操作 | 通过 |
| 数字操作 | 通过 |
| 文件处理 | 通过 |
从上表的测试结果可以看出,常用工具类的各个功能均经过了测试,测试结果均为通过,说明常用工具类功能可靠、性能优良。

六、结论
本次实验主要评估了常用工具类的实用性和性能。

经过单元测试,测试结果表明常用工具类可靠、性能优良,能够有效提高开发效率,缩减开发时间,是一套非常实用的工具类。

单元测试实验

单元测试实验
printf( "对函数ScholarshipLeve展开单元测试\n" );
while( !feof(pFpFrom) ){//不断读取每个测试用例的数据
fscanf( pFpFrom, "%d ", &TCID ); //读入测试用例的ID
fscanf( pFpFrom, "%lf ", &originalAmount ); //读入测试用例的输入
if( fabs(actualOutcome-expectedOutcome) < 1e-6 )//若测试用例通过,则记录通过的用例总数
{
tcPassNum ++;
printf( "通过\n" );
//将测试用例的执行结果存入结果文件
fprintf( pFpTo, "测试用例%d: Pass\n", TCID );
level = 1; //一等奖学金
else if( degree < 0 || degree>100){ //否则,赋予一个负数,表示无效
return -1.0;
}
return level; //返回判断后的奖学金等级
}







代码修改前测试结果:
修改后测试结果:


指导老师:
pFpTo = fopen( DataFileTestResultName, "w+t" );
if( !pFpTo )
{
printf( "打开文件失败,返回\n" );
return;

(完整版)软件测试技术试验报告--JUnit的基本应用

(完整版)软件测试技术试验报告--JUnit的基本应用

《软件测试技术》实验报告实验序号:3实验项目名称:单元测试工具JUnit的基本应用学号实验地址姓名指导教师专业、班实验时间一、实验目的及要求掌握在 Eclipse 环境下 JUnit 单元测试工具的安装和使用方法;针对一个实质问题,在 JUnit 环境下设计并履行测试用例。

二、实验要求开发环境: Eclipse v3.7 及以上版本; JUnit v4.10 及以上版本;文本编写软件。

硬件要求: CPU PIV 以上, 256M 内存, 1G 硬盘空间。

系统要求: Windows98/Me/XP/NT/2000 , IE 5 以上。

三、实验内容与步骤1.下载并安装 JDK2.下载并安装 Eclipse3.下载并安装 JUnit4.通读自动售货机程序,并在 Eclipse 环境下运转该程序5.在 JUnit 环境下履行以下表格中的测试用例,并填写完成该表格。

编输入值输入值状态预期输出实质情号Type money况001Beer5C各资Input Information源剩Type: Beer; Money: 5 Cents; Change: 0余Current StateBeer: 5Orange Juice: 65 Cents: 71 Dollar: 6002OrangeJuice5C各资Input Information源剩Type: OrangeJuice; Money: 5 Cents; Change: 0余Current StateBeer: 6Orange Juice: 55 Cents: 71 Dollar: 6003 Beer1D没有Failure Information啤酒Beer Shortage5.提交测试用例程序和该程序运转结果最后画面。

6.总结本次试验,并撰写实验报告。

四、实验结果与数据办理编输入值输入值状态号Type money001Beer5C各资源剩余002OrangeJuice 5C各资源剩余003 Beer1D没有啤酒预期输出Input InformationType: Beer; Money: 5 Cents; Change: 0Current StateBeer: 5Orange Juice: 65 Cents: 71 Dollar: 6Input InformationType: OrangeJuice; Money: 5 Cents; Change: 0Current StateBeer: 6Orange Juice: 55 Cents: 71 Dollar: 6Failure InformationBeer Shortage实质情况与预期值一致与预期值一致与预期值有偏差实验环境变量配置。

junit测试实验报告

junit测试实验报告

junit测试实验报告
《Junit测试实验报告》
在软件开发过程中,测试是非常重要的一环。

而Junit作为一个广泛应用的Java 单元测试框架,可以帮助开发人员快速、方便地进行测试。

本文将通过一个实验报告,介绍Junit测试的基本原理和使用方法。

实验目的:
1. 了解Junit测试框架的基本原理和使用方法
2. 掌握Junit测试的常用注解和断言方法
3. 通过实际示例,展示Junit测试的实际应用
实验内容:
本次实验将以一个简单的Java类为例,演示如何使用Junit进行单元测试。

该Java类包含一个简单的方法,用于计算两个整数的和。

实验步骤:
1. 导入Junit测试框架
2. 创建一个测试类,并在该类中编写测试方法
3. 使用Junit的注解和断言方法,对目标方法进行测试
4. 运行测试,并查看测试结果
实验结果:
经过测试,目标方法运行正常,测试结果符合预期。

实验总结:
通过本次实验,我们了解了Junit测试框架的基本原理和使用方法。

Junit提供了丰富的注解和断言方法,可以帮助开发人员编写简洁、高效的测试代码。


过Junit测试,可以有效地提高软件质量,减少bug的产生。

在实际开发中,我们应该充分利用Junit测试框架,编写完善的测试用例,保证软件的稳定性和可靠性。

同时,我们也应该不断学习和探索,掌握更多的测试技巧和方法,为软件开发贡献自己的力量。

总之,Junit测试是软件开发过程中不可或缺的一部分,希望通过本次实验,能够对Junit测试有更深入的了解,为我们的软件开发工作带来更大的帮助。

三角形单元测试实验报告

三角形单元测试实验报告

三⾓形单元测试实验报告单元测试实验报告⼀、实验内容1、系统地学习和理解单元测试的基本概念、原理,掌握单元测试的基本技术和⽅法;2、对三⾓形问题采⽤开发测试驱动程序进⾏单元测试,并给出测试结果;3、完成实验并认真填写实验报告。

⼆、问题描述输⼊三个整数a、b、c,分别作为三⾓形的三条边,通过程序判断这三条边是否能构成三⾓形?如果能构成三⾓形,则判断三⾓形的类型(等边三⾓形、等腰三⾓形、⼀般三⾓形)。

要求输⼊三个整数a、b、c,必须满⾜以下条件:1≤a≤200;1≤b≤200;1≤c≤200。

请采⽤静态⽩盒测试⽅法和动态⽩盒测试⽅法设计测试⽤例。

请采⽤驱动程序开发进⾏单元测试。

三、被测程序原代码#includeint main(){int a;int b;int c;printf("请输三⾓形边长:");scanf("%d", &a);printf("\n");printf("请输三⾓形边长:");scanf("%d", &b);printf("\n");printf("请输三⾓形边长:");scanf("%d", &c);printf("\n");if (a + b <= c || a + c <= b || b + c <= a)printf("不是三⾓形!\n");else{if (a == c || a == b || b == c) {if (a == c && a == b){printf("等边三⾓形!\n"); }printf("等腰三⾓形!\n"); }elseprintf("三⾓形!\n");}return 0;}四、测试⽤例设计⿊盒测试的边界值加等价类五、驱动程序源代码#include#includeint Triangle(int a,int b,int c){if (a + b <= c || a + c <= b || b + c <= a) return 0;else{if (a == c || a == b || b == c)if (a == c && a == b){return 3;}elsereturn 2;}elsereturn 1;}}void testTriangle(){printf("这是Triangle的测试\n");int PassNum=0;//测试通过的数量int FailNum=0;//测试没有通过的数量FILE* pFpFrom=NULL;//数据⽂件的指针,储存测试⽤例的基本信息FILE* pFpTo=NULL;//记录测试⽤例执⾏结果的⽂件的指针char* DataFileName="Data.txt";//打开测试⽂件,准备读取测试⽤例pFpFrom=fopen(DataFileName,"r");if(!pFpFrom){printf("读取数据失败,返回\n");return;}char* DataFileTestResultName="testTriangle.txt";//打开数据⽂件pFpTo=fopen(DataFileTestResultName,"w+t");if(!pFpTo){printf("打开⽂件失败,返回\n");return;}fprintf(pFpTo,"-------对函数Triangle的单元测试结果------\n");int TCID=0;int a,b,c;int expectedOutcome;int actualOutcome;//边的输⼊,预期输出,实际输出char* ex;char* ac;printf("对函数展开单元测试\n");while(!feof(pFpFrom)){//不断读取测试⽤例Idfscanf(pFpFrom,"%d",&TCID);//读⼊测试⽤例的IDfscanf(pFpFrom,"%d",&a);//读⼊测试⽤例的边afscanf(pFpFrom,"%d",&b);//读⼊测试⽤例的边bfscanf(pFpFrom,"%d",&c);//读⼊测试⽤例的边cfscanf(pFpFrom,"%d",&expectedOutcome);//读⼊测试⽤例的预期输出actualOutcome=Triangle(a,b,c);//执⾏测试⽤例if(expectedOutcome==3){ex="等边三⾓形";}else if(expectedOutcome==2){ex="等腰三⾓形";}else if(expectedOutcome==1){ex="⼀般三⾓形";}else if(expectedOutcome==0){ex="不是三⾓形";}if(actualOutcome==3){ac="等边三⾓形";}else if(actualOutcome==2){ac="等腰三⾓形";}else if(actualOutcome==1){ac="⼀般三⾓形";}else if(actualOutcome==0){ac="不是三⾓形";}printf("测试⽤例%d:边a:%d,边b:%d,边c:%d;预期输出%s,实际输出%s",TCID,a,b,c,ex,ac);if(actualOutcome==expectedOutcome){PassNum++;printf("通过\n");fprintf(pFpTo,"测试⽤例%d:Pass\n",TCID);}else{FailNum++;printf("失败\n");fprintf(pFpTo,"测试⽤例%d:Fail\n",TCID);}}fclose(pFpFrom);//关闭测试⽤例数据⽂件printf("共执⾏%d个测试⽤例,其中%d个通过,%d个失败\n",PassNum+FailNum,PassNum,FailNum);fprintf(pFpTo,"共执⾏%d个测试⽤例,其中%d个通过,%d 个失败\n",PassNum+FailNum,PassNum,FailNum); fclose(pFpTo);}void main(){testTriangle();}(注:测试数据可以是以⽂本的⽅式也可以是数据库的⽅式,⾄少执⾏20条测试⽤例)六、驱动程序测试结果(注:测试结果可以是以⽂本的⽅式输出,也可以是控制台输出。

软件工程实验报告

软件工程实验报告

软件工程实验报告一、实验目的本实验的目的是通过实践的方式,加深理解和掌握软件工程的相关知识和技能。

通过进行软件开发的过程,掌握软件需求分析、设计、编码、测试等各个阶段的方法和技巧,同时培养团队合作和项目管理的能力。

二、实验内容本次实验采用了软件开发生命周期的经典模型——瀑布模型,按照以下步骤进行:1.需求分析:对待开发软件的需求进行分析和理解,并编写需求文档。

2.设计:根据需求文档,进行系统设计和详细设计,细化各个模块的功能和接口。

3.编码:根据设计文档,进行具体的编码工作,并编写代码文档。

4.测试:对编码后的软件进行测试,包括单元测试和集成测试。

5.上线部署:完成测试后,将软件部署到实际运行环境中。

三、实验过程1. 需求分析在需求分析阶段,我们与项目发起人进行深入沟通,了解并整理好软件的功能需求、性能需求、界面需求等。

最终形成了一份详细的需求文档,明确了软件的功能和目标。

2. 设计基于需求文档,我们进行了系统设计和详细设计的工作。

系统设计阶段主要是确定系统的整体架构和模块划分。

详细设计阶段则关注模块的具体实现方式和接口定义。

在设计过程中,我们充分考虑了系统的可扩展性、可维护性和安全性。

3. 编码根据设计文档,我们开始进行编码工作。

我们采用了面向对象的编程思想,使用合适的编程语言实现系统的各个模块。

在编码过程中,我们遵循了一些编码规范,保证了代码的可读性和可维护性。

4. 测试在编码完成后,我们进行了系统的测试工作。

我们首先进行了单元测试,对每个模块进行了单独的测试。

接着进行了集成测试,验证系统各个模块的协作和集成。

通过测试,我们发现并修复了一些潜在的问题,确保了系统的质量。

5. 上线部署在完成测试后,我们将软件部署到实际运行环境中,进行了一些必要的配置和优化工作。

同时,我们还进行了一些性能测试,确保软件能够在实际使用中达到预期的性能要求。

最终,我们成功地将软件部署并投入使用。

四、实验总结通过本次实验,我们深入学习和应用了软件工程的相关知识和技能。

单元测试实验报告

单元测试实验报告

单元测试实验报告
《单元测试实验报告》
在软件开发中,单元测试是非常重要的一环。

它是一种对软件中最小的可测试
单元进行检查和验证的过程,以确保每个单元都能够按照预期的方式正常工作。

在本次实验中,我们将对一个简单的计算器程序进行单元测试,以验证其功能
是否符合预期。

首先,我们对计算器程序中的加法功能进行了单元测试。

我们编写了一系列测
试用例,包括正整数相加、负整数相加、小数相加等情况。

通过单元测试,我
们发现加法功能在所有测试用例下都能够正确计算结果,符合预期。

接着,我们对计算器程序中的减法功能进行了单元测试。

同样,我们编写了一
系列测试用例,包括正整数相减、负整数相减、小数相减等情况。

通过单元测试,我们发现减法功能在所有测试用例下也都能够正确计算结果,符合预期。

除了基本的加法和减法功能外,我们还对计算器程序中的乘法和除法功能进行
了单元测试。

通过一系列测试用例的验证,我们发现乘法和除法功能在所有情
况下都能够正确计算结果,符合预期。

通过本次实验,我们深刻认识到了单元测试的重要性。

它可以帮助我们及时发
现和解决程序中的bug,确保软件的质量和稳定性。

我们将继续在软件开发中
积极推行单元测试,以确保我们的程序能够高效、稳定地运行。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
days=31;break;/*处理“大”月*/
case 4: case 6: case 9: case 11:
days=30;break;/*处理“小”月*/
case 2: if(year%4==0&&year%100!=0 && year%400==0)
days=29;/*处理闰年平月*/
else
(8)
实际输出
当输入年份<0时就应该是错误的年份
是否通过
未通过
用例编号
CS012
输入
10000000000 8
预期输出
Input error!
覆盖等价类
(9)
实际输出
从输出结果可以发现int数字已经溢出,但它输出了结果,应该输出错误提示
是否通过
未通过
用例编号
CS013
输入
2013 0
预期输出
Input error!
覆盖等价类
(15)
实际输出
是否通过
通过
用例编号
CS014
输入
2013 14
预期输出
Input error!
覆盖等价类
(16)
实际输出
是否通过
通过
四.结果分析与体会
经过上面的测试后,该测试用例的语句覆盖率和分支条件覆盖率为100%,基本考虑了所有该题目的输入情况。
根据单老师课程所讲述的内容并结合课件,完美对题目2进行了单元测试,更好的掌握了静态测试、动态测试方法,其中包括黑盒测试的等价划分、边界值设定,白盒测试的覆盖所有路径、分支条件,都更深刻的进行了学习与理解。
《软件测试技术》
单元测试实践实验报告
诚信声明
本人郑重承诺:本实验报告是本人独立工作所获得的成果。尽我所知,实验报告中除特别标注的地方外,不包含其他人已经发表或撰写过的成果。实验报告中对报告工作的任何帮助者所做的贡献均做了明确的说明并表达了谢意。
如有抄袭,本人愿意承担因此而造成的任何后果。
特此声明。
签名:Eastmount日期:2013-6-9
预期输出
2000,2 is 29 days
覆盖等价类
(1)、(5)、(14)
实际输出
是否通过
通过
用例编号
CS010
输入
2000 2
预期输出
2000,2 is 29 days
覆盖等价类
(1)、(5)、(14)
实际输出
是否通过
通过
用例编号
CS011
输入
-2000 7
预期输出
Input error!
覆盖等价类
覆盖等价类
(3)
实际输出
一直等待再输入一个数字
是否通过
未通过
用例编号
CS004
输入
2002 11 10
预期输出
Input error!
覆盖等价类
(4)
实际输出
应该只能输入2个数字,输入3个它也按两个数处理,显然不能通过
是否通过
未通过
用例编号
CS005
输入Leabharlann 2000 10预期输出2000,10 is 31 days
1990,12 is 31 days
(1)、(7)、(13)
CS008
1800 2
1800,2 is 28 days
(1)、(7)、(14)
CS009
2008 2
2008, 2 is 29 days
(1)、(6)、(14)
CS010
2000 2
2000,2 is 29 days
(1)、(5)、(14)
由于该程序要求输入的是year和month两个数据,并且都是int类型,再结合生活实际中年份和月份的知识,我对输入数据的特点进行一下总结:
(1).输入的数据类型应该为int型,并且输入的是两个数字;
(2).输入的年份范围应该大于0,小于int型的最大可表达范围;
(3).输入的月份实际生活中只有12个月,因此应该为1-12间的数字;
出现的问题:
同时,在实验中也遇到了一些问题,其中主要的问题如下:
1.在对年份进行等价划分时,它只要求输入的为int型数字,没有具体的输入年份要求,但根据生活中的经验,是否该把小于0的年份和大于int型最大值的年份划分至无效等价类?这是一个很困扰我的问题。
2.它给定的题目是想测试输入year和month判断月份的天数,但是在判断闰年的公式中,它给出的是“year%4==0&&year%100!=0&&year%400==0”,而正确的应该为“(year%4==0&&year%100!=0)||(year%400==0)”,是否应该把它修正在进行测试?因为在判断测试用例是否通过时,依据上面不同的式子,通过的结果是不同的。
1.语法错误
(1).主函数mian()缺少类型说明,应该添加int或void类型;
(2).程序缺少返回值,如果定义的int型,添加“return 0;”返回值,如果是void型,添加“return;”返回空值;
(3).注意“;”的使用,它应该是英文的“;”,而代码中都是使用的中文的分号,这是一个编码方式错误的语法错误;
覆盖等价类
(1)、(5)、(11)
实际输出
是否通过
通过
用例编号
CS006
输入
1996 1
预期输出
1996,1 is 31 days
覆盖等价类
(1)、(6)、(12)
实际输出
是否通过
通过
用例编号
CS007
输入
1990 12
预期输出
1990,12 is 31 days
覆盖等价类
(1)、(7)、(13)
实际输出
2.然后采用动态黑盒测试的等价划分、边界值分析、错误猜解法等方法,并结合动态白盒测试的逻辑覆盖,对每条语句及分支条件都进行覆盖测试,同时测试过程中跟踪执行每一条语句,对程序进行比较完整动态测试;
3.分析统计测试的结果,并完成实验报告。
二.静态测试
我采用的是VS 2012进行单元测试,源程序如下所示:
《软件测试方法和技术》清华大学出版社主编:朱少民
唯爱心旅的博客“软件测试-等价划分“
致谢:
感谢参考资料中的帮助者
感谢老师的授课与教学
感谢自己的付出与收获
2.算法错误
判断闰年时的计算公式:“year%4==0&&year%100!=0&&year%400==0”是错误的算法,它应该是该年“(year%4==0&&year%100!=0)||(year%400==0)”时为闰年,2月为29天(下面的测试用例及测试都是修改后的算法进行的);
3.代码规范格式优化
(1).按照正规的、更有效、美观的编码方式,定义变量时应该每个变量单独定义一行,这样更加方便阅读和使用,如下:
int year;
int month;
int days;
(2).在使用switch语句时,如果分支结果case中有多个语句时,最好使用括号包括相应的语句代码,如下图所示:
default:
{
printf("Input error!\n");/*月份错误*/
是否通过
通过
用例编号
CS008
输入
1800 2
预期输出
1800,2 is 28 days
覆盖等价类
(1)、(7)、(14)
实际输出
是否通过
通过
用例编号
CS009
输入
2008 2
预期输出
2008, 2 is 29 days
覆盖等价类
(1)、(6)、(14)
实际输出
是否通过
通过
用例编号
CS010
输入
2000 2
days=28;/*处理不是闰年平月*/
break;
default: printf("Input error!\n");/*月份错误*/
days=0;
}
if( days!=0 )
printf("%d, %d is %d days\n", year, month, days);
}
经过代码走读,静态分析源程序,我发现该程序具有以下错误:
#include <stdio.h>
main( )
{ int year, month, days;
printf("Enter year and month:");
scanf("%d%d", &year, &month);
switch (month)
{ case 1: case 3: case 5: case 7: case 8: case 10: case 12:
(4).由于要判断每月多少天,所以月份还要划分为4、6、9、11月30天,1、3、5、7、8、10、12月31天,2月特殊判断;
(5).同理,年数year也要划分为闰年和非闰年;
(6).同时注意测试月份1、12边界值。
2.列出等价类和边界值表
输入条件
有效等价类
无效等价类
年、月类型及个数
(1).输入2个int型数字
任务:第2题
实验内容与完成情况:
一.实验思想
单元测试实践中我测试题目是第2题“输入年份year和月month,求该月有多少天”的任务。由于它是一个C语言程序,而且没有子函数,能直接计算其结果,所以直接把该程序看做一个测试单元,并采用如下实验步骤进行测试:
1.首先对源程序进行不执行的代码走读,静态分析源程序代码(静态白盒测试方法),分析检查源程序的语法、结构、算法等的正确性,并对错误进行修正;
相关文档
最新文档