三角形问题- 等价类法(实验报告)2011-9-27
三角形测试实验报告
黑龙江大学实验报告黑龙江大学教务处测试计划(GB8567——88)1引言1.1编写目的1.掌握软件测试技术中白盒测试方法;2.掌握如何进行单元测试。
1.2背景测试程序名称:triangle(三角形形状测试)任务提出者:金虎老师开发者:用户:测试环境:WINDOWS XP ; VC++6.0说明:由于程序较小,并且只是作为了解白盒测试的小程序,因此不涉及较高的实验环境,并且测试环境和运行环境在理论上是一样的,因此不存在较大的测试差异。
1.3定义a:三角型的第一条边b:三角型的第二条边c:三角型的第三条边一般三角形:三边都不相等的三角形等腰三角形:有任意两边相等的三角形等边三角形:三边都相等的三角形不能构成三角形:因不满足需求条件而不能构成三角形1.4参考资料1.《软件测试教程》.宫云战.机械工业出版社2008年9月2.《软件测试技术》.曲朝阳.中国水利水电出版社2006年8月3.《软件测试教程》.贺平.电子工业出版社2005年6月2计划2.1软件说明2.2测试内容单元测试。
某程序规定:输入三个整数作为三边的边长构成三角形。
当此三角形为一般三角形、等腰三角形及等边三角形时,分别说明。
2.3测试(标识符)2.3.1进度安排2.3.2条件所需测试机器:机房机器,品牌为联想,基本配置为奔腾4处理器,256M内存,80M硬盘系统环境:WINDOWS XP工具环境:VC++6.0中文版参与人员2.3.3测试资料1.《软件测试教程》.宫云战.机械工业出版社2008年9月2.《软件测试技术》.曲朝阳.中国水利水电出版社2006年8月3.《软件测试教程》.贺平.电子工业出版社2005年6月2.3.4测试培训1.《软件测试教程》宫云战机械工业出版社2008年9月第三章白盒测试2.金虎老师第三张白盒测试PPT课件3测试设计说明3.1测试此项测试采用白盒测试方法来测试该功能。
3.1.1控制环形复杂度为:6基本路径集如下:路径一:1-2-9-8路径二:1-2-3-10-8路径三:1-2-3-4-11-8路径四:1-2-3-4-5-12-8 路径五:1-2-3-4-5-6-13-8 路径六:1-2-3-4-5-6-7-83.1.2输入测试用例如下:3.1.3输出3.1.4过程由于这个程序比较简单,因此没有比较繁琐的步骤以及控制命令。
黑盒测试等价类划分法
实验1、黑盒测试:等价类划分法
一、实验目的
1、掌握等价类的概念。
2、掌握等价类划分法的测试用例设计方法。
二、实验内容
对三角问题使用等价类划分的方法来设计测试用例,并执行测试,然后撰写实验报告。
三角形问题:规定输入三个整数a、b、c分别作为三边的边长构成三角形。
通过程序判定所构成的三角形的类型(等边三角形、等腰三角形、一般三角形、构不成三角形),并在屏幕上输出0<a,b,c<200输入数据时进行有效性检验。
用C或Java或其它语言写出源程序。
三、实验步骤:
①划分等价类,得到等价类表。
等价类表格式如下:
②运用弱健壮等价类测试用例设计法设计测试用例,得到测试用例表。
测
③执行测试,填写软件缺陷报告。
简单软件缺陷报告格式如下:。
黑盒测试——等价类法——三角形问题
例:输入三个整数a,b,c ,分别作为三角形的3条边(假定a,b,c在1——100之间取值。
),通过程序判断由这三条边构成的三角形是:等边三角形、等腰三角形、一般三角形或非三角形(不能构成三角形)。
问题分析:
假定a,b,c在1——100之间取值,三角形问题可以详细描述为:
输入3个整数a,b,c,分别作为三角形的三条边,要求a,b,c必须满足下列条件:
C1:a在1到100之间
C2:b在1到100之间
C3:c在1到100之间
C4:a<b+c
C5:b<a+c
C6:c<b+a
输出:
如果不满足前3个条件(C1-C3),则输出“请输入1到100之间的整数”;
如果满足前3个条件,则输出下面4种情况:
(1)如果不满足条件C4-C6中的一个,则输出“非三角形”
(2)如果三条边相等,则程序输出为“等边三角形”
(3)如果恰好有两条边相等,则输出为“等腰三角形”
(4)如果三条边都不相等,则输出为“一般三角形”
设计覆盖上述等价类的测试用例:。
软件测试-三角形问题
9
10
11
12
13
14
15
16
T T T T
T T T F
T T F T
T T F F
T F T T
T F T F
T F F T
T F F F
√
√ √ √ √
制作者:
Page 18
决策表法
根据决策表4-13,可设计测试用例,如表4-14所示。
表4-14 三角形问题的决策表测试用例 测试用例 Test Case 1 Test Case 2 Test Case 3 Test Case 4 Test Case 5 Test Case 6 Test Case 7 Test Case 8 Test Case 9 a 10 4 ? ? 4 ? 5 4 3 b 4 4 ? ? 4 ? 4 5 4 c 4 4 ? ? 5 ? 4 4 5
三个数
1
整数
2
取值范围 在1~100
3
三个数 整数 1≤a≤100 1≤b≤100 1≤c≤100 4,5,6
12
13 14 15 16 17 18
Page 5
三边为00,0,0
一边小于0-1,7,8 两边小于0-9,-,1,6 三边小于0-1,-2,-8 一边大于100101,56,50 两边大于100101,107,89 三边大于100101,109,176
制作者:
表4-2 三角形问题的测试用例
等价类划分法——以输出域划分等价类
以三角形问题为例,要求输入三个整数a、b、c,分 别作为三角形的三条边,取值范围在1~100之间, 判断由三条边构成的三角形类型为等边三角形、等 腰三角形、一般三角形(包括直角三角形)以及非 三角形。 在多数情况下,是从输入域划分等价类,但对于三 角形问题,从输出域来定义等价类是最简单的划分 方法。
等价类划分法
设计测试用例的着眼点
根据产品规格,测试基本功能; 考虑设计一般用户(非专业人员)的使用方案; 考虑设计稀有或特殊的使用方案; 与系统其他组成部分的配合(如 FAX 和上网可能要用到 MODEM,测试中考虑对设备的共享); 考虑特殊情况(如内存和硬件的冲突等); 设计极端情况(如内存泄漏、破坏性测试等); 好的测试用例集能花费最小的代价(人力、物力、财力、 时间)做最好的测试。
设计测试用例的基本准则
测试用例的代表性 能够代表并覆盖各种合理的和不合理的、合法的和非 法的、边界的和越界的以及极限的输入数据、操作和环 境设置等。 测试结果的可判定性 即测试执行结果的正确性是可判定的,每一个测试用 例都应有相应的期望结果。 测试结果的可再现性 即对同样的测试用例,系统的执行结果应当是相同的。
例:程序输入x取值于一个固定的枚举类型{1,3,7,15},且程序 中对这4个数值分别进行了处理,则有效等价类为x=1、x=3、 x=7、x=15,无效等价类为x≠1,3,7,15的值的集合。
等价类的划分
(3)按照数值集合划分 在输入条件规定了输入值的集合或 规定了“必须如何”的条件下,可以确定一个有效等价类和 一个无效等价类(该集合有效值之外)。 例:程序输入条件为取值为奇数的整数 x,则有效等价类为x (4)按照限制条件或规则划分 在规定了输入数据必须遵 的值为奇数的整数,无效等价类为 x的值不为奇数的整数。 守的规则或限制条件的情况下,可确定一个有效等价类(符 合规则)和若干个无效等价类(从不同角度违反规则)。 例:程序输入条件为以字符‘a’开头、长度为8的字符串,并且 (5)细分等价类 在确知已划分的等价类中各元素在程序中 字符串不包含‘a’~ ‘z’之外的其它字符,则有效等价类为满 的处理方式不同的情况下,则应再将该等价类进一步划分为 足了上述所有条件的字符串,无效等价类为不以‘a’开头的字 更小的等价类,并建立等价类表。 符串、长度不为8的字符串和包含了‘a’~ ‘z’之外其它字符的 字符串。
三角形黑盒测试技术实验报告
黑盒测试技术—三角形问题实验报告一、问题描述输入三个整数a、b、c,分别作为三角形的三条边,通过程序判断这三条边是否能构成三角形?如果能构成三角形,则判断三角形的类型并输出(等边三角形、等腰三角形、一般三角形),如果不构成三角形输出不能构成三角形。
要求:(1)输入三个整数a、b、c,必须满足以下条件:1≤a≤200;1≤b≤200;1≤c≤200。
(2)容错处理:输入空值的提示;输入的值满足类型的提示;(3)不限制开发环境,不限制开发语言;(4)尽可能不对自己的程序进行测试设计。
(5)请分别采用边界值分析法、等价类分析法、决策表分析法、基于场景分析法设计测试用例;(6)正文格式(除源代码用小五号单倍行距),其他行距固定值20,字号小四。
二、程序主要源代码using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace software_test{public partial class FrmTest : Form{public FrmTest(){InitializeComponent();}private void btnOk_Click(object sender, EventArgs e){string numbera = "a";string numberb = "b";string numberc = "c";String txta = txtA.Text;String txtb = txtB.Text;String txtc = txtC.Text;//输入值是否正确的判断judgeInput(txta, numbera);judgeInput(txtb, numberb);judgeInput(txtc, numberc);//组成三角形的判断judgeTriangle(txta, txtb, txtc);}//判断输入是否为a数字的方法且是否有效private void judgeInput(String e,String X){int x;if (!int.TryParse(e,out x)) {String message = String.Format("{0}输入必须为整数!", X);MessageBox.Show(message);}else if (!(int.Parse(e) >= 1 && int.Parse(e) <= 200)){String message = String.Format("{0}输入必须为1到200!",X);MessageBox.Show(message);}}//判断能否组成三角形,或者组成为等腰,等边,还是普通三角形public void judgeTriangle(String x, String y, String z) {int b1=int.Parse(x);int b2=int.Parse(y);int b3=int.Parse(z);if (!(b1 + b2 > b3 && b1 + b3 > b2 && b2 + b3 > b1)){MessageBox.Show("不能组成三角形");}else if (b1 == b2 && b2 == b3){MessageBox.Show("能组成等边三角形");}else if (b1 == b2 || b2 == b3 || b1 == b3){MessageBox.Show("能组成等腰三角形");}else {MessageBox.Show("能组成普通三角形");}}}}三、程序界面(截图)四、设计测试用例1. 用边界值测试方法设计测试用例用边界值分析法设计测试用例,按照下列步骤进行:(1)分析各变量取值答:a取0,1,2,199,200,201;b取0,1,2,199,200,201;c取0,1,2,199,200,201(2)测试用例数答:18个(3)设计测试用例(给出所有测试用例)三角形问题的测试用例2. 用等价类测试方法设计测试用例(1)首先分析题目中给出的条件和隐含的输入要求,输入条件如下:答:1<=a<=200;1<=b<=200;1<=c<=200;一般三角形:(a+b)>c&&(a+c)>b&& (b+c)>a;等腰三角形:b=c||a=c||a=b;(2)根据输入条件的要求划分等价类,列出等价类表并编号(3) 设计测试用例,覆盖上表中的等价类,如表1-3表所示。
三角形问题的等价类测试用例
三角形问题的等价类测试用例三角形问题的等价类测试用例四种可能出现的输出:非三角形、不等边三角形、等腰三角形和等边三角形可以使用这些输出标识如下所示的输出(值域)等价类: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不构成三角形}四个弱一般等价类测试用例是:测试用例 a b c 预期输出WN1 5 5 5 等边三角形WN2 2 2 3 等腰三角形WN3 3 4 5 不等边三角形WN4 4 1 2 非三角形由于变量a、b和c没有有效区间,则强一般等价类测试用例与弱一般等价类测试用例相同.考虑a、b和c的无效值产生的以下额外弱健壮等价类测试用例:测试用例 a b c 预期输出WR1 -1 5 5 a取值不在所允许的取值值域内WR2 5 -1 5 b取值不在所允许的取值值域内WR3 5 5 —1 c取值不在所允许的取值值域内WR4 201 5 5 a取值不在所允许的取值值域内WR5 5 201 5 b取值不在所允许的取值值域内WR6 5 5 201 c取值不在所允许的取值值域内以下是额外强健壮性等价类测试用例三维立方的一个“角”:测试用例 a b c 预期输出SR1 —1 5 5 a取值不在所允许的取值值域内SR2 5 -1 5 b取值不在所允许的取值值域内SR3 5 5 —1 c取值不在所允许的取值值域内SR4 —1 —1 5 a、b取值不在所允许的取值值域内SR5 5 —1 -1 b、c取值不在所允许的取值值域内SR6 —1 5 —1 a、c取值不在所允许的取值值域内SR7 -1 —1 —1 a、b、c取值不在所允许的取值值域内。
三角形测试用例
三角形测试用例题目:输入三个数a、b、c分别作为三边的边长构成三角形。
通过程序判定所构成的三角形是一般三角形、等腰三角形还是等边三角形时。
用等价类划分方法为该程序设计测试用例。
在三角形计算中,要求三角形的三个边长:A B C。
1、当三边不可能构成三角形时提示错误,可构成三角形时计算三角形周长。
2、若是等腰三角形打印“等腰三角形”,若两个等腰的平方和等于第三边平方和,则打印“等腰直角三角形”。
3、若是等边三角形,则打印:“等边三角形”。
4、画出程序流程图并设计一个测试用例。
分析一下:1、构成三角形的条件:任意两边之和大于第三边;2、构成等腰三角形的条件:任意两边相等;3、构成等腰直角三角形的条件:任意两边相等,而且两条边的平方和等于第三边的平方和;4、构成等边三角形的条件:三条边都相等。
那么用什么样的设计方法进行测试用例的设计呢?一、等价类划分:三角形三条边A、B、C的数据类型不同二、边界值分析:由于三角形的边长可以是正整数或正小数,所以就不对长度进行测试,那么边界值分析就不用了三、因果图法:三角形的三条边数据输入组合我们看一下三角形的流程图:注:改正一个小错误,在判断是否是等腰直角三角形中 A的平方=B的平方+C的平方。
由于画图时,网络速度问题,导致真或假的值没有标注。
三角形等价类列表判定类型有效等价类无效等价类一般三角形 ((a>0) Λ(b>0) Λ(c>0))Λ(a<=0 V b<=0 V c<=0) Λ(((a+b)>c) V ((a+c)>b) V ((b+c)>a)) (1) (((a+b)<=c) V ((a+c)<=b) V ((b+c)<=a)) (2)等腰三角形 (1) Λ (a=b V a=c V b=c)(3) (2)V (a!=b Λ b!=c Λ a!=c) (4)等边三角形 (1) Λ (a=b=c ) (5) (2) V (a!=b!=c)(6)根据上表组成的测试用例:三角形等价类测试用例ID 输入数据覆盖测试用例输出结果a b c1 3 4 5 (1) 一般三角形2 0 4 5 (2) 非(一般)三角形3 3 0 5 (2)4 3 4 0 (2)5 1 4 5 (2)6 3 8 5 (2)7 3 2 1 (2)8 3 3 5 (3) 等腰三角形9 3 4 310 3 4 4#include<stdio.h>void main (){float a, b, c;printf("请输入三角形三边");scanf("%f,%f,%f",&a,&b,&c);if (a==b||b==c||a==c)printf("等腰三角形");if (a==b&&b==c)printf("等边三角形");if (a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a) printf("直角三角形");elseprintf("普通三角形");}11 3 4 9 (4) 非等腰三角形12 3 3 3 (5) 等边三角形13 -1 0 1 (6) 非等边三角形我们再分析一下三角形的等价类:有效等价类:输入3个正整数或正小数:1、两数之和大于第三数,如A<B+C;B<C+A;C<A+B2、两数之和不大于第三数3、两数相等,如A=B或B=C或C=A4、三数相等,如A=B=C5、三数不相等,如A!=B,B!=C,C!=A无效等价类:1、空2、负整数3、非数字4、少于三个数三角形测试用例类别输入条件有效等价类无效等价类是否是三角形 (A>0) (1)(B>0) (2)(C>0) (3)(A+B>C) (4)(B+C>A) (5)(C+A>B) (6)(A<=0) (7)(B<=0) (8)(C<=0) (9)(A+B<=C) (10)(B+C<=A) (11)(C+A<=B) (12)是否是等腰三角形 (A=B) (13)(B=C) (14)(C=A) (15)(A!=B)and(B!=C)and(C!=A) (16)是否是等腰直角三角形 (A=B)and(A2+B2=C2) (17)(B=C)and(B2+C2=A2) (18)(C=A)and(C2+A2=B2) (19)(A!=B)and(B!=C)and(C!=A) (20)是否是等边三角形(A=B)and(B=C)and(C=A) (21)(A!=B) (22) (B!=C) (23)(C!=A) (24)#include <stdio.h>void main(){int a,b,c;printf("Please Input a,b,c:");scanf("%d",&a);scanf("%d",&b);scanf("%d",&c);if(a+b<=c||a+c<=b||b+c<=a) /*判断是否能构成三角形*/ printf("No!\n");else{printf("Yes!\n");if(a==c||a==b||b==c) /*判断是否为等腰三角形*/{printf("It can be an isoceles triangle!\n");if(a==c && a==b) /*判断是否为等边三角形*/printf("It also can be an equilateral triangle!\n"); elseprintf("But it can not be an equilateral triangle!\n"); }else{printf("It can't be an isoceles triangle!\n");}}getch();}三角形测试用例:序号 [A,B,C] 覆盖等价类输出1 [3,4,5] (1)(2)(3)(4)(5)(6) 是三角形2 [0,1,2] (7) 非三角形3 [1,0,2] (8) 非三角形4 [1,2,0] (9) 非三角形5 [1,2,3] (10) 非三角形6 [1,3,2] (11) 非三角形7 [3,1,2] (12) 非三角形8 [3,3,4] (1)(2)(3)(4)(5)(6)(13) 等腰三角形9 [3,4,4] (1)(2)(3)(4)(5)(6)(14) 等腰三角形10 [3,4,3] (1)(2)(3)(4)(5)(6)(15) 等腰三角形11 [2√2,2√2,4] (1)(2)(3)(4)(5)(6)(17) 等腰直角三角形12 [4,2√2,2√2] (1)(2)(3)(4)(5)(6)(18) 等腰直角三角形13 [2√2,4,2√2] (1)(2)(3)(4)(5)(6)(19) 等腰直角三角形14 [3,4,5](1)(2)(3)(4)(5)(6)(16)(20)(22)(23)(24) 是三角形15 [3,3,3] (1)(2)(3)(4)(5)(6)(16)(21) 等边三角形16 [,,,] 无效等价类错误提示17 [-3,4,5] 无效等价类错误提示18 [a,3,@] 无效等价类错误提示19 [3,4] 无效等价类错误提示。
等价类划分法实验报告
有两边不为整数
a、b不为整数(11)
a、c不为整数(12)
b、c不为整数(13)
三边均不为整数
a、b、c均不为整数(14)
(2)
三个数
只有两个数
只给a和b两个(15)
只给a和c两个(16)
只给b和c两个(17)
只有一个数
只给a 一个数(18)
只给b一个数(19)
只给c一个数(20)
c2: 1<=b<=200 c5: b<a+c
c3: 1<=c<=200 c6: c<a+b
步骤:
1.分析三角形对输入条件的要求
a)整数
b)3个数
c)非零数
d)正数
e)第三边小于两边之和
f)等腰
g)等边
2.列出等价类并编号
序号
有效等价类
无效等价类
(1)
整数
有一边不为整数
a不为整数(8)
b不为整数(9)
两个数不为正数
a、b不为正数(32)
a、c不为正数(33)
b、c不为正数(34)
三个数不为正数
a、b、c均不为正数(35)
(5)
两边之和大于第三边
两边之和小于第三边
a+b<c(36)
a+c<b(37)
b+c<a(38)
两边之和等于第三边
a+c=b(39)
a+b=c(40)
b+c=a(41)
(6)
等腰
(a=b,b=c,a=c)
a<>b且b<>c (42)
a<>c且c<>b (43)
软件测试经典三角形案例
软件测试-黑盒测试例子一、等价类划分问:某程序规定:"输入三个整数 a、 b、 c分别作为三边的边长构成三角形。
通过程序判定所构成的三角形的类型,当此三角形为一般三角形、等腰三角形及等边三角形时,分别作计算… "。
用等价类划分方法为该程序进行测试用例设计。
(三角形问题的复杂之处在于输入与输出之间的关系比较复杂。
)解:分析题目中给出和隐含的对输入条件的要求:(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)覆盖无效等价类的测试用例:二、边界值分析法NextDate函数的边界值分析测试用例在NextDate函数中,隐含规定了变量mouth和变量day的取值范围为1≤mouth≤12和1≤day≤31,并设定变量year的取值范围为1912≤year≤2050 。
三、错误推测法测试一个对线性表(比如数组)进行排序的程序,可推测列出以下几项需要特别测试的情况:I.输入的线性表为空表;II.表中只含有一个元素;III.输入表中所有元素已排好序;IV.输入表已按逆序排好;V.输入表中部分或全部元素相同。
等价类划分法实验报告
a、b不为正数(32)
a、c不为正数(33)
b、c不为正数(34)
三个数不为正数
a、b、c均不为正数(35)
(5)
两边之和大于第三边
两边之和小于第三边
a+b<c(36)
a+c<b(37)
b+c<a(38)
两边之和等于第三边
a+c=b(39)
a+b=c(40)
b+c=a(41)
(6)
等腰
三个数以上
给出三个数以上(21)
(3)
非零数
一个数为零
a为零(22)
b为零(23)
c为零(24)
两个数为零
a、b为零(25)
a、c 为零(26)
b、c为零(27)
三个数为零
a、b、c都为零(28)
(4)
正数
(a>0,b>0,c>0)
一个数不为正数
a不为正数(29)
b不为正数(30)
c不为正数(31)
c不为整数(10)
有两边不为整数
a、b不为整数(11)
a、c不为整数(12)
b、c不为整数(13)
三边均不为整数
a、b、c均不为整数(14)
(2)
三个数
只有两个数
只给a和b两个(15)
只给a和c两个(16)
只给b和c两个(17)
一个数(19)
只给c一个数(20)
(文字数量要占到总空白区的70%以上。)
一.
陈述:
三角形问题接受三个整数a、b和c作为输入,用作三角形的边。程序的输出是由这三条边确定的三角形类型:等边三角形、等腰三角形、不等边三角形或非三角形。
等价类划分(三角形问题)
等价类划分(三角形问题)等价类划分(三角形问题)三角形是我们学习数学时经常接触到的一个基本概念,而等价类划分是解决三角形问题时常常使用的一种方法。
本文将介绍等价类划分在解决三角形问题中的应用,并讨论几个具体的例子。
一、等价类划分的基本原理等价类划分是一种将对象分成若干个等价的子集的方法。
在三角形问题中,我们可以通过等价类划分来将所有可能的三角形划分为若干个等价类,每个等价类中的三角形拥有相同的性质,从而能够更加方便地进行推理和分析。
具体而言,我们可以将所有可能的三角形划分为以下几个等价类:1. 等腰三角形:具有两条边长度相等的三角形,可以进一步划分为等边三角形和非等边三角形两个子类。
2. 直角三角形:拥有一个内角为直角的三角形。
3. 钝角三角形:拥有一个内角大于90度的三角形。
4. 锐角三角形:拥有三个内角均小于90度的三角形。
通过将三角形划分为不同的等价类,我们可以更加清晰地理解三角形的性质,并且能够更好地解决与三角形相关的问题。
二、等价类划分的应用举例下面我们将通过几个具体的例子来说明等价类划分在解决三角形问题时的应用。
例一:在一个三角形中,若有两边长度相等,则该三角形一定是等腰三角形。
解析:根据题目给出的条件,我们可以将所有可能的三角形划分为两个等价类,即等腰三角形和非等腰三角形。
对于非等腰三角形,其两边长度一定不相等。
因此,根据等价类划分的原理,当两边长度相等时,该三角形一定属于等腰三角形。
例二:在一个三角形中,若三个内角均小于90度,则该三角形一定是锐角三角形。
解析:根据题目给出的条件,我们可以将所有可能的三角形划分为两个等价类,即锐角三角形和非锐角三角形。
对于非锐角三角形,至少存在一个内角大于90度。
因此,根据等价类划分的原理,当三个内角均小于90度时,该三角形一定属于锐角三角形。
通过以上两个例子的解析,我们可以看出等价类划分对于解决三角形问题提供了一种便捷的思路和方法。
通过将三角形按照一定的规则划分为不同的等价类,我们能够更加直观地理解三角形的性质,更加方便地进行推理和证明。
软件测试--等价类划分和判定表判断三角形
软件测试实验报告
课程名称:软件测试
实验项目:判断三角形
cout<<"可构成等边三角形:"<<endl;
}
else if(a==b||a==c||b==c){
cout<<"可构成等腰三角形"<<endl;
}
else
{
cout << "可构成普通三角形" << endl;
}
}
else cout<<"不能构成三角形"<<endl;
}
三.等价类划分:
(1)划分等价类:
-
-
-
-
-
-
-
-
-
1
0
1
0
1
0
1
0
动作
不能构成三角形
1
1
1
1
1
1
1
1
1
等腰三角形
1
1
1
等边三角形
1
一般三角形
1
不可能
1
1
1
(2)测试用例设计:
测试用例id
a
b
c
预期输出
1
-1
3
4
不能构成三角形
2
2
-3
3
不能构成三角形
黑盒测试——等价类划分法
实验二: 黑盒测试——等价类划分法【实验环境】Windows 10 操作系统,C,C++,C#、Java或Python语言开发环境(IDE)。
【实验类型】设计型【实验目的】1.认识黑盒测试方法中等价类划分测试方法原理2.掌握黑盒测试方法中等价类划分测试方法过程【实验内容】【实验材料】1.三角形问题问题描述:三角形问题接受三个整数,a、b和c作为输入,用作三角形的边。
程序的输出是由这三条边确定的三角形类型:等边三角形、等腰三角形、不等边三角形或非三角形。
作为输入:三角形的三条边必须满足如下条件:C1:1<=a<=100C2:1<=b<=100C3:1<=c<=100C4:a<b+cC5:b<a+cC6:c<a+b2.NextDate函数问题描述:NextDate是一个由三个变量(月份、日期和年份)的函数。
函数返回输入日期后边的那个日期。
作为输入:变量月份、日期和年都具有整数值,满足以下条件。
C1:1<=月份<=12C2:1<=日期<=31C3:1912<=年<=20503.佣金问题问题描述:前亚利桑那洲境内的一位步枪销售商销售密苏里州制造商制造的步枪机(lock)、枪托(stock)和枪管(barrel)。
枪机卖45美元,枪托卖30美元,枪管卖25美元。
销售商每月至少要售出一支完整的步枪,且生产限额是大多数销售商在一个月内可销售70个枪机、80个枪托和90个枪管。
每访问一个镇子后,销售商都给密苏里州步枪制造商发出一份很短的电报,通知几个枪机被售出。
这样步枪制造商就知道当月的销售情况,并计算销售商的佣金如下:不到(含)1000美元的部分为10%;1000(不含)~1800(含)美元的部分为15%;超过1800美元的部分为20%。
佣金程序生成月份销售报告,汇总售出的枪机、枪托和枪管总数,销售商的总销售额以及佣金。
软件测试实验报告
软件测试实验报告姓名:*******专业:********************* 班级:***********学号:*************日期: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函数的边界值分析测试用例。
基于决策表的测试三角形问题
基于决策表的测试三角形问题基于决策表的测试(三角形问题)2010-06-25 01:49决策表,也叫判定表。
在所有的功能性测试方法中,基于决策表的测试方法被认为是最严格的,因为决策表具有逻辑严格性。
人们使用两种密切关联的方法:因果图法和决策表格法。
与决策表相比,这两种方法使用起来更麻烦,并且全冗余。
决策表是分析和表达多逻辑条件下执行不同操作的情况的工具。
在程序设计发展的初期,决策表就已被用作编写程序的辅助工具了。
它可以把复杂的逻辑关系和多种条件组合的情况表达得比较明确。
1、决策表的组成决策表通常由4个部分组成,如下图:●条件桩(condition stub):列出了问题的所有条件。
通常认为列出的条件的次序无关紧要。
●动作桩(action stub):列出了问题规定可能采取的操作。
这些操作的排列顺序没有约束。
●条件项(condition entry):列出针对它所列条件的取值,在所有可能情况下的真假值。
●动作项(action entry):列出在条件项的各种取值情况下应该采取的动作。
●规则:任何一个条件组合的特定取值及其相应要执行的操作。
在决策表中贯穿条件项和动作项的一列就是一条规则。
显然,决策表中列出多少组条件取值,也就有多少规则,条件项和动作项就有多少列。
2、决策表建立决策表的建立应该根据软件规格说明,步骤如下:①确定规则的个数。
假如有n个条件,每个条件有两个取值(0,1),故有2n种规则。
②列出所有的条件桩和动作桩。
③输入条件项。
④填入动作项。
制定初始决策表。
⑤简化。
合并相似规则或者相同动作。
Beizer(《Software Testing Techniques》的作者)指出了适合使用决策表设计测试用例的条件:①规格说明以决策表的形式给出,或很容易转换成决策表。
②条件的排列顺序不影响执行哪些操作。
③规则的排列顺序不影响执行哪些操作。
④当某一规则的条件已经满足,并确定要执行的操作后,不必检验别的规则。
三角形问题的三种测试方式边界值测试等价类测试、
三角形问题的三种测试方式边界值测试等价类测试、三角形问题的三种测试方式--边界值测试,等价类测试、决策表测试2010-12-05 15:32一.方法简介1.定义:边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。
通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。
2.与等价划分的区别1)边界值分析不是从某等价类中随便挑一个作为代表,而是使这个等价类的每个边界都要作为测试条件。
2)边界值分析不仅考虑输入条件,还要考虑输出空间产生的测试情况。
3.边界值分析方法的考虑:长期的测试工作经验告诉我们,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部。
因此针对各种边界情况设计测试用例,可以查出更多的错误。
使用边界值分析方法设计测试用例,首先应确定边界情况。
通常输入和输出等价类的边界,就是应着重测试的边界情况。
应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据。
4.常见的边界值1)对16-bit的整数而言32767和-32768是边界2)屏幕上光标在最左上、最右下位置3)报表的第一行和最后一行4)数组元素的第一个和最后一个5)循环的第0次、第1次和倒数第2次、最后一次5.边界值分析1)边界值分析使用与等价类划分法相同的划分,只是边界值分析假定错误更多地存在于划分的边界上,因此在等价类的边界上以及两侧的情况设计测试用例。
例:测试计算平方根的函数--输入:实数--输出:实数--规格说明:当输入一个0或比0大的数的时候,返回其正平方根;当输入一个小于0的数时,显示错误信息"平方根非法-输入值小于0"并返回0;库函数Print-Line可以用来输出错误信息。
2)等价类划分:I.可以考虑作出如下划分:a、输入(i)0和(ii)=0b、输出(a)=0和(b)Error II.测试用例有两个:a、输入4,输出2。
《探索三角形全等的条件》教学实践报告
《探索三角形全等的条件》教学实践报告(指导思想,设计方法等说明)根据基础教育课程改革的具体目的,结合注重开放与生成,构造充满生命活力的课堂教学体系。
改革课堂过于注重知识传授的倾向,强调形成积极主动的学习态度,关注学生的学习兴趣和体验,让学生主动参与学习活动,并引导学生在课堂活动中感悟知识的生成,发展与变化。
在教学过程中由学生主动去发现,去思考,留有足够的时间让他们去操作,体现以学生为主体的原则,而教师为主导,采用启发探索法、讲授法、讨论法相结合的教学方法。
这样,使学生通过讨论,实践,形成深刻印象,对知识的掌握比较牢靠,对难点也比较容易突破,同时也培养了学生的数学能力。
这节课内容通过学生自己去画图,小组讨论的方法,使他们亲自去感受至少要几个元素才能决定两个三角形全等这一问题。
本节的学习使学生初步掌握分类讨论的方法,培养学生把实际问题转化为数学问题的能力。
通过图形和器具的操作调动学生的学习积极性,同时让学生通过观察、思考、操作,体验转化过程,真正学会用数学知识解决实际的问题。
一、实践过程<一>创设情境,导入新课问:若两个三角形的三条边,三个角分别对应相等,则这两个三角形全等,那么能否减少一些条件,找到更为简单的判定三角形全等的方法呢?问题设计具有一定的挑战性,目的是激发学生的探索欲望。
<二>探索发现,得出结论探索一、两个三角形有一组元素对应相等探索二:两个三角形有两组对应相等的元素结论:通过上述画图比较,学生很容易发现“有两组元素对应相等”也不能决定两个三角形全等。
<三>课堂总结,发展深化为了使每一个学生都参与知识小结,教师启发:来看看这节课我们有哪些收获,学到了哪些好的方法。
学生积极发言,归纳所学的知识,教师边评价,边补充,使学生回顾,形成深刻印象,接下来可视情况让学生完成“练一练”或者教师与学生一起解答。
<四>练一练见书112页,1,2题作业:见课课练:11章第3课时二、收获与体会收获:本课设计中先以问题为引导,激发学生的兴趣,再根据几个活动探索,让学生体验由实际问题转化为数学理论的过程,最后再设置问题悬念,让学生课后探索完成,使活动和探索始终贯穿于可内外。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、实验环境
Visual C++ 6.0软件环境
二、实验原理
软件测试是通过运行所开发的软件产品,识别和控制软件缺陷,以验证和确认用户需求已得到满足的过程。
三、给出三角形等价类表和测试用例表?
三角形问题:输入三个整数a、b、c分别作为三角形的三条边,现通过程序判断由三条边构成的三角形的类型为等边三角形、等腰三角形、一般三角形(特殊的还有直角三角形)以及构不成三角形。
现在要求输入三个整数a、b、c,必须满足以下条件:
条件1 1≤a≤100 条件4 a≤b+c
条件2 1≤b≤100 条件5 b≤a+c
条件3 1≤c≤100 条件6 c≤a+b
解:(开发程序清单)
#include <iostream.h>
int i = 0;
void main(void){
while(i==0)
{
int a,b,c;
cout<<"请输入3个整数:"<<endl;
cin>>a>>b>>c;
if
(!(a+b<=c||a+c<=b|| b+c<=a)&&(a>=1&&a<=100)&&(b>=1&&b<=100)&&(c>=1&&c<=100)) {
if (a==b && a==c) cout<<"等边三角形"<<endl;
else if (a==b || a==c || b==c) cout<<"等腰三角形"<<endl;
else cout<<"一般三角形"<<endl;
}
else {
if(a<1||a>100) cout<<"a="<<a<<"不满足条件1,不能构成三角形"<<endl;
else if(b<1||b>100) cout<<"b="<<b<<"不满足条件2,不能构成三角形"<<endl;
else if(c<1||c>100) cout<<"c="<<c<<"不满足条件3,不能构成三角形"<<endl;
else if(a>=b+c) cout<<"不满足a<b+c,不能构成三角形"<<endl;
else if(b>=a+c) cout<<"不满足b<a+c,不能构成三角形"<<endl;
else if(c>=b+a) cout<<"不满足c<a+b,不能构成三角形"<<endl;
}
}
}
四、测试用例
等价类表
测试用例表
五、测试结果
六、心得体会
这次实验题目是三角形问题,其实用C++编程并不难,因为以前都做过,主要是测试。
首先
要通过题目所给的条件为依据,在C++环境下编程,再分析每项功能的输入的取值范围,对所有可能的输入值进行分类,列出等价类表和测试用列表。