软件测试实验报告.docx

上传人:b****8 文档编号:10204130 上传时间:2023-02-09 格式:DOCX 页数:44 大小:508.62KB
下载 相关 举报
软件测试实验报告.docx_第1页
第1页 / 共44页
软件测试实验报告.docx_第2页
第2页 / 共44页
软件测试实验报告.docx_第3页
第3页 / 共44页
软件测试实验报告.docx_第4页
第4页 / 共44页
软件测试实验报告.docx_第5页
第5页 / 共44页
点击查看更多>>
下载资源
资源描述

软件测试实验报告.docx

《软件测试实验报告.docx》由会员分享,可在线阅读,更多相关《软件测试实验报告.docx(44页珍藏版)》请在冰豆网上搜索。

软件测试实验报告.docx

软件测试实验报告

实验报告

课程名称:

软件测试技术

指导教师:

毛红梅

班级:

160462

朱青16046233

朱振宇(16046234)

杜欣(16046235)

郭昂(16046236)

郑森及(16046237)

实验1(设计性)设计被测程序

实验目的

自行任选一门高级语言编写几个小模块。

以用于将来的各种测试工作。

实验内容

1)对预习报告中的编程代码进行上机调试,完成实验指导书中全部实验要求内容。

2)写出实验报告。

报告要求:

有实验目的,实验内容,实验步骤,调试完成的准确编程代码,实验小结。

实验步骤及结果

代码如下:

packageExperiment2;

importorg.junit.Test;

