基于逻辑覆盖方法的测试用例设计与执行doc.docx

上传人:b****6 文档编号:8364241 上传时间:2023-01-30 格式:DOCX 页数:19 大小:57.13KB
下载 相关 举报
基于逻辑覆盖方法的测试用例设计与执行doc.docx_第1页
第1页 / 共19页
基于逻辑覆盖方法的测试用例设计与执行doc.docx_第2页
第2页 / 共19页
基于逻辑覆盖方法的测试用例设计与执行doc.docx_第3页
第3页 / 共19页
基于逻辑覆盖方法的测试用例设计与执行doc.docx_第4页
第4页 / 共19页
基于逻辑覆盖方法的测试用例设计与执行doc.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

基于逻辑覆盖方法的测试用例设计与执行doc.docx

《基于逻辑覆盖方法的测试用例设计与执行doc.docx》由会员分享,可在线阅读,更多相关《基于逻辑覆盖方法的测试用例设计与执行doc.docx(19页珍藏版)》请在冰豆网上搜索。

基于逻辑覆盖方法的测试用例设计与执行doc.docx

基于逻辑覆盖方法的测试用例设计与执行doc

脂无r修沆

基于逻辑覆盖方法的测试用例设计

与执行

题目:

多功能电子计时器

课程名称:

软件测试方法和技术

院系:

XX学院

专业班级:

mx

组号:

m

小组成员:

XXXXXXXXX

实验报告成绩:

指导教师:

XXX

2017年X月X日

一、被测程序介绍3

1.1程序背景3

1.2程序功能3

二、被测程序主要测试代码3

三、测试代码的程序流程图4

3.1程序流程图4

四、基于逻辑覆盖方法的测试用例设计7

4.1判定覆盖7

4.2条件覆盖7

4.3判定.条件覆盖7

4.4条件组合覆盖8

五、程序源代码8

六、程序运行截图16

七、实验总结16

参考文献17

一、被测程序介绍

LJL住ATR早

该程序是一个图形界面的简单的java小时钟嵌套一个可以排序的多功能秒表,具有良好的、简洁的界面。

它是图形界面、线程、流与文件等技术的综合运用,其界面主要采用了java,awt包,javax.swing等。

程序实现了电了时钟的基本功能。

可以从电脑上获得准确的背景时间,其时间精确到秒。

时钟的界面静中带动,秒表跳动。

使用人员能快捷简单地进行操作秒表,即时准确地计算时间,对人们的生活有一定的帮助。

1.2程序功能

功能1

获得准确的背景时间,这时小时钟最基本的功能。

功能2

按下“start”键,开始计时,秒表跳动。

功能3

按下“stop”键,停止计时,秒表的时间停留在按下“停止”键的那一刻。

功能4

按下“sort”键,按历时最短的顺序进行排序。

功能5

按下“reset”键,秒表归零。

二、被测程序主要测试代码

if(hour<=9)

{

timelnfo+=zz0//+hour+//:

}

else

