实验二、黑盒测试技术(二)_第1页
实验二、黑盒测试技术(二)_第2页
实验二、黑盒测试技术(二)_第3页
实验二、黑盒测试技术(二)_第4页
实验二、黑盒测试技术(二)_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验二、黑盒测试技术(二)一、 实验类型实验类型为验证型,2个学时。二、 实验目的(1) 能熟练应用边界值和决策表测试技术进行测试用例设计;(2) 对测试用例进行优化设计;三、 背景知识(一)边界值测试1 边界值分析边界值分析是考虑边界条件而选取测试用例的一种功能测试方法。边界值分析关注输入空间的边界,以标识测试用例,因为错误更可能出现在输入变量的极值附近。边界值分析的基本思想是:使用在最小值、略高于最小值、正常值、略低于最大值和最大值处取输入变量值。2健壮性测试健壮性是指在异常情况下,软件还能正常运行的能力。健壮性考虑的主要部分是预期输出,而不是输入。健壮性测试是边界值分析的一种简单扩展。除

2、了变量的5个边界分析取值还要考虑略超过最大值(max)和略小于最小值(min)时的情况。3 最坏情况测试最坏情况测试将意味着更大工作量,n变量函数的最坏情况测试会产生5的n次方个测试用例,而边界值分析只产生4n+1个测试用例。(二)基于决策表的测试决策表适合描述不同条件集合下采取行动的若干组合的情况。使用决策表标识测试用例,则把条件解释为输入,行动解释为输出。有时条件最终引用输入的等价类,行为引用被测试软件的主要功能处理部分,规则解释为测试用例。对于有限条目决策表,如果有n个条件,则必须有2条规则。如果不关心条目实际地表明条件是不相关的,则没有不关心条目的规则统计为1条规则,规则中每出现一个不

3、关心条目,该规则数乘一次2。四、 实验设备主流PC机一套,要求安装windows操作系统、Visual Studio2010或Eclipse开发工具和OFFICE工具五、 实验内容NextDate函数根据下面给出的规格说明,分别利用决策表方法,给出足够的测试用例并根据用例执行测试。NextDate函数包含三个变量:Month(月份)、day(日期)和year(年),函数的输出为输入日期后一天的日期。例如,输入为2007年9月9日,则函数的输出为2007年9月10日。要求输入变量month、day和year均为整数,并且满足下列条件:(1)1<=month<=12;(2)1<=

4、day<=31;(3)1912<=year<=2050C语言程序JAVA程序界面六、 实验步骤(1) 首先根据题目要求编写nextday功能函数;(2) 根据功能性测试技术设计测试用例,主要考虑决策表测试技术:分析条件桩和动作桩 输入:-Month-Day-Year为获得下一个日期,NextDate函数需执行的操作只有如下5种:-day变量加1-day变量复位为1-month变量加1-month变量复位为1-year变量加1考虑规则个数:M1 = 月份:每月有30天 M2 = 月份:每月有31天,12月除外 M3 = 月份:此月是12月 M4 = 月份:此月是2月D1 = 日

5、期:1日期27D2 = 日期:日期=28D3 = 日期:日期=29D4 = 日期:日期=30D5 = 日期:日期=31Y1 = 年:年是闰年Y2 = 年:年是平年制定初始决策表:1234567891011121314.22条件桩Month在M1Day在D1Year在-动作桩不可能Day加1Day复位Month加1Month复位Year加1化简决策表:12345678910111213条件桩Month在Day在Year在动作桩不可能Day加1Day复位Month加1Month复位Year加1(3) 设计测试用例用例ID年份月份日期期望输出实际结果120014152001-04-162345678

6、910111213七、 实验报告要求(1)完成初始决策表和化简决策表,并设计测试用例,记录实验结果;(2)总结决策表设计测试用例的步骤NextDay核心代码package com.example.nextday;import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swin

7、g.JOptionPane;import javax.swing.JTextField;public class NextDay extends JFrame implements ActionListener private JTextField year = null;private JTextField month = null;private JTextField day = null;private JTextField nextDate = null;private JButton comfir = null;private JButton clear = null;public

