山东大学软件测试实验报告
更新时间:2024-05-18 08:15:01 阅读量: 综合文库 文档下载
实验一。黑盒测试
一、等价类划分
电话号码问题 某城市电话号码由三部分组成。它们的名称和内容分别是: (1)地区码:空白或三位数字; (2)前 缀:非'0'或'1'的三位数字; (3)后 缀:4 位数字。
假定被测程序能接受一切符合上述规定的电话号码,拒绝所有不符合规定的电话号码。根据该程序的规格说明,作等价类的划分,并设计测试方案。 根据题目,分别将地区码、前缀、后缀进行分类,分析结果如下:
输入 地区码 有效等价类 空白 三位数字 非0或 非1的三位数 编号 1 2 6 无效等价类 包含其他字符 少于三位 多于三位 包含其他字符 包含0的三位数 包含1的三位数 少于三位数 多于三位数 包含其他字符 少于四位数 多于四位数 编号 3 4 5 8 9 10 11 12 13 14 15 前缀 后缀 四位数字 7 根据上图的分析,可的测试用例
测试数据 前缀 555 545 322 322 322 32A 208 111 预期结果 后缀 4344 4343 4343 4343 4343 4343 4343 4343 接受(有效) 接受(有效) 拒绝(无效) 拒绝(无效) 拒绝(无效) 拒绝(无效) 拒绝(无效) 拒绝(无效) 覆盖类 1、6、7 2、6、7 3 4 5 8 9 10 地区码 空白 232 A23 21 2323 232 232 232 232 232 232 232 232 32 32222 322 322 322 4343 4343 4AS2 434 434311 拒绝(无效) 拒绝(无效) 拒绝(无效) 拒绝(无效) 拒绝(无效) 11 12 13 14 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 年份范围 ⑤在1990~2049之间 ⑦大于2049 ⑨等于00 月份范围 ⑧在01~12之间 ⑩大于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 函数都会产生一个输出,指明相应的变量超出取值范围,比如 \的值不在 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 月
份
日
期
年 预期输-1 15 1912 月份不在1~126 -1 1912 日期不在
1
~316 15
1811
年份不在1812~2012-1 -1 1912 两个无效一个有6 -1 1811 两个无效一个有 -1
15
1811
两个无效
一
个
有
-1 -1 1811 三个无效
试出中中中效效效
SR1 SR2 SR3 SR4 SR5 SR6
SR7
实验二。白盒测试
利用白盒测试之赋税管理系统练习基本路径测试方法。 准备:
Junit-4.10
Eclipse(安装完Junit
eclipse新建工程,本次先以获取数组中的中位数为例进行介绍
然后在项目中引入Junite
对于冒泡排序进行一次测试:
当预期结果与执行结果相同时,测试显示正确
如果有错误预判,显示结果错误。 实验步骤二:设计程序,进行测试:
收入Income和供养人数nDependance来计算赋税金额的程序。 程序输入是Income和nDependance,程序输出是:总税金TaxTotal 应缴所得税计算公式:TaxSubtotal
收入(income) 税率计算公式 <10000 0.02*income
10000
实缴所得税: TaxTotal = TaxSubtotal – exemption
程序Java代码:
package Project.com.cn.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(\请输入正确的工资数目!\错误类型:\
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(\需要缴纳的税为:\
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(\需要缴纳的税为:\
public static void main(String args[]){ TexTotal d=new TexTotal(); if(d.getShuru()){ d.Income(); d.Prints(); } } }
测试代码:
package Project.com.cn.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】,点击【New Test】。
2、开始录制。
录制前查看如下设置是否正确。
主菜单“Tools”—“General Options”—“General”选项卡设置如下,选择GUI Map模式为“The GUI Map File per Test”
图3-1-1
点击工具栏上“录制”按钮3、启动需录制界面窗口。
使用WinRunner自带的演示程序,运行Flight 4B程序,进入“Login”窗口如图3-1-2。具体运行方法为:点击【开始】按钮,选择【程序】-【WinRunner】-【Sample Applications】,点击【Flight 4A】。
4、操作图形用户界面。
点击“Agent Name”输入框,输入“tester”;点击“Password”输入框,输入“mercury”;点击“OK”按钮。
, WinRunner进入录制状态。
图3-1-2
5、在图3-1-3中选择File—Open Order。
图3-1-3
在随后的窗口中,选中Order No(在checkBox中打上勾),输入数字3,按“OK”按钮。如图3-1-4。
图3-1-4
在图3-1-3中,选择File—Fax Order。在图3-1-4窗口中输入传真号码(数字)如:0109812320。并将签名选项打上勾。
图3-1-5
在Agent Signature窗口中写下你的名字。用鼠标在白板上签名(画名)。仔细查看
WinRunner如何在Context Sensitive录制模式下进行签名。
清除刚才所做的签名轨迹。按下“Clear Signature”按钮。将Fax Order 窗口移动到
屏幕上不同的位置。(在更换AnoLog录制模式时,重新设置窗口位置)
按F2转换到AnoLog录制模式下。并在Agent Signature窗口中写下你的名字(画
下你的名字)。仔细观察WinRunner如何在Anolog录制模式下进行签名录制。
再次按下F2转换回Context Sensitive录制模式,按下Send按钮,发送传真。窗口
将提示发送成功。
6、停止录制。
按左Ctrl + F3键停止录制。查看WinRunner中记录的脚本。 7、保存脚本。
点击工具栏中“保存”按钮把脚本保存到指定目录。
8、回放脚本。
关闭“Flight 4A”程序。
选择工具栏上“From Top”按钮。观察脚本的运行。
? 插入同步点 操作前请先确保如下设置:
主菜单“Tools”—“General Options”—“Settings”选项卡设置如下,选择Timeout for checkpoints and CS statements为1000msec。
图3-1-6
1、运行WinRunner,并创建一个新的测试。
2、打开“飞机预定票系统”(Flight4A)。(PASSWORD:mercury)
3、录制一个脚本。在“飞机预定票系统”中创建一个新的定单。选择“File>New Order”。填写飞机与乘客信息。如图3-1-7:
图3-1-7
插入定单存到数据库。单击“Insert Order”按钮,当插入完成,“Insert Done”信息将出现在状态栏(在界面上方)。
再单击“Delete Order”按钮,并确认删除此订单。 停止录制。
保存脚本。(例如脚本名为Lesson)
4、 关闭“Flight 4A”程序。回放刚才录制的脚本。
观察发生的情况,删除订单时出现错误提示。原因是回放脚本速度太快,插入还没有成功就要删除脚本。
? 插入同步点步骤
1、确认窗口处在Lesson测试脚本下。(由于间隔时间不够导致失败)
2、移动鼠标到所要插入同步点的脚本位置。将鼠标移动到“button_press (\Order\;”末尾,并回车新增行,如图3-1-8:
图3-1-8
3、插入同步设置。策略:当“Insert done”的提示在主窗口上方出现时,再让测试继续。选择菜单“Insert>Synchronization Point>For Object/window Bitmap”。
图3-1-9
4、将手的形状移到“飞机预定票主窗口”,捕获“insert done”的位图信息。如图3-1-10:
图3-1-10
5、在脚本窗口原鼠标所在位置,将添加一行脚本语言描述。如图3-1-11:并修改其中的时间参数,将1秒改为10秒。
6、保存修改后的脚本。
图3-1-11
7、关闭“Flight 4A”程序。回放刚才的脚本。脚本运行成功。
? 建立数据驱动测试 ? 录制
1、 运行WinRunner。
2、 运行通讯簿。从开始—程序—附件启动通讯簿。 3、 点击菜单【文件】-【新建联系人】,显示属性窗口。
4、 输入用户信息。(例如姓:张;名:三;电子邮件地址:zhangshan@sina.com) 5、 确定。
6、 退出通讯簿程序。 7、 停止录制。
? 数据驱动
数据驱动的步骤如下: 1、选中所有脚本。
2、选择菜单【Table】-【DataDriver Wizard】,进入数据驱动向导。
3、单击按钮“Next”。
4、第二步使用缺省选项,单击按钮“Next”。
5、在本用例里,共享联系人这一项不进行参数化,因此选择“Do not replace this data”,单击按钮“Next”。
6、“姓”这一项进行参数化,选择“A new Column”,字段名根据自己喜好输入,这里使用缺省值“姓L”,单击按钮“Next”。
7、“名”这一项用相同的方式,用缺省字段名“名F”,单击按钮“Next”。 8、“电子邮件地址”用相同的方式,更改字段名为“Email”,单击按钮“Next”。 9、选中“Show data table now”选项,单击按钮“Finish”,进入数据表格窗口。 10、输入几个用户数据,保存后退出。
正在阅读:
山东大学软件测试实验报告05-18
外企邮件常用英语130句-精05-31
部编本人教版语文三年级上册23带刺的朋友(第2课时)精品教案01-12
粉尘定期清扫制度09-03
2009年读书心得优秀奖获奖文章06-25
银行授权书,银行授权书范本3篇02-15
人生哲理性散文11-21
苏少版五年级美术下册全册教案04-26
(完整版)七年级生物上册教学设计04-08
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 山东大学
- 软件测试
- 实验
- 报告
- 中国制冷控制器市场发展研究及投资前景报告(目录) - 图文
- 历史趣谈武则天的合葬墓为什么有无头守陵石像?
- GMAT练习题含解释
- 04数2
- 2016高考政治二轮复习真题练习专题九民族精神与文化强国 doc
- 福建师范大学17年8月课程考试《市场营销学》作业考核试题--高分
- PP塑料碗注塑模设计
- 2018部编语文八年级下册第六单元教案
- 星巴克营销策略分析
- 全国2012年10月高等教育自学考试 综合英语(二)试题 课程代码00
- 矿井延伸防突设计(修编)
- 三角形、梯形中位线练习题
- 电机及拖动总复习
- 全省公路筑养路机械操作技能竞赛技术方案
- 苏教版小学语文三年级下册全册教案
- 争创一流烟草站安全生产管理工作标准
- 素雅个人简历 - 图文
- 甘肃省兰州2016-2017学年高二数学上册期中考试题
- 《车工》教案 项目16 车多线螺纹 - 图文
- 计量管理办法等相关制度(集团公司)