黑盒测试实验报告共25页.docx

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

黑盒测试实验报告共25页.docx

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

黑盒测试实验报告共25页.docx

黑盒测试实验报告共25页

  《软件测试技术》实验报告

  实验序号:

 04         实验项目名称:

黑盒测试

  一、实验目的及要求

  掌握用等价类、边界值分析法、因果图的方法设计测试用例

  二、实验设备(环境)及要求

  实验在计算机系的机房进行,安装了VC6.0,JavaSDK,TurboC等软件,学生能采用C语言,C++,或Java语言进行编程。

  三、实验内容与步骤

  任务一:

佣金问题

  问题描述如下:

  一酒水销售公司指派销售员销售各种酒水。

白酒卖168元瓶,红酒卖120元瓶,啤酒卖5元瓶。

白酒每月的供应量为5000瓶,红酒为3000瓶,啤酒为30000瓶,各个销售员每月至少要售出白酒50瓶,红酒30瓶,啤酒300瓶。

月末,每个销售员上报他所在区域的销售业绩。

这样酒水销售公司就知道了当月的销售情况,并根据销售额计算佣金提成如下:

  2万以下(含):

4%;

  2万(不含)~4.5万(含):

1%

  4.5万以上(不含):

0.5%

  这样,佣金程序生成月份销售报告,汇总售出的白酒、红酒和啤酒总数,销售公司的总销售额和各个销售员的佣金。

  这个问题分为三个不同的部分:

  输入数据部分,用来处理输入数据的有效性;

  销售额计算部分;

  佣金(提成)计算部分.

  1、充分考虑输入有效性校验,编写佣金问题的代码;

  2、按照等价类划分的思想,设计等价类测试用例;

  1)佣金问题中,首先分析输入和输出,注意分析佣金问题中给出和隐含的对输入条件的要求:

  2)针对输入进行等价类划分,形成等价类列表,并为每一个等价类编号;

  3)从等价类划分的表格中设计测试用例:

为有效等价类设计测试用例,为每一个无效等价类至少设计一个测试用例

  3、执行测试,记录发现的问题。

  任务二:

下一天问题

  1、对于NextDate问题,分析它的输入限制;

  2、从输入限制的边界设计测试用例;

  3、执行测试,记录结果。

  任务三:

自动售货机问题

  有一个处理单价为5角钱的饮料的自动售货机软件测试用例的设计。

其规格说明如下:

若投入5角钱或1元钱的硬币,押下[橙汁]或[啤酒]的按钮,则相应的饮料酒送出来。

若售货机没有零钱找,则一个显示[零钱找完]的红灯亮,这时再投入1元硬币并押下按钮后,饮料不送出来而且1元硬币也退出来;若有零钱找,则显示[零钱找完]的红灯灭,在送出饮料的同时退还5角硬币。

  1、分析这一段说明,列出原因和结果

  2、画出因果图。

所有原因结点列在左边,所有结果结点列在右边。

建立中间结点,表示处理的中间状态。

中间结点:

  1)投入1元硬币且押下饮料按钮

  2)押下〖橙汁〗或〖啤酒〗的按钮

  3)应当找5角零钱并且售货机有零钱找

  4)钱已付清

  3、转换成判定表

  4、在判定表中,把不可能出现的情况删去。

  5、最后根据判定表中剩下的列作为确定测试用例的依据,设计测试用例。

  6、实验报告要求及记录、格式

  四、程序调试与结果

  1、佣金问题

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

  输入等价类

  有效等价类

  无效等价类

  白酒数量

  eq\o\ac(○,1)在50~5000之间

  eq\o\ac(○,2)在0~49之间

  eq\o\ac(○,3)在5000以上不包括5000

  红酒数量

  eq\o\ac(○,4)在30~3000之间

  eq\o\ac(○,5)在0~29之间

  eq\o\ac(○,6)在3000以上不包括3000

  啤酒数量

  eq\o\ac(○,7)在300~30000之间

  eq\o\ac(○,8)在0~299之间

  eq\o\ac(○,9)在30000以上不包括30000

  2)设计测试用例,以便覆盖所有的有效等价类在表中列出了3个有效等价类,编号分别为①、eq\o\ac(○,4)、eq\o\ac(○,7),设计的测试用例如下:

  测试数据

  期望结果

  覆盖的有效等价类

  (55,40,400)

  输入有效

  ①、eq\o\ac(○,4)、eq\o\ac(○,7)

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

  测试数据

  期望结果

  覆盖的无效等价类

  (30,40,400)

  输入无效

  eq\o\ac(○,2)

  (5500,40,400)

  输入无效

  eq\o\ac(○,3)

  (55,25,400)

  输入无效

  eq\o\ac(○,5)

  (55,4000,400)

  输入无效

  eq\o\ac(○,6)

  (55,75,250)

  输入无效

  eq\o\ac(○,8)

  (55,75,33000)

  输入无效

  eq\o\ac(○,9)

  4)?