8、NextDay()add(new JLabel("年:");year = new JTextField(3);add(year);add(new JLabel("月:");month = new JTextField(2);add(month);add(new JLabel("日:");day = new JTextField(2);add(day);add(new JLabel("NextDate:");nextDate = new JTextField(10);nextDate.setEditable(fals

9、e);add(nextDate);comfir = new JButton("下一天");clear = new JButton("清除");add(comfir);add(clear);comfir.addActionListener(this);clear.addActionListener(this);setResizable(false);setLayout(new FlowLayout();setBounds(0, 0, 250, 300);setVisible(true);/* * 判断是否为闰年 * param year * return

10、*/public boolean leap(int year) if (year%4 = 0 && year%100 != 0) | year%400 = 0) return true;else return false;Overridepublic void actionPerformed(ActionEvent e) / TODO Auto-generated method stubif(e.getSource() = comfir)int y = Integer.parseInt(year.getText().trim();int m = Integer.parseInt

11、(month.getText().trim();int d = Integer.parseInt(day.getText().trim();if(y >= 1970 && y <= 3000)&&(m >= 1 && m <= 12)&&(d >= 1 && d <= 31)/if(m=1)|(m=3)|(m=5)|(m=7)|(m=8)|(m=10)|(m=12)/对12月的处理if(m=12)if(d<31)nextDate.setText(y+"-"

12、;+m+"-"+(d+1);else nextDate.setText(y+1)+"-"+1+"-"+1);/对1、3、5、7、8、10月份的处理else if(d<31)nextDate.setText(y+"-"+m+"-"+(d+1);else nextDate.setText(y+"-"+(m+1)+"-"+1);else if(m=2)if(leap(y)if(d<30)if(d<29)nextDate.setText(y+&q

13、uot;-"+m+"-"+(d+1);else nextDate.setText(y+"-"+(m+1)+"-"+1);else JOptionPane.showMessageDialog(this, "输入日期有误","Erroe", JOptionPane.ERROR_MESSAGE);year.setText("");month.setText("");day.setText("");else /平年的处理if(d<

14、;29)if(d<28)nextDate.setText(y+"-"+m+"-"+(d+1);else nextDate.setText(y+"-"+(m+1)+"-"+1);else JOptionPane.showMessageDialog(this, "输入日期有误","Erroe", JOptionPane.ERROR_MESSAGE);year.setText("");month.setText("");day.setT

15、ext("");else /不满足输入条件JOptionPane.showMessageDialog(this, "输入日期有误","Erroe", JOptionPane.ERROR_MESSAGE);year.setText("");month.setText("");day.setText("");if(e.getSource()=clear)year.setText("");month.setText("");day.setTe

16、xt("");/* * param args */public static void main(String args) / TODO Auto-generated method stubnew NextDay();C+代码:#include <iostream> #include <string> using namespace std; int main() string ntime; int tmp; while(1) cout<< "请输入日期,例如(0712-02-12)" << endl; l

17、oop: cin>>ntime; while(ntime.length()!=10) cout<<"您的输入有误,请重新输入日期,例如(0712-02-12)"<<endl; goto loop; while(ntime4!='-'|ntime7!='-') cout<<"您的输入格式有误,请重新输入日期,例如(0712-02-12)"<<endl; goto loop; while(ntime0='0'&&ntime1='

18、0'&&ntime2='0'&&ntime3='0') cout<<"您的年份输入有误,请重新输入日期,例如(0712-02-12)"<<endl; goto loop; while(ntime5>='2'|(ntime5='1'&&ntime6>='3') cout<<"您的月份输入有误,请重新输入日期,例如(0712-02-12)"<<endl; goto

19、loop; while(ntime5='0'&&ntime6='0') cout<<"您的月份输入有误,请重新输入日期,例如(0712-02-12)"<<endl; goto loop; while(ntime8='3'&&ntime9>='2') cout<<"您的天数输入有误,请重新输入日期,例如(0712-02-12)"<<endl; goto loop; while(ntime8='0

20、9;&&ntime9='0') cout<<"您的天数输入有误,请重新输入日期,例如(0712-02-12)"<<endl; goto loop; while(ntime5='1'&&(ntime6='0'|ntime6='2')|ntime6='1'|ntime6='3'|ntime6='5'|ntime6='7'|ntime6='8')&&ntime8=&#

21、39;3'&&ntime9>='2')|(ntime5='0'&&ntime6='2'&&ntime8>='3') cout<<"您的天数输入有误,请重新输入日期,例如(0712-02-12)"<<endl; goto loop; while(ntime5='1'&&ntime6='1')|(ntime5='0'&&(ntime6='

22、4'|ntime6='6'|ntime6='9')&&(ntime8='3'&&ntime9>='1') cout<<"您的天数输入有误,请重新输入日期,例如(0712-02-12)"<<endl; goto loop; while(ntime0='9'&&ntime2='9'&&ntime3='9'&&ntime1='9'&

23、;&ntime5='1'&&ntime6='2'&&ntime8='3'&&ntime9='1') cout<<"您的输入超出范围,请重新输入日期,例如(0712-02-12)"<<endl; goto loop; for(int i=0; i<ntime length(); i+) if(ntimei>='10'|ntimei<'0')&&ntimei!='

24、-') cout<<"您的年份输入有误1,请重新输入日期,例如(0712-02-12)"<<endl; goto loop; if(ntime8<'2'|(ntime8='2'&&ntime9<='7') if(ntime9='9') ntime9='0' ntime8=ntime8+1; else ntime9=ntime9+1; cout<<"nextday为:"<<ntime<&l

25、t;endl; else if(ntime8='2'&&ntime9>='8') if(ntime5='0'&&ntime6='2') tmp=(ntime0-48)*1000+(ntime1-48)*100+(ntime2-48)*10+ntime3-48; if(tmp%400=0|(tmp%4=0&&tmp%100!=0) if(ntime8='2'&&ntime9='9') ntime6=ntime6+1; ntime8=

26、'0' ntime9='1' else ntime9=ntime9+1; cout<<"nextday为:"<<ntime<<endl; else if(ntime9='9') cout<<"您的输入有误,这一年的2月没有29天"<<endl; cout<< "请输入日期,例如(0712-02-12)" << endl; goto loop; else ntime6=ntime6+1; ntime8='0' ntime9='1' cout<<"nextday为:"<<ntime<<endl; else if(ntime5='1'&&ntime6='1')|(ntime5='0'&&(ntime6='4'|ntime6='6'|ntime6=&#

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论