实验四 三角形组成问题程序的白盒测试
软件测试-判断三角形形状路径白盒测试
三角形白盒测试要求要求:,其他1 ) 自备 C 语言程序(可从 C 语言程序设计的教科书上摘录若干典型程序C++ 、C# 、Java 程序均可);#include <stdio.h>#include <stdlib.h>#include <math.h>int main(){int a,b,c;printf(" 输入三角形的三个边 :");scanf("%d %d %d",&a,&b,&c);if(a<=0||b<=0||c<=0)printf(" 不符合条件,请重新输入 a,b,c\n");else if(a+b<=c||abs(a-b)>=c)printf("不是三角形\n");else if(a==b&&a==c&&b==c)printf("这个图为等边三角形\n");else if(a==b||a==c||b==c)printf("这个图为等腰三角形\n");elseprintf("这个图为一般三角形\n");2)根据该程序绘制对应的程序流程图;/ 幟沖迈〃軾已等堆卄琳::矗歴# 输山养赠〃诚日等山/ / 输出水呈/3)分别根据程序流程图给出符合语句覆盖、判定覆盖、条件覆盖、路径覆盖以及判定/条件覆盖和条件组合覆盖的的测试用例以及预期的运行结果;语句覆盖判断覆盖条件覆盖判定1 : 1-1(a<=0) 1-2(b<=0) 1-3(c<=0)判定2: 2-1(a+b<=c) 2-2(|a-b|>=c) 判定3: 3-1(a==b)判定4: 4-1(a==c)判定5: 5-1(a==c)判定 6: 6-1(b==c)判定/条件覆盖、条件组合覆盖、路径覆盖4)根据程序流程图画出流图,并确定线性独立路径的基本集合,然后给出符合各集合的测试用例;路径1: 1-2-3路径2: 1-2-4-5-7-9-12-13路径3: 1-2-4-5-7-9-10-13路径4: 1-2-4-5-7-10-13 路径5: 1-2-4-5-8-10-13。
三角形基本路径覆盖测试 三角形白盒测试
三角形基本路径覆盖测试于名飞学号2220130799刘振昌学号2220130793陈诗明学号2220120200张超宁学号2220120210王永峰学号22201201931三角形基本路径覆盖测试对于上述三角形基本路径覆盖测试程序流程,根据条件判定来生成测试用例,得到的测试用例如下:用例输入取值覆盖路径case1 a=8, b=9, c=10 0→1→3→5→7→8→9→10→11case2 a=8, b=20, c=9 0→1→3→5→7→8→9→10→12case3 a=20, b=8, c=9 0→1→3→5→7→8→9→12case4 a=8, b=9, c=30 0→1→3→5→7→8→12case5 a=10, b=10, c=30 0→1→2→3→5→7→13→14→12case6 a=10, b=10, c=9 0→1→2→3→5→7→13→14→15case7 a=10, b=30, c=10 0→1→3→4→5→7→13→16→17→12case8 a=10, b=9, c=10 0→1→3→4→5→7→13→16→17→15case9 a=30, b=10, c=10 0→1→3→5→6→7→13→16→18→19→12case10 a=9, b=10, c=10 0→1→3→5→6→7→13→16→18→19→15case11 a=10, b=10, c=10 0→1→2→3→4→5→6→7→13→16→18→202开发环境操作系统: Window7开发环境: VS2008、C#运行环境: Window 2000/XP/2003/7/8、.net FrameWork 2.0屏幕分辨率要求大于1024x7683编程思路完成该系统,实现基本的判定条件和路径覆盖,从编程的角度来说比较简单,但为了能够实现较好的可视化效果,希望能够将程序执行路径的每一步分别顺序输出,并能够在可视化的流程图上动态展现出来。
黑盒及白盒测试(内含源代码)
黑盒测试实验报告一、三角形等价类分析二、实验源代码import java.io.*;class Trigon{static private double a,b,c;static public void main(String[] sss){try{InputStream in=System.in;InputStreamReader inRead=new InputStreamReader(in); BufferedReader read=new BufferedReader(inRead); System.out.println("输入三边值,每个值输入后回车"); a=Double.valueOf(read.readLine());b=Double.valueOf(read.readLine());c=Double.valueOf(read.readLine());}catch(IOException e){System.out.println("出现异常!");System.exit(0);}if(a<1 || a>100 || b<1 || b>100||c<1 ||c>100){System.out.println("出现异常!");}else{if(a+b<c || a+c<b || b+c<a){System.out.println("你输入的不能构成三角形");}else if(a==b || a==c || b==c){if(a==b && b==c) System.out.println("是等边");else System.out.println("是等腰");}else System.out.println("一般的三角形");}}}三、实验测试用例截图(1)(2)(3)(4)(5)(6)(7)(8)(9)(10)(11)(12)(13)(14)(15)注:所用软件JavaApplicationl-NetBeans白盒测试实验报告一、流程图二、设计测试用例(1)语句覆盖Test 1 2 1 5 OACI 你的输入不能构成三角形Test 2 3 4 5 OADEI 一般的三角形Test 3 3 3 4 OADFGI 是等腰Test 4 3 3 3 OADFHI 是等边Test 5 0 1 2 OBI 出现异常(2)判定覆盖(分支覆盖)a b c 路径输出结果Test 1 2 1 5 OACI 你的输入不能构成三角形Test 2 3 4 5 OADEI 一般的三角形Test 3 3 3 4 OADFGI 是等腰Test 4 3 3 3 OADFHI 是等边Test 5 0 1 2 OBI 出现异常(3)条件覆盖Test 1 2 1 5 OACI 你的输入不能构成三角形Test 2 3 4 5 OADEI 一般的三角形Test 3 3 3 4 OADFGI 是等腰Test 4 3 3 3 OADFHI 是等边Test 5 0 0 0 OBI 出现异常(4)判定/条件覆盖a b c 路径输出结果Test 1 2 1 5 OACI 你的输入不能构成三角形Test2 5 2 1 OACI 你的输入不能构成三角形Test 3 2 5 1 OACI 你的输入不能构成三角形Test 4 3 4 5 OADEI 一般的三角形Test 5 3 3 4 OADFGI 是等腰Test 6 4 3 3 OADFGI 是等腰Test 7 3 4 3 OADFGI 是等腰Test 8 3 3 3 OADFHI 是等边Test 9 0 1 2 OBI 出现异常Test 10 2 0 1 OBI 出现异常Test11 1 2 0 OBI 出现异常(5)路径覆盖a b c 路径输出结果Test 1 2 1 5 OACI 你的输入不能构成三角形Test 2 3 4 5 OADEI 一般的三角形Test 3 3 3 4 OADFGI 是等腰Test 4 3 3 3 OADFHI 是等边Test 5 0 1 2 OBI 出现异常。
实验四-三角形组成问题程序的白盒测试
辽宁工程技术大学上机实验报告实验分析续开始(a+b>c)&&(a+c>b)&&(b+c>a)a==b || a==c || b==cYa==c && a==b && b==cY不是三角形N普通三角形N等腰三角形N等边三角形Y结束abcdefg12345678图1-1 三角形组成问题程序流程图一.判定覆盖法1.判定覆盖:设计足够多的测试用例,使得程序中的每一个判断至少获得一次“真”和一次“假”,即使得程序流程图中的每一个真假分支至少被执行一次。
(1)测试用例表1-1 判定覆盖测试用例测试用例 a b c 判断语句1 判断语句2 判断语句3 执行路径测试用例1 5 5 5 真(T)真(T)真(T)abcd 测试用例2 2 4 1 假(F)——ag 测试用例3 2 4 5 真(T)假(F)—abe 测试用例4 6 6 2 真(T)真(T)假(F)abcf (2)测试用例运行结果截图测试用例1图1-2测试用例1实验分析续测试用例2图1-3测试用例2测试用例3图1-4测试用例3测试用例4图1-5测试用例4二.利用路径覆盖分析三角形组成问题基本路径测试方法(1)控制流图12654378图2-1 三角形组成的控制流图(2)环形复杂度方法一:V(G)=3(封闭区域)+1=4方法二:V(G)=10(边数)—8(节点)+2=4方法三:V(G)=3(判定节点1、2、3)+1=4实验分析续(3)独立路径根据上面的计算结果,可导出基本路径集,列出程序的独立路径,可得出程序段的的基本路径集中有4条独立路径,每条独立路径为一个独立的测试用例。
路径如下。
路径1:①→②→③→⑤→⑧路径2:①→②→③→⑥→⑧路径3:①→②→④→⑧路径4:①→⑦→⑧(4)设计测试用例根据(3)中的独立路径,设计测试用例输入数据和预期输出。
设计的测试用例如表2-1所示表2-1 设计的测试用例用例名称输入数据预期输出测试用例1 a=6 b=6 c=6 等边三角形测试用例2 a=8 b=8 c=3 等腰三角形测试用例3 a=2 b=3 c=4 普通三角形测试用例4 a=3 b=5 c=1 不是三角形(5)测试用例运行结果截图测试用例1图2-2测试用例1测试用例2图2-3测试用例2测试用例3图2-4测试用例3测试用例4图2-5测试用例4教师评语。
实验四三角形组成问题程序的白盒测试
辽宁工程技术大学上机实验报告结束 (8图1-1三角形组成问题程序流程图 •判定覆盖法1.判定覆盖:设计足够多的测试用例,使得程序中的每一个判断至少获得一次 真”和一次假”, 即使得程序流程图中的每一个真假分支至少被执行一次。
(1 )测试用例表1-1判定覆盖测试用例测试用例a bc 判断语句1 判断语句2 判断语句3 执行路径测试用例 1 5 5 5 真 (T) 真(T )「真(T ) abcd 测试用例 2 2 4 1 假 (F) 一 一 ag 测试用例 3 2 4 5 真 (T) 假(F ): 一 abe 测试用例 4 6 62真 (T) 真(T ) 假(F ) abcf(2 )测试用例运行结果截图测试用例1翱寧萨数并用空格隔卅名名署 Press any key to 匚cintiriiiE图1-2测试用例1开始实验 分析 续普通三角形 (a+b>c)&&(a+c>b)&&(b+c>a)Ca==c && a==b && b==cNf不是三角形等边三角形测试用例2三鬲萨用工停2 4 1^ess ari^ key to caintInue图1-3测试用例2测试用例3曙齒萨数并用空格隔乐2 4 £Press any key to continue图1-4测试用例3测试用例4ppess arai| key ta cantinue图1-5测试用例4 二.利用路径覆盖分析三角形组成问题 基本路径测试方法 (1 )控制流图图2-1三角形组成的控制流图(2)环形复杂度方法一:V (G )=3 (圭寸闭区域)+仁4 方法二:V (G ) =10 (边数)一8 (节点)+2=4 方法三:V (G ) =3 (判定节点1、2、3) +仁4实验 分析 续(3 )独立路径根据上面的计算结果,可导出基本路径集,列出程序的独立路径,可得出程序段 的的基本路径集中有 4条独立路径,每条独立路径为一个独立的测试用例。
软件测试-三角形的黑白盒测试
软件测试 -三角形的黑白盒测试
三角形黑盒测试
三角形白盒测试 一、核心程序代码 /** 判断三角形的类 */ public class TriangleTestMethod { /** 判断三角形的种类。参数a, b, c分别为三角形的三边, * 返回的参数值为0,表示非三角形; * 为1,表示普通三角形; * 为2,表示等腰三角形; * 为3,表示等边三角形。 */ public statf((a + b > c) && (b + c > a) && (a + c > b)) { // 判断为三角形if((a == b) && (b ==c)) // 判断为等边三角形 return 3; if((a == b) || (b == c) || (a == c)) // 判断为等腰三角形 return 2; else // 判断为普通三角形 return 1; } else { // 为非三角形 return 0; } } } 二、程序流程图
三、测试用例
四、程序控制流图
白盒测试实验报告_三角形
白盒测试实验报告_三角形实验目的:本实验旨在通过白盒测试的方式对一个三角形程序进行测试,并通过测试结果来验证程序的正确性。
实验原理:三角形是由三条边组成的图形,根据三个边的长度的不同,可以分为三种形态的三角形:等边三角形、等腰三角形和普通三角形。
在这个实验中,我们需要测试一个程序,该程序用于判断给定的三条边是否能够构成一个三角形,并能够进一步判断构成的三角形是何种类型。
实验步骤:1.确定测试用例,包括各种可能的三角形情况,如等边三角形、等腰三角形、普通三角形以及不能构成三角形的情况。
2.编写测试代码,使用白盒测试的方式进行测试。
3.运行测试代码,记录测试结果。
4.分析测试结果,验证程序的正确性。
实验结果:经过测试,测试结果如下:1.测试用例1:输入边长为3、3、3,预期输出为等边三角形,实际输出为等边三角形,测试通过。
2.测试用例2:输入边长为3、4、4,预期输出为等腰三角形,实际输出为等腰三角形,测试通过。
3.测试用例3:输入边长为2、3、4,预期输出为普通三角形,实际输出为普通三角形,测试通过。
4.测试用例4:输入边长为1、2、3,预期输出为不能构成三角形,实际输出为不能构成三角形,测试通过。
实验结论:通过对三角形程序的白盒测试,我们验证了程序的正确性,并确认程序能够正确判断三条边是否能够构成一个三角形,以及进一步判断构成的三角形是何种类型的。
在我们的测试中,程序完全按照我们的预期输出结果,没有发现任何错误。
因此,我们可以认为该程序在给定的测试用例下能够正确地判断三角形,并输出正确的三角形类型。
实验感想:通过本次实验,我深刻理解了白盒测试的重要性。
通过运行测试代码,并仔细分析测试结果,我可以直观地看到程序的运行情况,从而判断程序的正确性。
在编写测试用例时,我尽量覆盖了各种可能的情况,以确保测试的全面性和准确性。
同时,我也意识到了编写高质量代码的重要性,只有代码本身没有错误,才能保证测试的准确性。
白盒测试报告 三角形
白盒测试一、实验目的1、掌握白盒测试的基本方法;2、掌握白盒测试用例的编写。
二、实验要求1、根据给出的程序分别使用语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖、路径覆盖、基本路径覆盖来设计相应的测试用例。
2、输入数据进行测试,执行测试用例。
三、实验内容程序:用VC++ 6.0编写三角形函数:三角形中,要求输入三边的长度:a,b,c,当三边不可能构成三角形时提示错误,可构成三角形时计算三角形的周长。
若是等腰三角形打印“等腰三角形”,若是等边三角形,则打印“等边三角形”。
源代码:#include <iostream>using namespace std;double triangleType(double a,double b,double c){double l;l=a+b+c;if(a+b<=c&&a+c<=b&&b+c<=a)cout<<"error:不能构成三角形"<<endl;else if(a==b&&a==c)cout<<"等边三角形"<<endl;else if(a==b||a==c||b==c)cout<<"等腰三角形"<<endl;elsecout<<"三角形周长:"<<l<<endl;return 0;}void main(){double x,y,z;cout<<"输入三个边长:"<<endl;cin>>x>>y>>z;triangleType(x,y,z);}四、实验步骤2、测试,得出结果。
3、如果发现缺陷,找出缺陷所在并修改程序。
软件测试案例(三角形白盒测试)
Return3
Return1
Return2
Return0
*为1,表示普通三角形;
*为2,表示等腰三角形;
*为3,表示等边三角形。
*/
publicstaticintcomfirm(inta,intb,intc){
if((a+b>c)&&(b+c>a)&&(a+c>b)){//判断为三角形
if((a==b)&&(b==c))//判断为等边三角形
return3;
if((a==b)||(b==c)||(a==c))//判断为等腰三角形
return2;
else//判断为普通三角形
return1;
}
else{//为非三角形
return0;
}
}
}
1
二、程序流程图
①
Nห้องสมุดไป่ตู้
a+b>c&&b+c
>a&&a+c>b
YY
a==b&&b==c
N
④
a==b||b==c||现方式做保护处理对用户上传分享的文档内容本身不做任何修改或编辑并不能对任何下载内容负责
一、核心程序代码
/**判断三角形的类*/
publicclassTriangleTestMethod{
/**判断三角形的种类。参数a,b,c分别为三角形的三边,
*返回的参数值为0,表示非三角形;
白盒(三角形)
实验4 三角形问题的白盒测试一、实验目的:通过实验掌握白盒测试技术,能够使用语句覆盖、判定覆盖、条件覆盖、条件/判定覆盖和条件组合覆盖设计测试用例。
二、实验内容及要求1、根据实验一的三角形问题编写程序;2、画出程序流程图,分析并确定程序分支;3、设计分别满足语句覆盖、判定覆盖、条件覆盖、条件/判定覆盖和条件组合覆盖的测试用例;4、用测试用例对程序进行测试,记录测试结果,并对结果进行分析,如果存在缺陷则修改程序,继续测试;1、根据实验一的三角形问题编写程序;using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Text.RegularExpressions;namespace三{public partial class Form1 : Form{public Form1(){InitializeComponent();}private class TT{public bool b(string s){string pattern = "^[0-9]*$";Regex rx = new Regex(pattern);return rx.IsMatch(s);}}private void button1_Click_1(object sender, EventArgs e){if (textBox1.Text == "" || textBox2.Text == "" || textBox3.Text == ""){MessageBox.Show("边长不能为空!!", "警告");}else{TT t = new TT();string a = textBox1.Text;string b = textBox2.Text;string c = textBox3.Text;if (!t.b(a) || !t.b(b) || !t.b(c)){MessageBox.Show("只能输入1到100间的数字!!", "警告");textBox1.Text = "";textBox2.Text = "";textBox3.Text = "";textBox1.Focus();}else{int a1 = int.Parse(a);int b1 = int.Parse(b);int c1 = int.Parse(c);if (a1 > 100 || a1 <= 0 || b1 > 100 || b1 <= 0 || c1 > 100 || c1 <= 0) {MessageBox.Show("只能输入1到100间的数字!!", "警告");textBox1.Text = "";textBox2.Text = "";textBox3.Text = "";textBox1.Focus();}else{if (a1 >= b1 + c1 || b1 >= a1 + c1 || c1 >= a1 + b1){label4.Text = "不是三角形";}else{if ((a1 * a1 == b1 * b1 + c1 * c1) || (b1 * b1 == a1 * a1 + c1 * c1) || (c1 * c1 == a1 * a1 + b1 * b1)){label4.Text = "直角三角形";}else{if (a1 == b1 && b1 == c1 && a1 == c1){label4.Text = "等边三角形";}else if (a1 == b1 || b1 == c1 || a1 == c1) {label4.Text = "等腰三角形";}else{label4.Text = "普通三角形";}}}}}}}}}2、画出程序流程图,分析并确定程序分支;3、设计分别满足语句覆盖、判定覆盖、条件覆盖、条件/判定覆盖和条件组合覆盖的测试用例。
2016年度精品--白盒测试实验报告_三角形
2016年度精品--白盒测试实验报告_三角形白盒测试实验报告——三角形一、实验目的(1)巩固白盒测试技术,能熟练应用控制流覆盖方法设计测试用例;(2)学习测试用例的书写。
二、实验内容判断三角形类型输入三个整数a、b、c,分别作为三角形的三条边,通过程序判断这三条边是否能构成三角形,如果能构成三角形,则判断三角形的类型(等边三角形、等腰三角形、一般三角形)。
要求输入三个整数a、b、c,必须满足以下条件:1?a?200;1?b?200;1?c?200。
要求:为测试该程序的方便,请将三角形判断的算法尽量放入一个函数中。
(1)画出程序的流图;(2)分别以语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖设计测试用例,并写出每个测试用例的执行路径要求:设计测试用例时,每种覆盖方法的覆盖率应尽可能达到100%(3)请采用基本路径测试方法对程序进行测试,并给出具体测试用例信息。
(4)通过你的测试,请总结你所使用测试方法发现的Bug。
三、实验要求(1)根据题目要求编写测试用例(2)撰写实验报告(3)有关的实现程序请附到实验报告中(4)实验报告命名规则:学号后两位+姓名_白盒实验四、实验报告(1)程序代码:(2)程序的流图:(3)语句覆盖;(4)判定覆盖;(5)条件覆盖;(6)判定/条件覆盖;(7)组合覆盖;(8)基本路径覆盖;附录:测试用例书写格式(语句覆盖为例)测试用例表编号测试用例执行路径覆盖条件覆盖判定预输出结果 1 2---------------------------------------------------------------范文最新推荐------------------------------------------------------ 财务工作总结ppt[财务工作总结ppt]一、合理安排收支预算,严格预算管理单位预算是学校完成各项工作任务,实现事业计划的重要前提,因此认真做好我校的收支预算责任重大,财务工作总结ppt。
完整版实验四三角形组成问题程序的白盒测试
辽宁工程技术大学上机实验报告成绩实验名称实验四三角形组成问题程序的白盒测试3开始a1(a+b>c)&&(a+c>b)&&(b+c>a)Y2bNa==b || a==c || b==c ge Y c N3a==c && a==b && b==c f N实验4567Y d分析续不是三角形等边三角形普通三角形等腰三角形8结束图1-1 三角形组成问题程序流程图一. 判定覆盖法1.判定覆盖:设计足够多的测试用例,使得程序中的每一个判断至少获得一次“真”和一次“假”,即使得程序流程图中的每一个真假分支至少被执行一次。
(1)测试用例表1-1 判定覆盖测试用例测试用例a b c 判断语句1 判断语句2 判断语句3 执行路径abcd 测试用例1 5 真(T真(T真())T)5 5 测试用例2 2 F假()——ag 4 1测试用例3 2 4 T真()F假()—abe 5测试用例4 6 abcf6 2)T真(T真()F假()(2)测试用例运行结果截图测试用例1图1-2测试用例1测试用例2图1-3测试用例2图1-4测试用例3测试用例 4图1-5测试用例4二.利用路径覆盖分析三角形组成问题基本路径测试方法实验(分析1)控制流图续12345678三角形组成的控制流图图2-1)环形复杂度(2+1=4=3(封闭区域)V (G)方法一:+2=4 (节点)(边数)—8)方法二:V(G=10+1=4 )3、2、1(判定节点=3)G(V方法三:续图2-2测试用例1 测试用例2图2-3测试用例2测试用例3图2-4测试用例3测试用例4图2-5测试用例4教师评语。
三角形白盒测试
1. float a,b,c;2. printf("请输入三角形三边长度:\n");3. scanf("%f,%f,%f",&a,&b,&c);4. if(a<1||a>200)5. printf("输入数值超出范围\n"); //超出取值范围6. else if(b<1||b>200)7. printf("输入数值超出范围\n");8. else if(c<1||c>200)9. printf("输入数值超出范围\n");10. else if(((a+b)>c)&&((b-c)<a))11. {12. if((a==b)&&(b==c))13. printf("等边三角形\n");14. else if((a*a+b*b-c*c)<0.001||(b*b+c*c-a*a)<0.001||(c*c+a*a-b*b)<0.001){15. if(a==b||b==c||c==a)16. printf("等腰直角三角形\n");17. else18. printf("直角三角形\n");19. }20. else if(a==b||b==c||c==a)21. printf("等腰三角形\n");22. else23. printf("一般三角形\n");24. }25. else26. printf("不是三角形\n");1:语句覆盖序号输入预期输出实际输出测试结果覆盖语句A B C1 0 3 4 输入超出输入超出Pass 2,3,4,52 3 0 5 输入超出输入超出Pass 2,3,4,6,,73 34 0 输入超出输入超出Pass 2,3,4,6,8,94 5 5 5 等边三角形等边三角形Pass 2,3,4,6,8,10,12,135 3 4 5 直角三角形直角三角形Pass 2,3,4,6,8,10,1214,15,186 1 1 1.414 等腰直角三角形等腰直角三角形Pass 2,3,4,6,8,10,12,14,15,167 3 3 5 等腰三角形等腰三角形Pass 2,3,4,6,8,10,12,14,208 4 7 8 一般三角形一般三角形Pass 2,3,4,6,8,10,12,14,20,239 1 2 3 不是三角形不是三角形Pass 2,3,4,6,8,10,262:判定覆盖语句4:t1,f1 语句6:t2,f2 语句8:t3,f3 语句10:t4,f4 语句12:t5,f5 语句14:t6,f6 语句15:t7,f7 语句20:t8,f8语句4:t1,f1 t2,f2 语句6:t3,f3 t4,f4 语句8:t5,f5 t6,f6 语句10:t7,f7 t8,f8 语句12:t9,f9 t10,f10语句14:t11,f11 t12,f12 t13,f13 语句15:t14,f14 t15,f15 t16,f16 语句20:t17,f17 t18,f18 t19,f193:路径覆盖序号 输入 预期输出 实际输出 测试结果 覆盖判定A B C 1 0 3 4 输入超出 输入超出 Pass t1 2 3 0 5 输入超出 输入超出 Pass F1 t2 3 3 4 0 输入超出 输入超出 Pass F1 f2 t3 4 5 5 5 等边三角形 等边三角形 Pass F1 f2 f3 t4 t5 5 3 4 5 直角三角形 直角三角形 Pass F1,f2,f3,t4,t4t6,f7 6 1 1 1.414 等腰直角三角形 等腰直角三角形 Pass F1 f2 f3,t4 f5t6,t7 7 3 3 5 等腰三角形 等腰三角形 Pass F1 f2 f3 f5 f6t8 8 4 7 8 一般三角形 一般三角形 Pass F1 f2 f3,f5 f6f8 9 123不是三角形不是三角形PassF1 f2 f3 f4序号输入预期输出实际输出测试结果覆盖路径A B C1 0 3 4 输入超出输入超出Pass 2-3-4-52 3 0 5 输入超出输入超出Pass 2-3-4-6-73 34 0 输入超出输入超出Pass 2-3-4-6-8-94555等边三角形等边三角形Pass 2-3-4-6-8-10-12-135345直角三角形直角三角形Pass 2-3-4-6-8-10-1 2-14-15-186111.414等腰直角三角形等腰直角三角形Pass2-3-4-6-8-10-12-14-15-167335等腰三角形等腰三角形Pass 2-3-4-6-8-10-1 2-14-20-218 4 7 8 一般三角形一般三角形Pass 2-3-4-6-8-10-1 2-14-20-3-239 1 2 3 不是三角形不是三角形Pass 2-3-4-6-8-10-12-134:基路径覆盖A1:A-B-D-F-J-H-J-L-M-N A2:A-B-CA3: A-B-D-EA4: A-B-D-F-GA5: A-B-D-F-H-IA6: A-B-D-F-H-J-KA7: A-B-D-F-H-J-L-P-QA8: A-B-D-F-H-J-L-M-O A9: A-B-D-F-H-J-L-P-R序号输入预期输出实际输出测试结果覆盖的基路径A B C1 0 3 4 输入超出输入超出Pass A22 3 0 5 输入超出输入超出Pass A33 34 0 输入超出输入超出Pass A4 4555等边三角形等边三角形Pass A5 5345直角三角形直角三角形Pass A86111.414等腰直角三角形等腰直角三角形Pass A17335等腰三角形等腰三角形Pass A7 8 4 7 8 一般三角形一般三角形Pass A99 1 2 3 不是三角形不是三角形Pass A6。
三角形白盒测试
一.三角形问题:1.import java.util.Scanner;2. public class test3.{4. public static void main(String[] args)5. {6. Scanner input=new Scanner(System.in);7. System.out.print("Enter 3 integers which are sides of a triangle:");8. double a=input.nextDouble();9. double b=input.nextDouble();10. double c=input.nextDouble();11 int sign1=0,sign2=0;12 if(a>0&&b>0&&c>0&&a<200&&b<200&&c<200){13 if(a+b>c&&a+c>b&&b+c>a){14 if(a==b&&a==c) //F1115. System.out.print("是等边三角形");16. else{17 if(a==b||b==c||a==c) //1418 sign1=1;19 if(a*a+b*b==c*c||a*a==b*b+c*c||b*b==c*c+a*a) //1720 sign2=1;21 if(sign1==1&&sign2==1)22 System.out.print("是等腰直角三角形");23 else if(sign1==0&&sign2==1)24 System.out.print("是直角三角形");25 else if(sign1==1&&sign2==0)26 System.out.print("是等腰三角形");27 else System.out.print("是一般三角形");}}28 else System.out.print("not a Triangle");}29 else System.out.print("input is error!");}30.}1.语句覆盖:条件1:a>0 2:b>0 3:c>04: a< 200 5: b<200 6:c<2007:a+b>c 8:a+c>b 9:b+c>a10:a=b 11:a=c 12:a=b13:b=c 14:a=c 15: a*a+b*b==c*c 16:a*a==b*b+c*c 17:b*b==c*c+a*a 18: sign1=1 19:sign2=1 20:sign1=0 21:sign2=122:sign1=1 23:sign2=02.判定覆盖:3.条件覆盖:4.路径覆盖:5.条件判定覆盖:6.条件组合覆盖:数据流测试基路径:ABDABCFABCEH ABCEIJKLMN ABCEIJKLMOP ABCEIJKLMOQR ABCEIJKLMOQS圈复杂度:6+1=7下一天问题:package z;import java.util.Scanner;import javax.swing.JOptionPane;public class NextDate{public static void main(String[] args){int tomDay ,tomMonth ,tomYear ;int day,month,year;System.out.println("Enter today's date in the form MM DD YYYY");Scanner input=new Scanner(System.in);1 month=input.nextInt();2 day=input.nextInt();3 year=input.nextInt();4 if(day<1||day>31||month<1||month>12||year<1812||year>2012){5 System.out.println("输入错误");}6 else{7 switch(month){8 case 1:9 case 3:10 case 5:11 case 7:12 case 8:13 case 10:14 if(day<31){15 tomDay=day+1;16 tomMonth=month;17 tomYear=year;18 System.out.println(month+":"+day+":"+year+"的下一天是"+tomMonth+":"+tomDay+":"+tomYear);}19 else{20 tomDay=1;21 tomMonth=month+1;22 tomYear=year;23 System.out.println(month+":"+day+":"+year+"的下一天是"+tomMonth+":"+tomDay+":"+tomYear);}24 break;25 case 4:26 case 6:27 case 9:28 case 11:29 if(day<30){30 tomDay=day+1;31 tomMonth=month;32 tomYear=year;33 System.out.println(month+":"+day+":"+year+"的下一天是"+tomMonth+":"+tomDay+":"+tomYear);}34 else if(day==30){35 tomDay=1;36 tomMonth=month+1;37 tomYear=year;38 System.out.println(month+":"+day+":"+year+"的下一天是"+tomMonth+":"+tomDay+":"+tomYear);}39 else{40 System.out.println("输入错误");}41 break;42 case 12:43 if(day<31){44 tomDay=day+1;45 tomMonth=month;46 tomYear=year;47 System.out.println(month+":"+day+":"+year+"的下一天是"+tomMonth+":"+tomDay+":"+tomYear);}48 else{49 tomDay=1;50 tomMonth=1;51 tomYear=year+1;52 System.out.println(month+":"+day+":"+year+"的下一天是"+tomMonth+":"+tomDay+":"+tomYear);}53 break;54 case 2:55 if(day<28){56 tomDay=day+1;57 tomMonth=month;58 tomYear=year;59 System.out.println(month+":"+day+":"+year+"的下一天是"+tomMonth+":"+tomDay+":"+tomYear);}60 else if(day==28){61 if((year%4==0&&year%100!=0)||(year%400==0)){62 tomDay=29;63 tomMonth=month;64 tomYear=year;65 System.out.println(month+":"+day+":"+year+"的下一天是"+tomMonth+":"+tomDay+":"+tomYear);}66 else{67 tomDay=1;68 tomMonth=month+1;69 tomYear=year;70 System.out.println(month+":"+day+":"+year+"的下一天是"+tomMonth+":"+tomDay+":"+tomYear);}}71 else if(day==29){72 if((year%4==0&&year%100!=0)||(year%400==0)){73 tomDay=1;73.5 tomMonth=month+1;74 tomYear=year;74.5 System.out.println(month+":"+day+":"+year+"的下一天是"+tomMonth+":"+tomDay+":"+tomYear);}75 else76 System.out.println("输入错误");}77 else{78 System.out.println("输入错误");}79 break;}}}80 }DD路径图路径覆盖:用例等同于语句覆盖条件覆盖:条件1:day<1 2:day>31 3:month<1 4:month>12 5:year<1812 6:year>20127:month=1 8:month=3 9:month=5 10:month=7 11:month=8 12:month=10 13:day<31 14:month=4 15:month=6 16:month=9 17:month=11 18:day<30 19:day=30 20:month=12 21 :day<31 22:month=2 23:day<28 24:day=2825:year%4=0 26:year%100!=0 27:year%400=0 28:day=29 29: year%4=0 30: year%100!=0 31: year%400=0程序设计问题:导致不能覆盖F22判定覆盖:条件组合覆盖数据流测试基路径:ABACDFU ABCDGU ACEHKV ACEHLOV ACEHLPV ACEIMQW ACEIMQW ACEIJNSX6 ACEIJNTXZX6 ACEIJNTXX1X6 ACEIJNTYX2X4X6 ACEIJNTYX2X5X6 ACEIJNTYX3X6定义使用路径佣金问题#include <iostream>using namespace std;int main(){1 int a = 45, b = 30, c = 25;//变量a,b,c分别为枪机枪托枪管的价格2 int locks, stocks , barrels ;3 double sum;4 cout<<"请输入已销售的枪机的数量,1-70个之间:"<<endl;5 cin>>locks;6 if (locks > 70 || locks < 1)7 cout<<"输入枪机数不合法,请输入1-70之间的个数!"<<endl;8 else{9 cout<<"请输入枪托的数量,1-80个之间:"<<endl;10 cin>>stocks;11 if (stocks > 80 || stocks < 1)12 cout<<"输入枪托数不合法,请输入1-80之间的个数!"<<endl;13 else{14 cout<<"请输入枪管的数量,1-90个之间:"<<endl;15 cin>>barrels;16 if (barrels > 90 || barrels < 1)17 cout<<"输入枪管数不合法,请输入1-90之间的个数!"<<endl;18 else{19 if ((locks * a + stocks * b + barrels * c) <= 1000){20 sum = (locks * a + stocks * b + barrels * c) * 0.1;}21 else if ((locks * a + stocks * b + barrels * c) > 1000 && (locks * a+ stocks * b + barrels * c) <= 1800)//大于1000不超过1800的部分{22 sum = 100 + ((locks * a + stocks * b + barrels * c) - 1000) *0.15;}23 else24 sum = 220 + ((locks * a + stocks * b + barrels * c) - 1800) *0.2;25 cout<<"枪机" << locks <<"个"<<endl;26 cout<<"枪托" << stocks << "个"<<endl;27 cout<<"枪管" << barrels << "个"<<endl;28 cout<<"销售总额" << (locks * a + stocks * b + barrels * c) << "个"<<endl;29 cout<<"佣金" << sum << "元"<<endl;}}}30 return 0;31 }判定覆盖条件locks > 70|| locks < 1为真简称T1,假为F1;条件stocks > 80 ||stocks < 1为真简称T2,假为F2;条件barrels > 90|| barrels < 1为真简称T3,假为F3;条件(locks * a + stocks * b + barrels * c) <= 1000为真简称T4,假为F4;条件(locks * a + stocks * b + barrels * c) > 1000 && (locks * a + stocks * b + barrels条件覆盖条件:locks > 70 真为T1,假为F1;条件locks < 1 真为T2,假为F2;条件stocks > 80 真为T3,假为F3;条件stocks < 1 真为T4,假为F4;条件barrels > 90 真为T5,假为F5;条件 barrels < 1 真为T6,假为F6;条件(locks * a + stocks * b + barrels * c) <= 1000 真为T7,假为F7;条件(locks * a + stocks * b + barrels * c) > 1000 真为T8,假为F8;条件(locks * a + stocks * b + barrels * c) <= 1800 真为T9,假为F9;判定/条件覆盖组合覆盖路径覆盖总用例设计为基路径:ABCDEFGOALOABMOABCNOABCDHGOABCDEIGO圈复杂度;n=DD路径图圈数+1=5+1=6。
经典三角形白盒黑盒测试加测试工具
22 }23 }else{24SetDlgItemText(IDC_RESULT, "不能构成三角形");25 }2.3.4程序控制图2.3.5圈复杂度V(G)=37(条边)-27(个节点)+2=12Table 1myDlg:OnButton2的函数流程图3. 度量元检测结果Table 2 函数度量元检测结果4. 函数质量标准检测结果Table 3 函数质量标准检测结果5. 系统度量元检测结果Table 4 系统度量元检测结果6.类度量元的检测结果Table 5 类度量元的检测结果7.类质量准则的检测结果Table 6 类质量准则的检测结果8. 父类、子类之间的派生关系Table 7父类、子类之间的派生关系9.类与类之间的使用关系Table 8类与类之间的使用关系2.4.2RuleChecker项目1.代码检测结果Table 9 代码检测结果2.查看不符合规范的代码Table 10 查看不符合规范的代码3. RuleChecker的检测报告参见” RuleChecker Report”文件夹下的SanJiaoXingRuleCheckerrule.html2.4.3TestChecker项目由于项目名称为中文,配置TestChecker项目的时候,出现乱码,该测试未完成.2.5黑盒测试2.5.1功能测试测试目标➢测试三角形测试.exe测试范围➢测试输入值是否满足条件➢测试输出结果是否满足设说明开始标准➢白盒测试完成完成标准➢所有功能都能按照设计文档的要求➢测试报告提交给程序开发人员修改,并作进一步测试测试重点和优先级➢输入的参数是否正确➢输出的结果是否符合设计文档预期结果2.5.2测试方法测试目标➢测试”三角形测试”程序是否能够正常运行并符合预期结果测试范围➢软件执行的整个过程测试方法➢等价划分➢边界值分析开始标准➢有详细设计,软件编码已完成完成标准➢所有设计的用例都测试通过2.5.3等价划分根据用例描述,输入的三条边的取值范围为[1,100]Table 11 三角形测试录制的基本过程Table 12 添加一个标准检查点Table 13 参数化A,B.C和输出结果Table 14 由QTP生成的测试报告2.6.2 录制脚本二: SanJiaoXingQTPTest2录制了一段脚本,保存在” SanJiaoXingQTPTest2”文件夹下e)录制一个基本过程,弹出的小窗口中的警告信息上添加一个标准检查点f)参数化边A,B,C和标准检查点的值,分别存在在全局表sideA,sideB,sideC,Result中.g)回放录制过程h)分析生成的测试报告Table 15三角形测试录制的基本过程Table 16 添加一个标准检查点Table 17参数化A,B.C和输出结果Table 18由QTP生成的测试报告最后一个Row14未通过,是由于Row13测试完后,没有数据输入了,所以该测试是通过的.。
软件测试实验报告
软件测试实验报告姓名:*******专业:********************* 班级:***********学号:*************日期:2011-5-25实验一:黑盒测试一、实验目的:了解三角形问题的边界值分析测试用例。
二、实验要求:在三角形问题描述中,除了要求边长是整数外,没有给出其它的限制条件。
在此,我们将三角形每边边长的取范围值设值为[1, 100] 。
在三角形问题中,有四种可能的输出:等边三角形、等腰三角形、一般三角形和非三角形。
利用这些信息能够确定下列输出(值域)等价类。
R1 = { <a,b,c>: 边为a,b,c的等边三角形}R2 = { <a,b,c>: 边为a,b,c的等腰三角形}R3 = { <a,b,c>: 边为a,b,c的一般三角形}R4 = { <a,b,c>: 边为a,b,c不能组成三角形}三、实验程序:#include "iostream.h"void main(){int a,b,c;cout<<"请输入1<=a<=100或1<=b<=100或1<=c<=100"<<endl;cin>>a>>b>>c;if((1<=a&&a<=100)&&(1<=b&&b<=100)&&(1<=c&&c<=100)){if(a+b>c&&a+c>b&&c+b>a){if(a==b&&a==c&&c==b){ cout<<"三角形为等边三角形"<<endl;}else if(a==b||a==c||c==b){cout<<"三角形为等腰三角形"<<endl;}else if((a*a+b*b)==c*c||(c*c+b*b)==a*a||(a*a+c*c)==b*b){cout<<"三角形为直角三角形"<<endl;}else cout<<"a,b,c可组成三角形"<<endl;}else cout<<"不存在a,b,c组成的三角形"<<endl;}else cout<<"a或b或c的值不合法,无法判断"<<endl;}四、测试用列:用列ID a b c 预期输出1 1 1 1 三角形为等边三角形2 2 2 1 三角形为等腰三角形3 345 三角形为直角三角形4 2 2 2 三角形为等边三角形5 2 3 3 三角形为等腰三角形6 4 3 5 三角形为直角三角形7 5 4 3 三角形为直角三角形8 1 1 2 不存在a,b,c组成的三角形9 4 2 2 不存在a,b,c组成的三角形10 2 4 2 不存在a,b,c组成的三角形11 4 2 5 不存在a,b,c组成的三角形12 0 0 0 a或b或c的值不合法,无法判断13 0 1 1 a或b或c的值不合法,无法判断14 2 0 12 a或b或c的值不合法,无法判断15 13 13 0 a或b或c的值不合法,无法判断16 100 100 100 三角形为等边三角形17 100 100 0 a或b或c的值不合法,无法判断18 100 12 101 a或b或c的值不合法,无法判断19 100 12 100 不存在a,b,c组成的三角形20 90 90 80 三角形为等腰三角形五、等价类划分:输入条件有效等价类编号无效等价类编号三角形a+b>c&&a+c>b&&c+b>a&&a=b& &c=b 1 a<1,a>100,b<1,b>100,c<1,c>1005a+b>c&&a+c>b&&c+b>a&&a=b||c=b2a+b>c&&a+c>b&&c+b>a&& 3非三角形a+b<c||a+c<b||c+b<a 4六、实验结论:通过实验要求的条件编写的程序和测试用列的预期输出证明给该程序是正确的实验二:黑盒测试1.一、实验目的:了解xtDate函数的边界值分析测试用例。
白盒测试实例
白盒测试实例之一——需求说明三角形的问题在很多软件测试的书籍中都出现过,问题虽小,五脏俱全,是个很不错的软件测试的教学例子。
本文借助这个例子结合教学经验,从更高的视角来探讨需求分析、软件设计、软件开发与软件测试之间的关系与作用。
题目:根据下面给出的三角形的需求完成程序并完成测试:一、输入条件:1、条件1:a+b>c2、条件2:a+c>b3、条件3:b+c>a4、条件4:0<a<2005、条件5:0<b<2006、条件6:0<c<2007、条件7:a==b8、条件8:a==c9、条件9:b==c10、条件10:a2+b2==c211、条件11:a2+ c2== b212、条件12:c2+b2== a2二、输出结果:1、不能组成三角形2、等边三角形3、等腰三角形4、直角三角形5、一般三角形6、某些边不满足限制白盒测试实例之二——答案很多初学者一看到这个需求,都觉得很简单,然后立刻就开始动手写代码了,这并不是一个很好的习惯。
如果你的第一直觉也是这样的,不妨耐心看到文章的最后。
大部分人的思路:1、首先建立一个main函数,main函数第一件事是提示用户输入三角形的三边,然后获取用户的输入(假设用户的输入都是整数的情况),用C语言来写,这一步基本上不是问题(printf和scanf),但是要求用java来写的话,很多学生就马上遇到问题了,java5.0及之前的版本不容易获取用户的输入。
点评:这样的思路做出来的程序只能通过手工方式来测试所有业务逻辑,而且这个程序只能是DOS 界面版本了,要是想使用图形化界面来做输入,就得全部写过代码。
2、业务处理流程的思路用流程图表示如下:3、15. else16. {17. if(a==b || b==c || a==c)18. {19. printf("2是等腰三角形");20. }21. else22. {23. if(a*a+b*b==c*c || a*a+c*c==b*b || b*b+c*c==a*a)24. {25. printf("3是直角三角形");26. }27. else28. {29. printf("4是一般三角形");30. }31. }32. }33. }34. else35. {36. printf("5不能组成三角形");37. }38. }39. else40. {41. printf("6某些边不满足限制");42. }43. }白盒测试实例之三——需求分析需求分析是后续工作的基石,如果分析思路有问题,后续工作可能就会走向不正确的方向,比如:代码重用性差、难于测试、难于扩展和难于维护等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
分析
续
实验
分析
续
实验
分析
续
实验
分析
续
日
本次实验的收获、体会、经验、问题和教训:
关于白盒测试
测试规划基于产品的内部结构进行测试,检查内部操作是否按规定执行,软件各个部分功能是否得到充分使用,则这种测试方法称为白盒测试(White-box Testing)方法。
白盒测试又称为结构测试、逻辑驱动测试或基于程序的测试,一般用来分析程序的内部结构。
●路径覆盖
图1-1三角形组成问题程序流程图
一.判定覆盖法
1.判定覆盖:设计足够多的测试用例,使得程序中的每一个判断至少获得一次“真”和一次“假”,即使得程序流程图中的每一个真假分支至少被执行一次。
(1)测试用例
表1-1判定覆盖测试用例
测试用例
a b c
判断语句1
判断语句2
判断语句3
执行路径
测试用例1
c)配置测试环境、编写详细测试计划、安排测试进度;d)设计测试脚本、测试用例;
e)实施测试、执行测试和评估测试
实验
准备
你为本次实验做了哪些准备:
使用白盒测试技术,测试内容包括语句覆盖测试、分支覆盖测试、条件覆盖测试、分支/条件覆盖测试、条件组合覆盖测试及基本路径测试。
实验
进度
本次共有2个练习,完成2个。
5 5 5
真(T)
真(T)
真(T)
abcd
测试用例2
2 4 1
假(F)
—
—
ag
测试用例3
2 4 5
真(T)
假(F)
—
abe
测试用例4
6 6 2
真(T)
真(T)
假(F)
abcf
(2)测试用例运行结果截图
测试用例1
图1-2测试用例1
测试用例2
图1-3测试用例2
测试用例3
图1-4测试用例3
测试用例4
图1-5测试用例4
路径1:①→②→③→⑤→⑧
路径2:①Байду номын сангаас②→③→⑥→⑧
路径3:①→②→④→⑧
路径4:①→⑦→⑧
(4)设计测试用例
根据(3)中的独立路径,设计测试用例输入数据和预期输出。设计的测试用例如表2-1所示
表2-1设计的测试用例
用例名称
输入数据
预期输出
测试用例1
a=6 b=6 c=6
等边三角形
测试用例2
a=8 b=8 c=3
等腰三角形
测试用例3
a=2 b=3 c=4
普通三角形
测试用例4
a=3 b=5 c=1
不是三角形
(5)测试用例运行结果截图
测试用例1
图2-2测试用例1
测试用例2
图2-3测试用例2
测试用例3
图2-4测试用例3
测试用例4
图2-5测试用例4
教师
评语
成绩
辽宁工程技术大学上机实验报告
实验名称
实验四三角形组成问题程序的白盒测试
院系
软件学院
专业
软件工程
班级
姓名
学号
日期
实验
目的
简述本次实验目的:
1.练习和掌握软件测试管理的一般过程与步骤;
2.掌握测试管理的人工过程和能够通过相关管理软件实现以下工作:
a)配置软件资产信息、软件需求、软件模型和缺陷数据库;b)创建和管理多个测试组和用户;
二.利用路径覆盖分析三角形组成问题
基本路径测试方法
(1)控制流图
图2-1三角形组成的控制流图
(2)环形复杂度
方法一:V(G)=3(封闭区域)+1=4
方法二:V(G)=10(边数)—8(节点)+2=4
方法三:V(G)=3(判定节点1、2、3)+1=4
(3)独立路径
根据上面的计算结果,可导出基本路径集,列出程序的独立路径,可得出程序段的的基本路径集中有4条独立路径,每条独立路径为一个独立的测试用例。路径如下。
白盒测试将被测程序看作一个打开的盒子,测试者能够看到被测源程序,可以分析被测程序的内部结构,此时测试的焦点集中在根据其内部结构设计测试用例。
白盒测试要求是对某些程序的结构特性做到一定程度的覆盖,或者说这种测试是“基于覆盖率的测试”。
通常的程序结构覆盖有:
●语句覆盖
●判定覆盖
●条件覆盖
●判定/条件覆盖