新版Junit单元测试实验报告.docx 您所在的位置:网站首页 软件测试逻辑覆盖实验报告 新版Junit单元测试实验报告.docx

新版Junit单元测试实验报告.docx

2023-03-20 18:11| 来源: 网络整理| 查看: 265

新版Junit单元测试实验报告.docx

新版Junit单元测试实验报告.docx

文档编号:11072626上传时间:2023-02-24格式:DOCX页数:19大小:373.64KB

新版Junit单元测试实验报告

软件工程与计算Ⅰ

试验名称:

Junit单元测试

试验分组号:

实验人:

陈燕珠

班级:

H13软件工程

学号:

_

试验指导老师:

陈国明

试验场地:

花都校区试验楼709

试验时间:

、6、9

成绩:

试验四Junit单元测试

一、试验目

1.掌握白盒测试方法,并按单元测试要求设计测试用例。

2.能熟练应用junit测试工具进行单元测试。

3.进行代码覆盖检验。

二、试验要求

掌握系统测试基础原理,按试验内容及步骤完成操作,完成试验汇报,全部试验步骤均由每位学生独立完成,严禁剽窃她人试验结果。

依据白盒法设计测试用例,并撰写单元测试计划书。

依据每个测试用例,编写基础Junit单元测试脚本。

生成html格式代码覆盖测试汇报。

三、试验环境

主流PC机一套,windows操作系统eclipse开发平台。

四、原理知识

1.测试基础方法

黑盒测试和白盒测试

(1)黑盒测试(Black_Boxtesting)

黑盒测试把程序看作一个不能打开黑盒子,在完全不考虑程序内部结构和内部特征情况下、重视于测试软件功效性要求,测试者在程序接口处进行测试,只检验程序功效是否根据规格说明书要求正常使用,程序是否能接收输入数据而产生正确输出信息,而且保持数据库和文件完整性

黑盒测试通常能发觉以下几类错误:

1、功效不对或遗漏

2、界面错误

3、数据结构或外部数据库访问错误

4、性能错误

5、初始化和终止错误

采取黑盒技术设计测试用例方法

1、等价类划分

2、边值分析法

3、因果图

4、猜错

5、测试

图1:

白盒测试

(2)白盒测试(White_Boxtesting)

盒测试关键用于检验程序内部结构、逻辑、循环和路径。

常见白盒测试用例设计方法有代码检验法、静态结构分析法、静态质量度量法、逻辑覆盖法、基础路径测试法、符号测试法等。

其中最关键方法就是逻辑覆盖法。

1、语句覆盖

2、判定覆盖

3、条件覆盖

4、条件判定覆盖

5、多条件覆盖

图2:

黑盒测试

手工测试和自动化测试

(1)手工测试

手工测试有其不可替换地方,因为人含有很强判定能力,而工具没有,所以手工测试不可替换性表现在以下多个方面:

①测试用例设计:

测试人员经验和对错误判定能力是工具不可替换;

②界面和用户体验测试:

人类审美观和心理体验是工具不可模拟;

③正确性检验:

大家对是非判定、逻辑推理能力是工具不含有。

(2)自动化测试

自动化测试是把人为驱动测试行为转化为机器实施一个过程

自动化测试技术关键有:

录制/回放、脚本技术、数据驱动、关键字驱动、业务驱动等

常见自动化测试工含有:

负载压力测试工具、功效测试工具、白盒/黑盒测试工具、测试管理工具、测试辅助工具、GUI接口自动化测试工具。

系统测试

系统测试是指将经过集成测试软件系统或子系统,作为基于计算机系统一个元素,与计算机硬件、外设、一些支持软件、数据和人员等其它系统元素组合在一起所进行测试工作,目在于经过与系统需求定义(系统方案说明书、需求说明书等)作比较,发觉软件与系统需求定义不符合或矛盾地方。

1、功效测试(FunctionalTesting)

2、性能测试(PerformanceTesting)

3、负载测试(LoadTesting)

4、强度测试(StressTesting)

5、容量测试(VolumeTesting)

6、安全性测试(SecurityTesting)

