山东大学软件测试实验报告.docx

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

山东大学软件测试实验报告.docx

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

山东大学软件测试实验报告.docx

山东大学软件测试实验报告

实验一。

黑盒测试

 

1、等价类划分

电话号码问题某城市电话号码由三部分组成。

它们的名称和内容分别是:

(1)地区码:

空白或三位数字;

(2)前缀:

非'0'或'1'的三位数字;

(3)后缀:

4位数字。

假定被测程序能接受一切符合上述规定的电话号码,拒绝所有不符合规定的电话号码。

根据该程序的规格说明,作等价类的划分,并设计测试方案。

根据题目,分别将地区码、前缀、后缀进行分类,分析结果如下:

输入

有效等价类

编号

无效等价类

编号

地区码

空白

1

包含其他字符

3

三位数字

2

少于三位

4

多于三位

5

前缀

非0或

非1的三位数

6

包含其他字符

8

包含0的三位数

9

包含1的三位数

10

少于三位数

11

多于三位数

12

后缀

四位数字

7

包含其他字符

13

少于四位数

14

多于四位数

15

根据上图的分析,可的测试用例

测试数据

预期结果

覆盖类

地区码

前缀

后缀

空白

555

4344

接受(有效)

1、6、7

232

545

4343

接受(有效)

2、6、7

A23

322

4343

拒绝(无效)

3

21

322

4343

拒绝(无效)

4

2323

322

4343

拒绝(无效)

5

232

32A

4343

拒绝(无效)

8

232

208

4343

拒绝(无效)

9

232

111

4343

拒绝(无效)

10

232

32

4343

拒绝(无效)

11

232

32222

4343

拒绝(无效)

12

232

322

4AS2

拒绝(无效)

13

232

322

434

拒绝(无效)

14

232

322

434311

拒绝(无效)

15

 

三角形问题根据下面给出的规格说明,利用等价类划分的方法,给出足够的测试用例。

一个程序读入三个整数。

把此三个数值看成是一个三角形的三个边。

这个程序要打印出信息,说明不是三角形、三角形是三边不等的、是等腰的、还是等边的。

分析题目中给出和隐含的对输入条件的要求:

(1)整数    

(2)三个数    (3)非零数   (4)正数   

(5)两边之和大于第三边     (6)等腰     (7)等边 

 如果 a 、 b 、 c 满足条件( 1 ) ~ ( 4 ),则输出下列四种情况之一:

 1)如果不满足条件(5),则程序输出为 " 非三角形 " 。

 2)如果三条边相等即满足条件(7),则程序输出为 " 等边三角形 " 。

 3)如果只有两条边相等、即满足条件(6),则程序输出为 " 等腰三角形 " 。

 4)如果三条边都不相等,则程序输出为 " 一般三角形 " 。

 

 列出等价类表并编号

 

覆盖有效等价类的测试用例:

a     b     c              覆盖等价类号码

3     4     5             

(1)--(7)

4     4     5             

(1)--(7),(8)

4     5     5             

(1)--(7),(9)   

5     4     5             

(1)--(7),(10)

4     4     4             

(1)--(7),(11)

覆盖无效等价类的测试用例:

日期问题用决策表测试法测试以下程序:

该程序有三个输入变量month、day、year(month、day和year均为整数值,并且满足:

1≤month≤12和1≤day≤31),分别作为输入日期的月份、日、年份,通过程序可以输出该输入日期在日历上隔一天的日期。

例如,输入为2004年11月29日,则该程序的输出为2004年12月1日。

(1)分析各种输入情况,列出为输入变量month、day、year划分的有效等价类。

(2)分析程序的规格说明,并结合以上等价类划分的情况,给出问题规定的可能采取的操作(即列出所有的动作桩)。

(3)根据

(1)和

(2),画出简化后的决策表。

1)划分等价类并编号,下表等价类划分的结果

输入等价类

有效等价类

无效等价类

日期的类型及长度

①6位数字字符

②有非数字字符

③少于6位数字字符

④多于6位数字字符

年份范围

⑤在1990~2049之间

⑥小于1990

⑦大于2049

月份范围

⑧在01~12之间

⑨等于00