测试结果:

所有测试都成功,且测试的覆盖率为百分百

  2、NextDate问题

  1)分析它的输入限制?

  NextDate是一个有三个变量(月份、日期和年)的函数。

函数返回输入日期后面的那个日期。

变量月份、日期和年都是整数值,并满足以下条件:

?

  c1:

1<=月份<=12?

c2:

1<=日期<=31?

c3:

1812<=年<=2012?

  2)边界值测试设计

  编号

  输入

  期望输出

  Year

  Month

  Day

  001

  1993

  -1

  15

  Month不在1~12中

  002

  1993

  0

  15

  Month不在1~12中

  003

  1993

  1

  15

  1993年1月16日

  004

  1993

  11

  15

  1993年11月16日

  005

  1993

  12

  15

  1993年12月16日

  006

  1993

  13

  15

  Month不在1~12中

  007

  1993

  6

  -1

  Day不在1~31中

  008

  1993

  6

  0

  Day不在1~31中

  009

  1993

  6

  1

  1993年6月2日

  010

  1993

  6

  15

  1993年6月16日

  011

  1993

  6

  29

  1992年6月30日

  012

  1993

  6

  30

  1992年7月1日

  013

  1993

  6

  31

  Day不在1~30中

  014

  1993

  2

  -1

  Day不在1~29中

  015

  1993

  2

  0

  Day不在1~29中

  016

  1993

  2

  1

  1993年2月2日

  017

  1993

  2

  15

  1993年2月16日

  018

  1992

  2

  28

  1993年2月29日

  029

  1993

  2

  28

  1993年3月1日

  019

  1992

  2

  29

  1993年3月1日

  020

  1993

  2

  29

  平年2月没有29号

  021

  1993

  2

  30

  Day不在1~31中

  022

  1993

  2

  31

  Day不在1~31中

  023

  1993

  12

  -1

  Day不在1~31中

  024

  1993

  12

  0

  Day不在1~31中

  025

  1993

  12

  1

  1993年12月2日

  026

  1993

  12

  30

  1993年12月31日

  027

  1993

  12

  31

  1994年1月1日

  028

  1993

  12

  32

  Day不在1~31中

  030

  1993

  1

  -1

  Day不在1~31中

  031

  1993

  1

  0

  Day不在1~31中

  032

  1993

  1

  1

  1993年1月2日

  033

  1993

  1

  30

  1993年1月31日

  034

  1993

  1

  31

  1993年2月1日

  035

  1993

  1

  32

  Day不在1~31中

  3)测试结果:

所有测试都成功,且测试的覆盖率为百分百

  3、自动售货机问题

  1)分析

  自动售货机中一共存在5个条件和5个结果:

  条件:

C1、售货机有零钱找

  C2、投入1元硬币

  C3、投入5角硬币

  C4、按下橙汁按钮

  C5、按下啤酒按钮

  结果:

