实验二+166+张珍珍

测试链接:http://www.cnblogs.com/zbxun/p/6628545.html

实验二结构性测试(4学时)

一、实验目的

掌握基于覆盖理论与基本路径的基本白盒测试方法和实践

二、实验要求

运用逻辑覆盖测试的覆盖准则设计被测程序的测试用例,并运行测试用例检查程序的正确与否,给出程序缺陷小结。

三、实验内容

根据各位同学自己的被测程序,分别作出各类白盒测试技术的用例设计和相应的Junit脚本。

所有的覆盖的技术:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖、路径覆盖,基本路径测试方法。

包括的内容有:

1) 被测原代码

2)依据覆盖技术,测试用例列表:

3)相应Junit测试脚本、执行结果

4)给出测试参数化和打包测试的脚本,并生成执行结果

四、实验步骤

1) 被测原代码

1   Input(a,b,c)

2   String result;

3   if( a>=1 &&a<=100&&b>=1&&b<=100&&c>=1&&c<=100){

4     if(a<b+c &&b<a+c&& c<a+b){

5        if(a==b || a==c||b==c){

6          if(a==b &&b==c)

7            result = "等边三角形";

8         else

9                    result = "等腰三角形";

10      }else if(a*a+b*b==c*c || b*b+c*c==a*a || a*a+c*c==b*b){

11        result = "直角三角形";

12      }else{

13       result = "一般三角形";

14      }

15    }else{

16      result = "不构成三角形";

17    }

18   }else{

19    result = "边的值不在范围内!";

20   }

21   OutPut(result)

2)依据覆盖技术的测试用例:

程序图  :

DD-路径图:

DD-路径(只压缩链路经)


程序图节点


DD-路径


1,2


A


3


B


4


C


5


D


6


E


7


F


8,9


G


10


H


11


I


12,13,14


J


15,16,17


K


18,19,20


L


21


M

(I)语句覆盖:

A-B-C-D-E-F-M和A-B-C-D-E-G-M

和A-B-C-D-H-I-M和A-B-C-D-H-J-M

和A-B-C-K-M和A-B-L-M

测试用例:


用例ID


输入值


执行路径


预期输出


a


b


c


result


1


3


3


3


A-B-C-D-E-F-M


等边三角形


2


3


3


4


A-B-C-D-E-G-M


等腰三角形


3


3


4


5


A-B-C-D-H-I-M


直角三角形


4


3


4


6


A-B-C-D-H-J-M


一般三角形


5


1


1


3


A-B-C-K-M


不构成三角形


6


101


99


99


A-B-L-M


边的值不在范围内!

(II)分支覆盖(判断覆盖):

A-B-C-D-E-F-M和A-B-C-D-E-G-M

和A-B-C-D-H-I-M和A-B-C-D-H-J-M

和A-B-C-K-M和A-B-L-M

测试用例:


用例ID


输入值


执行路径


预期输出


a


b


c


result


1


3


3


3


A-B-C-D-E-F-M


等边三角形


2


3


3


4


A-B-C-D-E-G-M


等腰三角形


3


3


4


5


A-B-C-D-H-I-M


直角三角形


4


3


4


6


A-B-C-D-H-J-M


一般三角形


5


1


1


3


A-B-C-K-M


不构成三角形


6


101


99


99


A-B-L-M


边的值不在范围内!

(III)路径覆盖:

A-B-C-D-E-F-M和A-B-C-D-E-G-M

和A-B-C-D-H-I-M和A-B-C-D-H-J-M

和A-B-C-K-M和A-B-L-M

测试用例:


用例ID


输入值


执行路径


预期输出


a


b


c


result


1


3


3


3


A-B-C-D-E-F-M


等边三角形


2


3


3


4


A-B-C-D-E-G-M


等腰三角形


3


3


4


5


A-B-C-D-H-I-M


直角三角形


4


3


4


6


A-B-C-D-H-J-M


一般三角形


5


1


1


3


A-B-C-K-M


不构成三角形


6


101


99


99


A-B-L-M


边的值不在范围内!

(IV)条件覆盖:各个条件取真或假的可能至少执行一次


编号


a>=1


a<=100


b>=1


b<=100


c>=1


c<=100


a>=1 &&a<=100&&b>=1&&b<=100&&c>=1&&c<=100


覆盖路径


1


T


F


F


F


F


F


F


B-C


2


T


T


F


F


F


F


F


B-L


3


T


T


T


F


F


F


F


B-L


4


T


T


T


T


F


F


F


B-L


5


T


T


T


T


T


F


F


B-L


6


T


T