⑩大于12

2)设计测试用例,以便覆盖所有的有效等价类在表中列出了3个有效等价类,编号分别为①、⑤、⑧,设计的测试用例如下:

测试数据    期望结果      覆盖的有效等价类

200211      输入有效      ①、⑤、⑧

3)为每一个无效等价类设计一个测试用例,设计结果如下:

    测试数据   期望结果     覆盖的无效等价类

   95June     无效输入          ②

   20036      无效输入          ③

   2001006   无效输入          ④

   198912     无效输入          ⑥

   200401     无效输入          ⑦

   200100     无效输入          ⑨

   200113     无效输入          ⑩

3.     NextDate 函数包含三个变量:

month 、 day 和 year ,函数的输出为输入日期后一天的日期。

 例如,输入为 2006年3月 7日,则函数的输出为 2006年3月8日 。

要求输入变量 month 、 day 和 year 均为整数值,并且满足下列条件:

  ①1≤month≤12

  ②1≤day≤31

  ③1920≤year≤2050  

1)有效等价类为:

   M1={月份:

1≤月份≤12}

   D1={日期:

1≤日期≤31}

   Y1={年:

1812≤年≤2012}

2)若条件 ① ~ ③中任何一个条件失效,则 NextDate 函数都会产生一个输出,指明相应的变量超出取值范围,比如 "month 的值不在 1-12 范围当中 " 。

显然还存在着大量的 year 、 month 、 day 的无效组合, NextDate 函数将这些组合作统一的输出:

 " 无效输入日期 " 。

其无效等价类为:

   M2={月份:

月份<1}

   M3={月份:

月份>12}

   D2={日期:

日期<1}

   D3={日期:

日期>31}

   Y2={年:

年<1812}

   Y3={年:

年>2012}

  弱一般等价类测试用例

  月份    日期       年               预期输出

  6      15       1912          1912年6月16日

  强一般等价类测试用例同弱一般等价类测试用例

  注:

弱--有单缺陷假设;健壮--考虑了无效值 

  

 

(一)弱健壮等价类测试

  用例ID   月份  日期    年          预期输出

 WR1     6     15   1912     1912年6月16日

 WR2    -1    15   1912     月份不在1~12中

 WR3    13    15   1912      月份不在1~12中

 WR4     6     -1   1912      日期不在1~31中

 WR5     6     32   1912      日期不在1~31中

 WR6     6     15   1811     年份不在1812~2012中

 WR7     6     15   2013      年份不在1812~2012中

 

(二)强健壮等价类测试

          用例ID   月份    日期      年          预期输出

          SR1      -1     15      1912      月份不在1~12中

          SR2       6     -1       1912      日期不在1~31中

          SR3       6     15      1811      年份不在1812~2012中

          SR4      -1     -1       1912      两个无效一个有效

          SR5       6     -1       1811      两个无效一个有效

          SR6      -1     15      1811      两个无效一个有效

          SR7      -1     -1       1811      三个无效

 

实验二。

白盒测试

利用白盒测试之赋税管理系统练习基本路径测试方法。

 

准备:

Junit-4.10