E1、售货机“零钱找完”灯亮

  E2、退还1元硬币

  E3、退还5角硬币

  E4、送出橙汁饮料

  E5、送出啤酒饮料

  2)因果图的分析结果

  4)有效的条件组合构成的判定表

  输入

  C1

  0

  0

  0

  0

  0

  0

  0

  0

  1

  1

  1

  1

  1

  1

  1

  1

  C2

  1

  1

  1

  0

  0

  0

  0

  0

  1

  1

  1

  0

  0

  0

  0

  0

  C3

  0

  0

  0

  1

  1

  1

  0

  0

  0

  0

  0

  1

  1

  1

  0

  0

  C4

  0

  1

  0

  0

  1

  0

  1

  0

  0

  1

  0

  0

  1

  0

  1

  0

  C5

  0

  0

  1

  0

  0

  1

  0

  1

  0

  0

  1

  0

  0

  1

  0

  1

  结果

  E1

  1

  1

  1

  0

  0

  0

  0

  0

  0

  0

  0

  0

  0

  0

  0

  0

  E2

  1

  1

  1

  0

  0

  0

  0

  0

  0

  0

  0

  0

  0

  0

  0

  0

  E3

  0

  0

  0

  1

  0

  0

  0

  0

  0

  1

  1

  0

  0

  0

  0

  0

  E4

  0

  0

  0

  0

  1

  0

  0

  0

  0

  1

  0

  0

  1

  0

  0

  0

  E5

  0

  0

  0

  0

  0

  1

  0

  0

  0

  0

  1

  0

  0

  1

  0

  0

  5)测试用例

  编号

  输入值

  状态

  期望值

  001

  (cola,1D)

  有零钱

  TypeError

  002

  (OrangeJuice,1D)

  有零钱

  送出橙汁,退5角

  003

  (Beer,1D)

  有零钱

  送出啤酒,退5角

  004

  (cola,5C)

  有零钱

  TypeError

  005

  (OrangeJuice,5C)

  有零钱

  送出橙汁

  006

  (Beer,5C)

  有零钱

  送出啤酒

  007

  (OrangeJuice,4C)

  有零钱

  MoneyError

  008

  (Beer,4C)

  有零钱

  MoneyError

  009

  (cola,1D)

  无零钱

  红灯亮,退1元

  010

  (OrangeJuice,1D)

  无零钱

  红灯亮,退1元

  011

  (Beer,1D)

  无零钱

  红灯亮,退1元

  012

  (cola,5C)

  无零钱

  退5角

  013

  (OrangeJuice,5C)

  无零钱

  送出橙汁

  014

  (Beer,5C)

  无零钱

  送出啤酒

  015

  (OrangeJuice,4C)

  无零钱

  MoneyError

  016

  (Beer,4C)

  无零钱

  MoneyError

  6)测试结果:

所有测试都成功,且测试的覆盖率为百分百

  五、分析与讨论

  该实验借助了Eclipse+JUnit+EclEmma进行了测试。

可以将代码实现的功能过一遍。