T


T


T


T


F


B-L


7


T


T


T


T


T


T


T


B-C


总共2^6总选择


编号


a<b+c


b<a+c


c<a+b


a<b+c &&b<a+c&& c<a+b


覆盖路径


1


T


F


F


F


C-K


2


T


T


F


F


C-K


3


T


T


T


T


C-D


4


T


F


T


F


C-K


5


F


F


F


F


C-K


6


F


T


F


F


C-K


7


F


F


T


F


C-K


8


F


T


T


F


C-K


编号


a==b


a==c


b==c


a==b || a==c||b==c


覆盖路径


1


T


F


F


T


D-E


2


T


T


F


T


D-E


3


T


T


T


T


D-E


4


T


F


T


T


D-E


5


F


F


F


F


D-H


6


F


T


F


T


D-E


7


F


F


T


T


D-E


8


F


T


T


T


D-E


编号


a==b


b==c


a==b &&b==c


覆盖路径


1


F


F


F


E-G


2


F


T


F


E-G


3


T


F


F


E-G


4


T


T


T


E-F


编号


a*a+b*b==c*c


b*b+c*c==a*a


a*a+c*c==b*b


a*a+b*b==c*c || b*b+c*c==a*a || a*a+c*c==b*b


覆盖路径


1


T


F


F


T


H-I


2


T


T


F


T


H-I


3


T


T


T


T


H-I


4


T


F


T


T


H-I


5


F


F


F


F


H-J


6


F


T


F


T


H-I


7


F


F


T


T


H-I


8


F


T


T


T


H-I

测试用例:


用例ID


输入值


执行路径


预期输出


a


b


c


result


1


3


3


3


A-B-C-D-E-F-M


等边三角形


2


3


3


4


A-B-C-D-E-G-M


等腰三角形


3


3


4


5


A-B-C-D-H-I-M


直角三角形


4


3


4


6


A-B-C-D-H-J-M


一般三角形


5


1


1


3


A-B-C-K-M


不构成三角形


6


101


99


99


A-B-L-M


边的值不在范围内!


共2^17种

3)相应Junit测试脚本:

import static org.junit.Assert.*;

import org.junit.BeforeClass;

import org.junit.Test;

public class test1Test {

@BeforeClass

public static void setUpBeforeClass() throws Exception {

}

@Test

public final void testTriangle() {

//fail("Not yet implemented"); // TODO

assertEquals("等边三角形",test1.triangle(3,3,3));

assertEquals("等腰三角形",test1.triangle(3,3,4));

assertEquals("直角三角形",test1.triangle(3,4,5));

assertEquals("一般三角形",test1.triangle(3,4,6));

assertEquals("不构成三角形",test1.triangle(1,1,3));

assertEquals("边的值不在范围内!",test1.triangle(101,99,99));

}

}

五 、测试小结:

1.测试找到的缺陷清单:无

2. 对源代码的修改建议

    (1)对源代码的修改情况:a==b &&b==c && a==c冗余,改成a==b &&b==c

    (2)添加控制程序退出,而不是用,while(true)无限循环

3.测试总结与心得体会

  (1)条件覆盖中会随着一个判断语句中条件的增多呈指数上升,很难手工全测试完。

(2)各种覆盖方式容易重合,造成测试冗余。

  (3)测试人员很难说服开发人员修改他觉得没必要改,但其实很重要的修改。

时间: 2024-11-10 13:54:16

实验二+166+张珍珍的相关文章

实验四+166+张珍珍

实验四 功能自动化测试(2学时)   一.实验目的 1) 学习QTP工具的使用 2)了解黑盒自动化测试 二.实验要求 (1)对被测程序进行黑盒测试用例设计 (2)对QTP的飞机订票系统的任一界面或控件实现自动化测试.(测试的具体自选) (3)写出该程序的缺陷. 三.实验内容 1.对QTP的样例小程序飞机订票系统,实现自动化测试.(学号被3整除,测3a;余1,测3b:余2,测4a) 2.要求: 1)写出飞机订票系统的被测需求. 自行选择需要测试的部分,根据自己的能力,可大,可小. 描述,被测程序,

实验二 164 张增进