Eclipse(安装完Junit

eclipse新建工程,本次先以获取数组中的中位数为例进行介绍

然后在项目中引入Junite

对于冒泡排序进行一次测试:

当预期结果与执行结果相同时,测试显示正确

如果有错误预判,显示结果错误。

实验步骤二:

设计程序,进行测试:

 收入Income和供养人数nDependance来计算赋税金额的程序。

  程序输入是Income和nDependance,程序输出是:

总税金TaxTotal  应缴所得税计算公式:

TaxSubtotal 

收入(income) 税率计算公式  

<100000.02*income 

10000

>50000 1400+0.04*(income-50000) 

免税部分:

exemption = 人数*50; 

实缴所得税:

 TaxTotal =  TaxSubtotal – exemption 

 

程序Java代码:

 

package P.test;  

import java.util.Scanner;  

public class TexTotal {  private double totals;  private double income;  private int per; 

 public double gettotals(){   return totals;  } 

 public void setShuru(double income,int per){   this.income=income;   this.per=per;  } 

 public boolean getShuru() {   try { 

   Scanner in = new Scanner(System.in); 

   System.out.println("请输入你的工资和家庭人数(以空格隔开):

"); 

   this.income = in.nextInt(); 

   this.per = in.nextInt();   } catch (Exception e) { 

   System.out.println("请输入正确的工资数目!

");    System.out.println("错误类型:

" + e);    return false;   } 

  return true;  } 

 public void Income(){ 

  if(this.income<=0||this.per<=0){ 

   System.out.println("请输入正确的家庭人数和收入!

"); 

  }else if(this.income < 10000){ 

   this.totals=this.income*0.02-this.per*50;   }else if(this.income>=10000 && this.income<50000){   

 this.totals=200+(this.income-10000)*0.03-this.per*50; 

  }else{   

 this.totals=1400+(this.income-50000)*0.04-this.per*50; 

  } 

  if(this.totals<0){    this.totals=0;   }  } 

 public void Prints() { 

  System.out.println("需要缴纳的税为:

"+this.totals);  } 

 public static void main(String args[]){   TexTotal d=new TexTotal();   if(d.getShuru()){    d.Income();    d.Prints();   }  }  }

  if(this.totals<0){    this.totals=0;   }  } 

 public void Prints() { 

  System.out.println("需要缴纳的税为:

"+this.totals);  } 

 public static void main(String args[]){   TexTotal d=new TexTotal();   if(d.getShuru()){    d.Income();    d.Prints();   }  }  }  

 

测试代码:

 

package P.test;  

import static org.junit.Assert.*; import junit.framework.Assert;  

import org.junit.After; import org.junit.Before; import org.junit.Test;  

public class TexTotalTest {  TexTotal s=new TexTotal();  

 @Before 

 public void setUp() throws Exception {  }  

 @After 

 public void tearDown() throws Exception {  }    @Test 

 public void testGetShuru1() {   s.setShuru(9994,5);   s.Income(); 

  Assert.assertEquals(0.0,s.gettotals());  }  @Test 

 public void testGetShuru2() {   s.setShuru(10023,3);   s.Income(); 

  Assert.assertEquals(50.69,s.gettotals());  }  @Test 

 public void testGetShuru3() {   s.setShuru(59232,4);   s.Income(); 

  Assert.assertEquals(1569.28,s.gettotals());  }  @Test 

 public void testGetShuru4() {   s.setShuru(500,0);   s.Income(); 

  Assert.assertEquals(0.0,s.gettotals());  }  @Test 

 public void testGetShuru5() { 

  s.setShuru(-50000,4);   s.Income(); 

  Assert.assertEquals(0.0,s.gettotals());  } }

3 测试数据

测试均顺利通过。

路径覆盖率为100%。

 

实验三、

1、运行Winrunner,新建一个测试项目。

点击【开始】按钮,选择【程序】-【WinRunner】-【WinRunner】,点击【NewTest】。

2、开始录制。

录制前查看如下设置是否正确。

主菜单“Tools”—“GeneralOptions”—“General”选项卡设置如下,选择GUIMap模式为“TheGUIMapTest”

图3-1-1

点击工具栏上“录制”按钮

,WinRunner进入录制状态。

3、启动需录制界面窗口。

使用WinRunner自带的演示程序,运行Flight4B程序,进入“Login”窗口如图3-1-2。

具体运行方法为:

点击【开始】按钮,选择【程序】-【WinRunner】-【SampleApplications】,点击【Flight4A】。

4、操作图形用户界面。

点击“AgentName”输入框,输入“tester”;点击“Password”输入框,输入“mercury”;点击“OK”按钮。

图3-1-2

5、在图3-1-3中选择Order。

图3-1-3

在随后的窗口中,选中OrderNo(在checkBox中打上勾),输入数字3,按“OK”按钮。

如图3-1-4。

图3-1-4

在图3-1-3中,选择Order。

在图3-1-4窗口中输入传真号码(数字)如:

0109812320。

并将签名选项打上勾。

图3-1-5

在AgentSignature窗口中写下你的名字。

用鼠标在白板上签名(画名)。

仔细查看WinRunner如何在ContextSensitive录制模式下进行签名。

清除刚才所做的签名轨迹。

按下“ClearSignature”按钮。

将FaxOrder窗口移动到屏幕上不同的位置。

(在更换AnoLog录制模式时,重新设置窗口位置)

按F2转换到AnoLog录制模式下。

并在AgentSignature窗口中写下你的名字(画下你的名字)。

仔细观察WinRunner如何在Anolog录制模式下进行签名录制。

再次按下F2转换回ContextSensitive录制模式,按下Send按钮,发送传真。

窗口将提示发送成功。

6、停止录制。

按左Ctrl+F3键停止录制。

查看WinRunner中记录的脚本。

7、保存脚本。

点击工具栏中“保存”按钮把脚本保存到指定目录。

8、回放脚本。

关闭“Flight4A”程序。

选择工具栏上“FromTop”按钮。

观察脚本的运行。

       插入同步点

操作前请先确保如下设置:

主菜单“Tools”—“GeneralOptions”—“Settings”选项卡设置如下,选择TimeoutforcheckpointsandCSstatements为1000msec。

图3-1-6

1、运行WinRunner,并创建一个新的测试。

2、打开“飞机预定票系统”(Flight4A)。

(PASSWORD:

mercury)

3、录制一个脚本。

在“飞机预定票系统”中创建一个新的定单。

选择“Order”。

填写飞机与乘客信息。

如图3-1-7:

图3-1-7

插入定单存到数据库。

单击“InsertOrder”按钮,当插入完成,“InsertDone”信息将出现在状态栏(在界面上方)。

再单击“DeleteOrder”按钮,并确认删除此订单。

停止录制。

保存脚本。

(例如脚本名为Lesson)

4、 关闭“Flight4A”程序。

回放刚才录制的脚本。

观察发生的情况,删除订单时出现错误提示。

原因是回放脚本速度太快,插入还没有成功就要删除脚本。

        插入同步点步骤

1、确认窗口处在Lesson测试脚本下。

(由于间隔时间不够导致失败)

2、移动鼠标到所要插入同步点的脚本位置。

将鼠标移动到“button_press("InsertOrder");”末尾,并回车新增行,如图3-1-8:

图3-1-8

3、插入同步设置。

策略:

当“Insertdone”的提示在主窗口上方出现时,再让测试继续。

选择菜单“Insert>SynchronizationPoint>ForObject/windowBitmap”。

图3-1-9

4、将手的形状移到“飞机预定票主窗口”,捕获“insertdone”的位图信息。

如图3-1-10:

图3-1-10

5、在脚本窗口原鼠标所在位置,将添加一行脚本语言描述。

如图3-1-11:

并修改其中的时间参数,将1秒改为10秒。

6、保存修改后的脚本。

图3-1-11

7、关闭“Flight4A”程序。

回放刚才的脚本。

脚本运行成功。

 

       建立数据驱动测试

        录制

1、 运行WinRunner。

2、 运行通讯簿。

从开始—程序—附件启动通讯簿。

3、 点击菜单【文件】-【新建联系人】,显示属性窗口。

4、 输入用户信息。

(例如姓:

张;名:

三;电子邮件地址:

5、 确定。

6、 退出通讯簿程序。

7、 停止录制。

 

        数据驱动

数据驱动的步骤如下:

1、选中所有脚本。

2、选择菜单【Table】-【DataDriverWizard】,进入数据驱动向导。

3、单击按钮“Next”。

4、第二步使用缺省选项,单击按钮“Next”。

5、在本用例里,共享联系人这一项不进行参数化,因此选择“Donotreplacethisdata”,单击按钮“Next”。

6、“姓”这一项进行参数化,选择“AnewColumn”,字段名根据自己喜好输入,这里使用缺省值“姓L”,单击按钮“Next”。

7、“名”这一项用相同的方式,用缺省字段名“名F”,单击按钮“Next”。

8、“电子邮件地址”用相同的方式,更改字段名为“Email”,单击按钮“Next”。

9、选中“Showdatatablenow”选项,单击按钮“Finish”,进入数据表格窗口。

10、输入几个用户数据,保存后退出。

 

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

当前位置:首页 > 工程科技 > 交通运输

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

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