7、用户界面测试(UITesting)

8、有效性测试(ValidityTesting)

9、配置测试(ConfigurationTesting)

10、故障恢复测试(RecoveryTesting)

11、安装测试(InstallabilityTesting)

12、可靠性测试(ReliablityTesting)

2.编写测试用例:

采取条件覆盖法设计用例,使判定中每个条件可能取值

测试用例设计步骤:

1、测试需求分析

2、业务步骤分析

3、测试用例设计

4、测试用例评审

5、测试用例更新完善

测试用例ID

abc

测试用例名称

abcTest

测试目

过程是否正确

前置条件

前午夜符合什么条件,后午夜

操作步骤与输入

输入startHour,endHour,startMinute,endMinute

预期结果

程序还没开始运行,自己手工计算结果为13.6

实际结果

一样输入条件比较预期结果与运行结果,判定试验正确性

实施人

陈燕珠

日期

-6-13

实施人

陈燕珠

表1:

测试用例

3.测试计划:

(1)编写源代码,并经过JunitTestCase生成测试代码,并编写测试用例代码。

(2)经过不一样测试用例,分别对源代码进行结构化测试。

(3)生成测试代码覆盖率,并对数据进行分析。

五.试验内容

1、用java语言编写上述章节案例

2、设计白盒测试用例,达成分支覆盖

3、依据以上设计测试用例,编写junit测试代码,并进行测试。

4、完成测试代码覆盖分析,并生成html格式代码覆盖测试汇报。

测试用例ID

abc

测试用例名称

abcTest

测试目

过程是否正确

前置条件

前午夜符合什么条件,后午夜

操作步骤与输入

输入startHour,endHour,startMinute,endMinute

预期结果

程序还没开始运行,自己手工计算结果为13.6

实际结果

一样输入条件比较预期结果与运行结果,判定试验正确性

实施人

陈燕珠

日期

-6-13

实施人

陈燕珠

试验源代码:

abc.java

importjava.util.Scanner;

interfacewage{

publicdoublemoney();

}

classabcd{

staticintstartHour;

staticintstartMinute;

staticintendHour;

staticintendMinute;

doubletotalprice;

publicstaticintinputStartHour()

{intaaa=0;

System.out.println("pleaseinputstarthour18-23");

Scannerbbb=newScanner(System.in);

Stringstr=bbb.nextLine();

try{

if(str.matches("[1][8-9]|[2][0-3]"))

{

System.out.println("correct");

aaa=Integer.parseInt(str);

returnaaa;

}

elsethrownewException("Exception");

}

catch(Exceptionex)

{

System.out.println("pleaseinputagain");

inputStartHour();

}

returnaaa;

}//input

publicstaticintinputStartMinute()

{intaaa=0;

System.out.println("pleaseinputstartminute");

Scannerbbb=newScanner(System.in);

Stringstr=bbb.nextLine();

try{

if(str.matches("[0-5][0-9]|[0-9]"))

{

System.out.println("correct");

aaa=Integer.parseInt(str);

returnaaa;

}

elsethrownewException("Exception");

}

catch(Exceptionex)

{

System.out.println("pleaseinputagain");

inputStartMinute();

}

returnaaa;

}//input

publicstaticintinputEndHour()

{intaaa=0;

System.out.println("pleaseinputEndhour21-230-4");

Scannerbbb=newScanner(System.in);

Stringstr=bbb.nextLine();

try{

if(str.matches("[2][1-3]|[0-4]"))

{

System.out.println("correct");

aaa=Integer.parseInt(str);

returnaaa;

}

elsethrownewException("Exception");

}

catch(Exceptionex)

{

System.out.println("pleaseinputagain");

inputEndHour();

}

returnaaa;

}//input

publicstaticintinputEndMinute()

{intaaa=0;

System.out.println("pleaseinputendminute");

Scannerbbb=newScanner(System.in);

Stringstr=bbb.nextLine();

try{

if(str.matches("[0-5][0-9]|[0-9]"))

{

System.out.println("correct");

aaa=Integer.parseInt(str);

returnaaa;

}

elsethrownewException("Exception");

}

catch(Exceptionex)

{

System.out.println("pleaseinputagain");

inputEndMinute();

}

returnaaa;

}//input

}