一.实验目的 掌握基于覆盖理论与基本路径的基本白盒测试方法和实践 二.实验要求 运用逻辑覆盖测试的覆盖准则设计被测程序的测试用例,并运行测试用例检查程序的正确与否,给出程序缺陷小结. 三.实验内容 根据各位同学自己的被测程序,分别作出各类白盒测试技术的用例设计和相应的Junit脚本. 所有的覆盖的技术:语句覆盖.判定覆盖.条件覆盖.判定/条件覆盖.组合覆盖.路径覆盖,基本路径测试方法. 包括的内容有: 1) 被测原代码: public class CodeModification { priva

1111实验二 作业调度模拟实验

实验二.作业调度模拟实验 物联网工程 张怡 201306104149 一.实验目的  (1)加深对作业调度算法的理解: (2)进行程序设计的训练. 二.实验内容和要求 1.至少用三种调度算法: 1) 采用先来先服务(FCFS)调度算法,即按作业到达的先后次序进行调度.总是首先调度在系统中等待时间最长的作业. 2) 短作业优先 (SJF) 调度算法,优先调度要求运行时间最短的作业. 3) 响应比高者优先(HRRN)调度算法,为每个作业设置一个优先权(响应比),调度之前先计算各作业的优先权,优先数高

实验二十四:SD卡模块

  驱动SD卡是件容易让人抓狂的事情,驱动SD卡好比SDRAM执行页读写,SD卡虽然不及SDRAM的麻烦要求(时序参数),但是驱动过程却有猥琐操作.除此此外,描述语言只要稍微比较一下C语言,描述语言一定会泪流满面,因为嵌套循环,嵌套判断,或者嵌套函数等都是它的痛.. 史莱姆模块是多模块建模的通病,意指结构能力非常脆弱的模块,暴力的嵌套行为往往会击垮模块的美丽身躯,好让脆弱结构更加脆弱还有惨不忍睹,最终搞垮模块的表达能力.描述语言预想驾驭SD卡,关键的地方就是如何提升模块的结构能力.简单而言,描述

【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验二十三:DS1302模块

实验二十三:DS1302模块 DS1302这只硬件虽然曾在<建模篇>介绍过,所以重复的内容请怒笔者懒惰唠叨了,笔者尽可以一笑带过,废话少说让我们进入正题吧.DS1302是执行事实时钟(Real Time Clock)的硬件,采用SPI传输. 表示23.1 访问(地址)字节. [7] [6] [5] [4] [3] [2] [1] [0] 1 A5 A4 A3 A2 A1 A0 R/W DS1302作为从机任由主机蹂躏 ... 啊,是任由主机访问才对.对此,访问便有方向之分.如表23.1所示,访

实验二:关于梭哈游戏的代码的测试

实验二:关于梭哈游戏的代码的测试 一.题目简介 Github基本源代码控制方法 利用Junit4进行程序模块的测试,回归测试 编码规范的考量 C/Java等基本程序设计语言的运用. (考虑到有些同学的基础参差不齐) 实现纸牌游戏梭哈 二.个人github地址 https://github.com/qingfengsuixin/test/blob/master/ShowHand 三.所设计的模块测试用例.测试结果截图: package com.langsin.text2; import java.

操作系统(实验二、作业调度模拟程序实验)

实验二.作业调度模拟程序实验 专业 商业软件工程   姓名 丘惠敏 学号 201406114203 一.        实验目的   (1)加深对作业调度算法的理解: (2)进行程序设计的训练. 二.        实验内容和要求 用高级语言编写一个或多个作业调度的模拟程序. 单道批处理系统的作业调度程序.作业一投入运行,它就占有计算机的一切资源直到作业完成为止,因此调度作业时不必考虑它所需要的资源是否得到满足,它所运行的时间等因素. 三.        实验方法.步骤及结果测试   1.   

“Linux内核分析”实验二报告

张文俊 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.第二周学习内容总结 1.计算机工作“三大法宝” 首先,计算机工作原理最重要的三个内容就是:存储程序计算机工作模型.中断机制和函数调用堆栈. 存储程序计算机工作模型是计算机系统最最基础性的逻辑结构: 中断机制是多道程序操作系统的基点,没有中断机制程序只能从头一直运行结束才有可能开始运行其他程序: 函数调用堆栈是高级语言得以

1111《操作系统教程》实验二 作业调度模拟程序

实验二 作业调度模拟程序 一.目的和要求 1. 实验目的 (1)加深对作业调度算法的理解: (2)进行程序设计的训练. 2.实验要求 用高级语言编写一个或多个作业调度的模拟程序. 单道批处理系统的作业调度程序.作业一投入运行,它就占有计算机的一切资源直到作业完成为止,因此调度作业时不必考虑它所需要的资源是否得到满足,它所运行的时间等因素. 作业调度算法: 1) 采用先来先服务(FCFS)调度算法,即按作业到达的先后次序进行调度.总是首先调度在系统中等待时间最长的作业. 2) 短作业优先 (SJF