{

timelnfo+=hour+z,:

";

if(minute〈=9)timelnfo+=〃O〃+minute+〃:

〃;

else

{

timeInfo+=/,,,+minute+z/:

";

}

if(second〈二9)

{

timeTnfo=〃0〃+second;

}

else

timelnfo+^second;

三、测试代码的程序流程图

3.1程序流程图

根据上述的程序代码,绘制如图1所示的程序流程图,为了方便分析测试用例,将图1简化为图2,其中:

条件A=(hour<=9}

条件B={minute<=9}

条件C={second<=9}

语句O=(timelnfo+=hour+n:

n)

语句P={timeInfo+=””+minute+”:

”}

语句Q={timelnfo+=second}

语句X={timelnfo+=”0”+hour+”:

”}

语句Y=(timeInfo+=,'0,,+minute+,,:

M}

语句Z={timelnfo="0"+second)

开始

输出timeinfo

四、基于逻辑覆盖方法的测试用例设计

4.1判定覆盖

判定覆盖:

设计若干个测试用例,运行所测试程序,使得程序中每个判断的取真分支和取假分支至少经历一次。

根据判定覆盖的思想,就是要设计相应的测试用例,以使判定A、B、C分别为真和假,如表1第一个用例覆盖了A=T,B=T,C=T,第二个用例覆盖了A=F,B=F,C=F,从而达到判定覆盖。

如下为判定覆盖的测试用例表lo

测试用例

取值条件

具体取值条件

判定条件

输入:

时=5,分=5渺=5输出:

05:

05:

05

T1,T2,T3

hour<=9uninute<=9,second<=9

a=t,b=t,c=t

输入:

时=10,分=10,秒=10

输出:

10:

10:

10

F1,F2,F3

hour>9,minute>9,second>9

A=F,B=F,C=F

表1

4.2条件覆盖

条件覆盖:

设计若干个测试用例,运行所测试程序,使得程序中每个判断的每个条件的取值至少一次。

对于第一个判定条件A,可将其分解成以下条件:

条件hour<=9:

取真时为T1,取假时为F1。

对于第二个判定条件B,可分解成:

条件minute<=9:

取真时为T2,取假时为F2。

对于第三个判定条件C,可分解成:

条件second<=9:

取真时为T3,取假时为F3。

根据条件覆盖的思想,选择T1,T2,T3和F1,F2,F3组合,覆盖了3个条件。

如下为条件覆盖的测试用例表2。

测试用例

取值条件

具体取值条件

输入:

时二6,分二6,秒二6输出:

06:

06:

06

T1,T2,T3

hour<=9,minute<=9,second<=9

输入:

时=11,分=11,秒=11

输出:

11:

11:

11

F1,F2,F3

hour>9,minute>9,second>9

表2

4.3判定■条件覆盖

判定■条件覆盖:

设计足够的测试用例,使得判断中的每个条件的所有可能取值至少执行一次,同时每个判断本身的所有可能判断结果至少执行一次。

即要求各个判断的所有可能的条件取值组合至少执行一次。

判定覆盖的基本思路即至少保证A、B、C取真和取假各一次,并且要保证6个条件取值(Tl,Fl,T2,F2,T3,F3)也至少被执行一次。

如下为判定-条件覆盖的测试用例表3。

测试用例

取值条件

具体取值条件

判定条件

输入:

时=7,分二7,秒二7输出:

07:

07:

07

T1,T2,T3

hour<=9,minute<=9,second<=9

a=t,b=t,c=t

输入:

时=12,分=12,秒=12输出:

12:

12:

12

F1,F2,F3

hour>9,minute>9,second>9

A=F,B=F,C=F

表3

4.4条件组合覆盖

条件组合覆盖:

设计足够的测试用例,运行所测试程序,使得每个判断的所有可能的条件取值组合至少执行一次。

即A、B、C每个条件都出现“真”、“假"两种结果,并且让这些结果的所有可能的组合都至少出现一次。

按照条件组合覆盖的思想,设计存在的6种组合条件示例如表4所示。

组合编号

覆盖条件取值

判定条件取值

判定•条件组合

1

T1

A=T

hour<=9,A取真

2

F1

A=F

hour>9,A取假

3

T2

B=T

minute<=9,B取真

4

F2

B=F

minute>9,B取假

5

T3

C=T

second<=9,C取真

6

F3

C=F

second>9,C取假

表4

由以上6种组合条件,设计能覆盖所有这些组合的测试用例,如表5所示。

测试用例

覆盖条件

覆盖路径

覆盖组合

输入:

时二8,分二8,秒二8输出:

08:

08:

08

T1,T2,T3

Pl(l・3・5・7)

1,3,5

输入:

时二20,分二20,秒二20输出:

20:

20:

20

F1,F2,F3

P2(l-2-4-6)

2,4,6

表5

packagetest4;

importjava.awt.*;

importjavax.swing.*;

importjava.util.*;

importjava.text.SimpleDateFormat;

importjava.awt.event.*;

publicclassjishiqi_2extendsJFrameimplementsRunnable,ActionListener

JPaneljplJp2;

JLabeljlbl,jlb2,jlb3;

JButtonjb1,jb2,jb3,jb4,jb5,jb6;

JButtonjbll,jb22;

JTextAreajtal,jta2;

JTextFieldjtf1jtf2,jtf3,jtf4,jtf5Jtf6,jtf7jtf8;

Threadclock;

JScrollPanejsp;

publicjishiqi_2()

{

〃对象的实例化

jpl=newJPanel();

jp2=newJPanel();

jlbl=newJLabel("NowTime");

jib1.setFont(newFont("楷体",Font.BOLD,20));

jib1.setForeground(Color.RED);

jlb2=newJLabel("recordln);

jlb2.setFont(newFont("楷体",Font.BOLD,l1));

jlb2.setForeground(Co!

or.RED);

jbl=newJButton(HstartH);

jbl.setFont(newFont("楷体'Font.BOLD,10));

jb1.setForeground(Color.RED);

jb2二newJButton(Hstopn);

jb2.setFont(newFont("楷体”,Font.BOLD,10));

jb2.setForeground(Color.RED);

jb3=newJButton("usetime");

jb3.setFont(newFont。

楷体”,Font.BOLD,10));

jb3.setForeground(Color.RED);

jbll=newJButton("resetn);

jbll.setFont(newFont("楷体”,Font.BOLD,13));

jbl1.setForeground(Color.RED);

jb11.setBounds(280,58,10,15);

jb22=newJButton("sortn);

jb22.setFont(newFont。

楷体二Font.BOLD,13));

jb22.setForeground(Color.RED);

jbl.addActionListener(this);

jb2.addActionListener(this);

jb3.addActionListener(this);

jlb3=newJLabel(Hrecord2");

jlb3.setFont(newFont("楷体",Font.BOLD,l1));

jlb3.setForeground(Co!

or.RED);

jb4=newJButton(HstartH);

jb4.setFont(newFont("楷体”,Font.BOLD,10));

jb4.setForeground(Color.RED);

jb5=newJButton(nstop");

jb5.setFont(newFont("楷体”,Font.BOLD,10));jb5.setForeground(ColorRED);

jb6=newJButton(Husetime”);

jb6.setFont(newFont(u楷体”,Font.BOLD,10));

jb6.setForeground(Color.RED);

〃注册监听

jb4.addActionListener(this);

jb5.addActionListener(this);

jb6.addActionListener(this);

jbll.addActionListener(this);

jb22.addActionListener(this);

〃实例化对象

jtal=newJTextArea("”,2,10);

jtfl=newJTextField(””,5);

jtf2=newJTextField(n”,5);

jtf3=newJTextField(n”,2);

jtf4=newJTextField("n,5);

jtf5=newJTextField(Hn,5);

jtf6=newJTextField(H”,2);

jtf7=newJTextField(”S”,2);

jtf8=newJTextFieId(”S”,2);

jtf7.setFont(newFont("楷体",Font.BOLD,10));

jtf7.setForeground(Color.RED);

jtf8.setFont(newFont。

'楷体”,Font.BOLD,10));

jtf8.setForeground(Color.RED);

jta1.setBackground(Color.black);

jtal.setBorder(BorderFactory.createLineBorder(Color.red));

jta2=newJTextArea(n记录排序:

”,2,8);

jta2.setEditable(false);

jta2.setFont(newFont(H楷体H,Font.BOLD,l7));

jta2.setBackground(Color.red);

jp2.setBackground(Color.black);

jsp=newJScrollPane();

jsp.setViewportView(jta2);

〃将各组件加入面板容器中

jpl.add(jlbl);

jpl.add(jtal);

jpl.add(jbll);

jpl.add(jb22);

jp2.add(jlb2);

jp2.add(jbl);

jp2.add(jtfl);

jp2.add(jb2);

jp2.add(jtf2);

jp2.add(jb3);

jp2.add(jtf3);

jp2.add(jtf7);

jp2.add(jlb3);

jp2.add(jb4);

jp2.add(jtf4);

jp2.add(jb5);

jp2.add(jtf5);

jp2.add(jb6);

jp2.add(jtf6);

jp2.add(jtf8);

〃将个容器加入JFrame这个容器中

this.add(jpl);

this.add(jp2);

this.add(jsp);

this.add(jp2);

〃设置界面管理布局

jp1-setBackground(Color.black);

this.setBackground(Color.black);

BorderLayoutbordei-newBorderLayout();

this.setLayout(border);

this.add(jp1,BorderLayout.NORTH);

this.add(jp2,BorderLayout.CENTER);

this-add(jsp,BorderLayout.EAST);

this.setTitle(H多功能计时器,

startQ;

this.setSize(580,200);

this.setLocation(200,150);

this.setResizable(false);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setVisible(true);

}

publicvoidpaint(Graphicsg)〃绘画时间

{

Graphics2Dg2=(Graphics2D)g;

super.paint(g2);

Calendarnow=newGregorianCalendar();

Stringtimeinfo二””;

inthour=now.get(Calendar.HOUR_OF_DAY);

intminute=now.get(Calendar.MINUTE);

intsecond=now.get(Calendar.SECOND);

if(hour<=9)

{

timelnfo+=”0”+hour+”:

”;

}

else

{

timelnfo+=hour+'*:

";

}

if(minute<=9)

{

timelnfo+二”0”+minute+”:

”;

}

else

{

timelnfb+=minute+n:

";

}

if(second<=9)

{

timelnfo+=u0n+second;

}

else

{

timelnfo+=second;

}

g2.setFont(newFont("梏体”,Font.BOLD,20));

g2.setColor(Color.red);

g2.drawString(timeInfo,200,58);

publicvoidstart()

{

if(clock==null)

{

clock=newThread(this);

clock.start();

}

}

publicvoidrun()

{

while(clock!

=null)

{

repaintQ;

try

{

Thread.sleep(1000);

}

catch(Exceptione)

{

e.printStackTrace();

publicvoidactionPerformed(ActionEvente)〃事件处理机制{

Calendarnow=newGregorianCalendar();

Stringtimeinfo二””;

inthour=now.get(Calendar.HOUR_OF_DAY);

intminute=now.get(Calendar.MINUTE);

intsecond=now.get(Calendar.SECOND);

if(hour<=9)

{

timelnfo+=n0"+hour+n:

";

}

else

{

timelnfo+=hour+n:

”;

}

if(minute<=9)

timelnfo+二”0”+minute+”:

”;

else

timeInfo+=””+minute+":

”;

}

if(second<=9)

{

timelnfo="0n+second;

}

else

{

timelnfo+=second;

}

if(e.getSource()==jbl)

{

jtf1.setText(timeInfo+"");

jtf1.setFont(newFont("楷体H,Font.BOLD,l1));

jtf1.setForeground(Color.RED);

}

elseif(e.getSource()==jb2)

{

jtf2.setText(timeInfo+,H,);

jtf2.setFont(newFont("楷体",Font.BOLD,11));

jtf2.setForeground(Color.RED);

}

elseif(e.getSource()==jb3)

{

Stringdl=jtfl.getText();

Stringd2=jtf2.getText();

SimpleDateFormatsdf=newSimpleDateFormat(nhh:

mm:

ssn);

try

{

longm=(sdf.parse(d2).getTime())-(sdf.parse(dl).getTime());

longres1;

resl=m/1000;

jtf3.setText("''+res1);

jtf3.setFont(newFont("楷体二Font.BOLD」1));

jtf3.setForeground(Color.RED);

}

catch(Exceptione2)

{

e2.printStackTrace();

elseif(e.getSource()==jb4)

{

jtf4.setText(timeInfo+,H,);

jtf4.setFont(newFont("楷体",Font.BOLDJ1));

jtf4.setForeground(Color.RED);

}

elseif(e.getSource()==jb5)

{

jtf5.setText(timeInfo+"");

jtf5.setFont(newFont("楷体”,Font.BOLD,11));

jtf5.setForeground(Color.RED);

}

elseif(e.getSource()==jb6)

{

Stringd3=jtf4.getText();

Stringd4=jtf5.getText();

SimpleDateFormatsdf=newSimpleDateFormatC'hh:

mm:

ss");

try

{

longm=(sdf.parse(d4).getTime())-(sdf.parse(d3).getTime());

longres2;

res2=m/1000;

jtf6.setText(n,'+res2);

jtf6.setFont(newFont(n楷体H,Font.BOLD,l1));

jtf6.setForeground(Color.RED);

catch(Exceptione3)

{

e3.printstackTrace();

}

}

elseif(e.getSource()==jbl1)

{

jtfl.setText(,n,);

jtf2.setText(,,n);

jtf3.setText(,n,);

jtf4.setText(nn);

jtf5.setText(nn);

jtf6.setText(n");

}

elseif(e.getSource()==jb22)

intnuml,num2;

numl=Integer.parseInt(jtf3.getText());

num2=Integer.parseInt(jtf6.getText());

if(numl<=num2)

jta2.setText(n记录排序:

\r\nH+nrecordl”+”\r\n"+”record2”);

jta2.setFont(newFont("楷体二Font.BOLD,17));

jta2.setForeground(Color.black);

}

else

{

jta2.setText(n记录排序:

\r\n"+"record2”+"\r\n"+"recordl");

jta2.setFont(newFont("楷体二Font.BOLD,17));

jta2.setForeground(Color.black);

}

}

}

publicstaticvoidmain(String[largs)

{

jishiqi_2jsq=newjishiqi_2();

}

六、程序运行截图

国多功能计时SS

七、实验总结

通过这次基于逻辑覆盖方法的测试用例设计与执行的测

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

当前位置:首页 > 高等教育 > 工学

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

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