publicclassEx2{

publicstaticvoidmain(String[]args){

}

@Test

publicvoidcalculate(){

inta=2,

b=6;

System.out.println("a的值为:

"+a+"b的值为:

"+b);

System.out.println("a+b:

"+(a+b));

System.out.println("a-b:

"+(a-b));

System.out.println("a*b:

"+(a*b));

System.out.println("a/b:

"+(a/(float)b));

}

@Test

publicvoidmultipleUtility(){

int[]score=newint[]{20,56,89,400};

doubletemp=0;

System.out.println("成绩分布如下:

");

for(intx:

score){

System.out.print(x+"");

}

System.out.println();

//求平均值

for(inti=0;i

temp+=score[i];

temp/=score.length;

System.out.println("平均成绩为:

"+temp);

//求最大值

temp=0;

for(inti=0;i

if(score[i]>temp)

temp=score[i];

}

System.out.println("成绩最大值为:

"+temp);

//求最小值

temp=100;

for(inti=0;i

if(score[i]

temp=score[i];

}

System.out.println("成绩最小值为:

"+temp);

//求方差

doublesAve=0;//平均值

doublesVar=0;//方差

intm=score.length;

for(intx:

score){

sAve+=x;

}

sAve/=m;//求得平均值

for(intx:

score){

sVar+=(x-sAve)*(x-sAve);

}

sVar=sVar/m;

System.out.println("成绩的方差为:

"+sVar);

//求标准差

doublesStan=Math.sqrt(sVar);

System.out.println("成绩的标准差为:

"+sStan);

}

}

实验体会

朱青(16046233):

本次的实验是对Junit包的第一次实验,通过导入Junit可以实现对程序单个方法的测试,能够在不需要main方法的前提下单独调用一个方法,前提是在被调用方法上面加上@Test的注解,并且要进行测试的方法必须设置为publicvoid权限,且没有参数,否则会报错。

原因很简单,只有public方法虚拟机才可以在包外看见并调用,且并没有方法去调用它,所以无需返回值。

朱振宇(16046234):

本次试验以设计测试程序为目的,在设计过程中,应该注意设计出的程序能够进行合理的测试,并调试运行成功。

杜欣(16046235):

郭昂(16046236):

本次实验是写一小段代码以供以后实验课用于软件测试,相对来说比较简单

郑森及(16046237):

成功编写了几个小模块,对于程序编程理解更加深入

实验2(验证性)白盒测试(判定覆盖)

实验目的

1.选取一个模块,要求绘制出程序的控制流图。

2.采用判定覆盖方法设计测试用例。

执行测试用例,并分析测试结果。

实验内容

1)对预习报告中的编程代码进行上机调试,完成实验指导书中全部实验要求内容。

2)写出实验报告。

报告要求:

有实验目的,实验内容,实验步骤,调试完成的准确编程代码,实验小结,回答问题。

实验步骤及结果

代码如下:

Ex2.java

packageExperiment2;

importorg.junit.Test;

publicclassEx2{

publicstaticvoidmain(String[]args){

}

voidcalculate(inta,intb){

System.out.println("a的值为:

"+a+"b的值为:

"+b);

System.out.println("a+b:

"+(a+b));

System.out.println("a-b:

"+(a-b));

System.out.println("a*b:

"+(a*b));

System.out.println("a/b:

"+(a/(float)b));

}

voidmultipleUtility(int[]score){

doubletemp=0;

System.out.println("成绩分布如下:

");

for(intx:

score){

System.out.print(x+"");

}

System.out.println();

//求平均值

for(inti=0;i

temp+=score[i];

temp/=score.length;

System.out.println("平均成绩为:

"+temp);

//求最大值

temp=0;

for(inti=0;i

if(score[i]>temp)

temp=score[i];

}

System.out.println("成绩最大值为:

"+temp);

//求最小值

temp=100;

for(inti=0;i

if(score[i]

temp=score[i];

}

System.out.println("成绩最小值为:

"+temp);

//求方差

doublesAve=0;//平均值

doublesVar=0;//方差

intm=score.length;

for(intx:

score){

sAve+=x;

}

sAve/=m;//求得平均值

for(intx:

score){

sVar+=(x-sAve)*(x-sAve);

}

sVar=sVar/m;

System.out.println("成绩的方差为:

"+sVar);

//求标准差

doublesStan=Math.sqrt(sVar);

System.out.println("成绩的标准差为:

"+sStan);

}

intadd(inta,intb){

returna+b;

}

}

TestClass.java

packageExperiment2;

importorg.junit.Assert;

importorg.junit.Test;

publicclassTestClass{

Ex2a=newEx2();

@Test

publicvoidtesta(){

a.calculate(10,5);

}

@Test

publicvoidtestb(){

a.multipleUtility(newint[]{55,88,65,98});

}

@Test

publicvoidtestc(){

intb=a.add(8,10);

//Assert.assertEquals("加法出错了",b,19);

}

}

实验体会

朱青(16046233):

本次的实验使用了Assert方法,通过对Assert.assertEquals方法的使用,学会了当一个方法语法没问题但是逻辑有问题时输出提示语句。

Assert相当于我们给定一个我们认为输出的值,如果返回值与我们认定值不同,则表示逻辑错误,接着输出我们定义好的错误语句,intb=a.add(8,10);Assert.assertEquals("加法出错了",b,19)就是一个很好的例子,当b返回值不是19时,说明程序有问题,于是Junit会提示“加法出错了”。

另外新学会了一种不用更改原程序而测试方法的办法,另起一个方法,在该方法头部注解到@Test,然后在方法体内调用所需要测试的方法,前提是记得先声明一个类的实例,以实例来调用方法,除非是static方法。

朱振宇(16046234):

在本次试验中,我对于白盒测试有了更加深刻和直观的认识。

对于判定覆盖,要注意条件为或的情况;对于条件覆盖测试,保证每个条件真假都取一次的用例可以有很多种,但是不一定保证所有的判定被覆盖,这可能会导致程序的一些逻辑错误无法被发现。

杜欣(16046235):

郭昂(16046236):

本次实验是对上次实验课写的代码进行测试,通过本次实验使我了解到软件测试的便捷性的重要性,让我对软件测试有了初步的了解

郑森及(16046237):

通过控制流图,成功的利用判定覆盖进行测试,对判定覆盖的过程更加熟悉

实验3(验证性)白盒测试(基本路径测试)

实验目的

1.选取一个模块,要求绘制出程序的控制流图。

2.采用判定覆盖方法设计测试用例,执行测试用例,并分析测试结果。

3.可以对代码进行静态检查和动态测试。

实验内容

实验前需熟悉白盒测试及基本路径覆盖的概念,了解如何绘制程序的流程图和如何设计出测试用例。

比较基本路径测试和判断覆盖的区别。

实验步骤及结果

TestSuite和TestCase都是继承自Test接口,同时,TestSuite的建立和使用依赖于TestCase实例,TestCase继承自Assert类,因此TestCase中可以直接使用Assert中的相关方法。

一个简单的Demo:

importjunit.framework.TestCase;

publicclassTestDemoextendsTestCase{

@Override

protectedvoidsetUp()throwsException{

//TODOAuto-generatedmethodstub

super.setUp();

System.out.println("setUp,hashCode="+hashCode());

}

@Override

protectedvoidtearDown()throwsException{

//TODOAuto-generatedmethodstub

super.tearDown();

System.out.println("tearDown,hashCode="+hashCode());

}

publicvoidtestMethod1(){

System.out.println("testMethod1,hashCode="+hashCode());

}

publicvoidtestMethod2(){

System.out.println("testMethod2,hashCode="+hashCode());

}

}

一个简单的例子了解一下TestSuite:

importjunit.framework.Test;

importjunit.framework.TestCase;

importjunit.framework.TestSuite;

publicclassTestSuiteDemoextendsTestSuite{

publicstaticTestsuite(){

//创建TestSuite对象

TestSuitesuite=newTestSuite();

//为TestSuite添加一个测试用例集合,参数为:

Class

extendsTestCase>testClass

//通过参数可以知道,其实该参数就是TestCase的子类

suite.addTestSuite(TestDemo.class);

//创建具体的测试用例

Testtest=TestSuite.createTest(TestDemo.class,"testMethod1");

//添加一个具体的测试用例

suite.addTest(test);

returnsuite;

}

}

实验体会

朱青(16046233):

TestCase和TestSuite类是JUNIT中比较重要的两个类,TestCase和TestSuite可以认为是JAVA的合成设计模式在单元测试中的应用,其实即便我们没有自己声明和创建TestSuite的子类,而且运行的TestCase子类的过程中也会创建TestSuite类,并将要执行的TestCase子类的实例对象添加到TestSuite中去执行。

朱振宇(16046234):

本次试验中,我了解到基本路径测试是在程序控制流程的基础上,通过分析控制结构,导出基本可执行路径集合,从而设计测试用例。

杜欣(16046235):

郭昂(16046236):

本次实验对黑盒测试进行的上机实验,本次实验学会了实际流程图和实际测试用例让我对软件测试有了新的认识。

郑森及(16046237):

熟悉了路径覆盖的过程,路径覆盖是要求覆盖程序中所有可能的路径,判断覆盖是使得程序中每个判断的取真分支和取假分支至少经历一次

实验4(验证性)黑盒测试(等价类划分)

实验目的

1.理解黑盒测试中等价类划分的基本原理。

2.能够根据相应的方法设计测试用例。

3.利用设计的测试用例测试编写的程序。

实验内容

1.实验前需熟悉黑盒测试及等价类划分的概念,了解如何划分等价类和如何设计出测试用例。

2.对预习报告中的编程代码进行上机调试,完成实验指导书中全部实验要求内容。

实验步骤及结果

等价类是指某个输入域的一个特定的子集合,在该子集合中各个输入数据对于揭露程序中的错误都是等效的,也就是说,如果用这个等价类中的代表值作为测试用例未发现程序错误,那么该类中其他数据(测试用例)也不会发现程序中的错误[1]。

有效等价类:

输入满足程序输入的要求(来自规格说明书),通俗的说就是正确的输入。

无效等价类:

输入不满足程序输入的要求,即异常输入,需要系统对此有一定的容错性。

有一个员工管理系统,现对其录入模块进行测试。

其中,人员信息包括:

编号:

系统自动编号,无需手动录入;

姓名:

必须有,要求为不超过5个汉字;

身份证:

必须有,长度为15或18位置,末尾为数字或X,注意大小写;

邮箱:

要么为空白,输入必须包含@和.

年龄:

18-80之间的数字

住址:

可以空白

注意:

如果录入正确,则提示录入成功,如果录入错误,则提示数据不对。

输入:

编号(自动录入)

姓名

身份证号

邮箱

年龄

地址

划分等价类:

实验体会

朱青(16046233):

黑盒测试就当整个程序是个黑盒子,我们看不到它里面做了些什么事情,只能通过输入输出看是否能得到我们所需的来测试。

而白盒测试可以当盒子是透明的,里面的一切我们都看的清楚,从而我们可以通过去测内部结构来测试。

  

朱振宇(16046234):

在设计测试用例时,要同时考虑有效等价类和无效等价类的设计。

软件不能直接收合理的数据还要接受无效和不合理的数据,这样软件才有更高的可靠性。

杜欣(16046235):

郭昂(16046236):

本次实验是黑盒测试中等价类的划分,让我熟悉了黑盒测试的基本概念,让我学会了划分等价类和设计测试用例。

郑森及(16046237):

了解了等价类划分为按区间划分、按数值划分、按数值集合划分、按限制条件或规划划分、按处理方式划分。

并且按此设计测试用例

实验5(验证性)黑盒测试(边界值测试)

实验目的

1.理解黑盒测试中边界值测试的基本原理,

2.能够根据相应的方法设计测试用例。

3.利用设计的测试用例测试编写的程序。

实验内容

1.实验前需熟悉黑盒测试及等价类划分的概念,了解如何划分等价类和如何设计出测试用例。

2.对预习报告中的编程代码进行上机调试,完成实验指导书中全部实验要求内容。

实验步骤及结果

现有一个程序intCheckTel(char*rc,char*n)执行电话号码有效性检查功能,中国的固定电话号码由两部分组成。

这两部分的名称和内容分别是:

●地区码(rc):

以0开头的三位或者四位数字(包括0)。

●电话号码(n):

以非0、非1开头的七位或者八位数字。

对该程序运用健壮性边界条件法设计测试用例,并执行测试,撰写实验报告。

实验步骤:

1分析边界值。

最小值

最大值

最小值-1

最大值+1

地区码(3位)

000

999

-001

1000

地区码(4位)

0000

9999

-0001

10000

电话号码(7位)

2000000

9999999

1999999

10000000

电话号码(8位)

20000000

99999999

19999999

100000000

2运用健壮性边界条件法设计测试用例,得到测试用例表。

用例ID

测试数据

期望结果

地区码

电话号码

1

000

2235688

接受(有效)

2

0000

22347789

接受(有效)

3

087

2235688

接受(有效)

4

087

22347789

接受(有效)

5

0234

2235688

接受(有效)

6

0234

22347789

接受(有效)

7

04A3

2235688

拒绝(无效)

8

122

2235688

拒绝(无效)

9

1223

2235688

拒绝(无效)

10

02

2235688

拒绝(无效)

11

02234

2235688

拒绝(无效)

12

12

2235688

拒绝(无效)

13

12345

2235688

拒绝(无效)

14

078

2334AA4

拒绝(无效)

15

078

234567

拒绝(无效)

16

078

723467890

拒绝(无效)

17

078

0234455

拒绝(无效)

18

078

1234546

拒绝(无效)

③执行测试,填写软件缺陷报告

测试模块:

电话号码检查有效性

开发者:

罗永浩

测试员:

周宏伟

测试日期:

2016年5月9日

软件缺陷列表

缺陷ID

缺陷详细信息

Mistake1

地区码=000,电话号码=2235688,预期为有效,输出为

Mistake2

地区码=000,电话号码=2235688,预期为有效,输出为

Mistake3

地区码=000,电话号码=2235688,预期为有效,输出为

Mistake4

地区码=000,电话号码=2235688,预期为有效,输出为

Mistake5

地区码=000,电话号码=2235688,预期为有效,输出为

Mistake6

地区码=000,电话号码=2235688,预期为有效,输出为

Mistake7

地区码=000,电话号码=2235688,预期为有效,输出为

Mistake8

地区码=000,电话号码=2235688,预期为有效,输出为

Mistake9

地区码=000,电话号码=2235688,预期为有效,输出为

Mistake10

地区码=000,电话号码=2235688,预期为有效,输出为

测试代码:

publicclassCheckNumber{

/*

*执行电话号码有效性检查功能

*

*/

publicstaticvoidmain(String[]args){

while(true){

Scannerscan=newScanner(System.in);

System.out.println("请输入区号:

");

StringareaCode=scan.nextLine();

System.out.println("请输入电话号码:

");

intphoneCode=scan.nextInt();

checkAreaCode(areaCode);

checkPhoneCode(phoneCode);

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

}

}

//检查区号

publicstaticvoidcheckAreaCode(StringareaCode){

if(areaCode.length()!

=3&&areaCode.length()!

=4){

System.out.println("提示信息1:

");

System.out.println("你输入的区号有误");

}

}

//检查电话号码

publicstaticvoidcheckPhoneCode(intphoneCode){

if(phoneCode>=

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 畜牧兽医

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1