classtotalbeforeextendsabcdimplementswage{

publicdoublemoney(){

totalprice=(endHour-startHour)*3.4+(endMinute-startMinute)/60*3.4;

returntotalprice;

}

}

classtotalaferextendsabcdimplementswage{

publicdoublemoney(){

totalprice=(24-startHour-1)*3.4+(60-startMinute)/60*3.4+endHour*3.9+endMinute/60*3.9;

returntotalprice;

}

}

publicclassabc{

publicstaticvoidmain(Stringargs[]){

abcd.startHour=abcd.inputStartHour();

abcd.endHour=abcd.inputEndHour();

abcd.startMinute=abcd.inputStartMinute();

abcd.endMinute=abcd.inputEndMinute();

if(abcd.endHour0){

totalaferaa=newtotalafer();

aa.startHour=abcd.startHour;

aa.startMinute=abcd.startMinute;

aa.endHour=abcd.endHour;

aa.endMinute=abcd.endMinute;

System.out.println("moneyis"+aa.money());

}

elseif(abcd.endHour>=21&&abcd.endHour

totalbeforeaa=newtotalbefore();

aa.startHour=abcd.startHour;

aa.startMinute=abcd.startMinute;

aa.endHour=abcd.endHour;

aa.endMinute=abcd.endMinute;

System.out.println("moneyis"+aa.money());

}

}

}

abcTest.java

importjunit.framework.TestCase;

importjunit.framework.Assert;

publicclassabcTestextendsTestCase{

//@Test

publicvoidtesttotalprice(){

doubleactual;

doubleexpecteds=3.4;

try{

abcppp=newabc();

ppp.main(null);

totalbeforep=newtotalbefore();

//totalpricepp=newtotalprice();

abcd.startHour=abcd.inputStartHour();

abcd.endHour=abcd.inputEndHour();

abcd.startMinute=abcd.inputStartMinute();

abcd.endMinute=abcd.inputEndMinute();

//pp.WelcomeScreen.addCommand(pp.Into);

//pp.WelcomeScreen.setCommandListener(pp);

//pp.display.setCurrent(pp.WelcomeScreen);

//pp.newWelcomeThread().start();

p.startHour=22;

p.startMinute=0;

p.endHour=23;

p.endMinute=0;

actual=p.money();

Assert.assertEquals(expecteds,actual,0.0f);

}catch(Exceptione){

e.printStackTrace();

}

}

}

六.试验结果及结论

运行程序,其覆盖情况以下:

 

图3:

测试代码覆盖分析

图4:

测试用例编写

图5:

导出覆盖率汇报

 

 

图6:

自动生成Html覆盖率分析汇报

 

结论:

当运行测试用例程序abcTest.java来测试用例abc.java时,输入对应输入startHour,endHour,startMinute,endMinute,就会输出对应计算结果。

若是用CoverageAs运行,则能够看到程

序abc覆盖结果和覆盖率。

将其覆盖结果导出为网页模式则能够在生成index.html网页中查看各个程序及函数运行结果及覆盖率。

 

七.总结(存在问题及处理措施、心得体会等)

此次试验是一个有趣而且实用试验。

程序运行过后,运行到代码和没有运行到代码都用鲜艳颜色覆盖了,鲜明想我们展示了程序代码运行情况。

经过此次试验,我对程序利用率有了更深刻了解。

知道了原来运行一个程序,当输入不一样数据,程序就会运行不一样程序块。

而对应,也会有部分程序块是没有运行到,一个程序中有很多地代码没有使用到。

这让我知道,以后我们写程序就要尽可能写些有用代码,尽可能地让程序运行覆盖率更高,让程序运行愈加快。

 

八.老师对学生试验情况评价:

☐不能掌握试验内容☐能基础掌握试验内容

☐能很好掌握试验内容☐能熟练掌握试验内容

 

老师签字:

年6月13日



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有