更快捷的找到自己的测试用例的不足。

  六、教师评语

  签名:

  日期:

  成绩

  附件:

  佣金问题

  实现代码:

  packagetest4;

  importjava.util.Scanner;

  publicclassCommission{

  doubletotalspirit=0;白酒总销售量

  doubletotalredwine=0;红酒总销售量

  doubletotalbeer=0;啤酒总销售量

  doublespiritprice=168;白酒的单价

  doubleredwineprice=120;红酒的单价

  doublebeerprice=5;啤酒的单价

  doublespiritsales;

  doubleredwinesales;

  doublebeersales;

  doublesales;

  doublecommission;佣金

  StringresultSales;

  publicCommission(doublespirit,doubleredwine,doublebeer)

  {

  totalspirit+=spirit;

  totalredwine=+redwine;

  totalbeer+=beer;

  }

  publicStringoperation(doublespirit,doubleredwine,doublebeer)

  {

  if(spirit>=50&&spirit<=5000)

  {

  if(redwine>=30&&redwine<=3000)

  {

  if(beer>=300&&beer<=30000)

  {

  spiritsales=spiritprice*totalspirit;

  redwinesales=redwineprice*totalredwine;

  beersales=beerprice*totalbeer;

  sales=spiritsales+redwinesales+beersales;

  if(sales<=20000)

  commission=sales*0.04;

  elseif(sales>20000&&sales<=45000)

  commission=20000*0.04+(sales-20000)*0.01;

  else

  commission=45000*0.01+(sales-45000)*0.005;

  resultSales="CurrentState\n"+

  "白酒销售量:

"+totalspirit+"\n"+

  "红酒销售量:

"+totalredwine+"\n"+

  "啤酒销售量:

"+totalbeer+"\n"+

  "公司总销售额:

"+sales+"\n"+

  "本月获得佣金:

"+commission;

  }

  elseif(beer<300)

  {

  resultSales="Youdidnotcompletethecompany'ssalesindex,atleastamonthtosell300bottlesofbeer.";

  }

  elseif(beer>30000)

  {

  resultSales="Monthlysupplyof30000bottlesofbeer";

  }

  }

  elseif(redwine<30)

  {

  resultSales="Youdidnotcompletethecompany'ssalesindex,atleastamonthtosell30bottlesofredwine.";

  }

  elseif(redwine>3000)

  {

  resultSales="Monthlysupplyof3000bottlesofredwine";

  }

  }

  elseif(spirit<50)

  {

  resultSales="Youdidnotcompletethecompany'ssalesindex,atleastamonthtosell50bottlesofspirit.";

  }

  elseif(spirit>5000)

  {

  resultSales="Monthlysupplyof5000bottlesofspirit";

  }

  returnresultSales;

  }

  }

  测试代码:

  packagetest4;

  importtest3.SaleMachine;

  importjunit.framework.TestCase;

  publicclassTestCommissionextendsTestCase{

  publicvoidtestOperation1()

  {

  CommissionsaleMan1=newCommission(55,40,400);

  StringexpectedResult="CurrentState\n"+

  "白酒销售量:

"+55.0+"\n"+

  "红酒销售量:

"+40.0+"\n"+

  "啤酒销售量:

"+400.0+"\n"+

  "公司总销售额:

"+16040.0+"\n"+

  "本月获得佣金:

"+641.6;

  assertEquals(expectedResult,saleMan1.operation(55,40,400));

  }

  publicvoidtestOperation2()

  {

  CommissionsaleMan2=newCommission(30,40,400);

  StringexpectedResult="Youdidnotcompletethecompany'ssalesindex,atleastamonthtosell50bottlesofspirit.";

  assertEquals(expectedResult,saleMan2.operation(30,40,400));

  }

  publicvoidtestOperation3()

  {

  CommissionsaleMan3=newCommission(5500,40,400);

  StringexpectedResult="Monthlysupplyof5000bottlesofspirit";

  assertEquals(expectedResult,saleMan3.operation(5500,40,400));

  }

  publicvoidtestOperation4()

  {

  CommissionsaleMan4=newCommission(55,25,400);

  StringexpectedResult="Youdidnotcompletethecompany'ssalesindex,atleastamonthtosell30bottlesofredwine.";

  assertEquals(expectedResult,saleMan4.operation(55,25,400));

  }

  publicvoidtestOperation5()

  {

  CommissionsaleMan5=newCommission(55,4000,400);

  StringexpectedResult="Monthlysupplyof3000bottlesofredwine";

  assertEquals(expectedResult,saleMan5.operation(55,4000,400));

  }

  publicvoidtestOperation6()

  {

  CommissionsaleMan6=newCommission(55,75,250);

  StringexpectedResult="Youdidnotcompletethecompany'ssalesindex,atleastamonthtosell300bottlesofbeer.";

  assertEquals(expectedResult,saleMan6.operation(55,75,250));

  }

  publicvoidtestOperation7()

  {

  CommissionsaleMan7=newCommission(55,75,33000);

  StringexpectedResult="Monthlysupplyof30000bottlesofbeer";

  assertEquals(expectedResult,saleMan7.operation(55,75,33000));

  }

  publicvoidtestOperation8()

  {

  CommissionsaleMan8=newCommission(100,150,1000);

  StringexpectedResult="CurrentState\n"+

  "白酒销售量:

"+100.0+"\n"+

  "红酒销售量:

"+150.0

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

当前位置:首页 > 求职职场 > 简历

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

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