软件测试技术综合练习题一、根据下面给出的三角形的需求编写程序:(20分)输入条件:(1)a+b>c;(2)a+c>b;(3)b+c>a;(4)0<a<200;(5)0<b<200;(6)0<c<200;(7)a==b;(8)a==c;(9)b==c;(10)a2+b2==c2;(11)a2+ c2== b2;(12)c2+b2== a2输出结果:(1)不能组成三角形;(2)等边三角形;(3)等腰三角形;(4)直角三角形;(5)一般三角形;(6)某些边不满足限制具体的函数的调用关系图:复杂模块triangleType的流程图:代码:using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace Tester{class Program{static void Main(string[] args){int a, b, c;Console.WriteLine("请输入三角形的三条边,都是整数:");bool succ = int.TryParse(Console.ReadLine(), out a);succ = int.TryParse(Console.ReadLine(), out b);succ = int.TryParse(Console.ReadLine(), out c);Triangle triagle = new Triangle();int type=triagle.triangleType(a, b, c);switch (type){case 1:Console.WriteLine("1不能组成三角形");break;case 2:Console.WriteLine("2是等边三角形");break;case 3:Console.WriteLine("3是等腰三角形");break;case 4:Console.WriteLine("4是直角三角形");break;case 5:Console.WriteLine("5是一般三角形");break;case 6:Console.WriteLine("6某些边不满足限制");break;}//TriangleFunction(a,b,c);Console.ReadLine();}public static void TriangleFunction(int a,int b, int c){if (0 < a && a < 200 && 0 < b && b < 200 && 0 < c && c < 200){if (a + b > c && a + c > b && c + b > a){if (a == b && b == c && a == c) //这里可以省掉一个判断{Console.WriteLine("2是等边三角形");}else{if (a == b || b == c || a == c){Console.WriteLine("3是等腰三角形");}else{if (a * a + b * b == c * c || a * a + c * c == b * b || b * b + c * c == a * a) {Console.WriteLine("4是直角三角形");}else{Console.WriteLine("5是一般三角形");}}}}else{Console.WriteLine("1不能组成三角形");}}else{Console.WriteLine("6某些边不满足限制");}}}///<summary>///三角形类型判断类///</summary>class Triangle{///<summary>///判断一个整数是否在(min, max)区间内///</summary>///<param name="i">三角形的一条边</param>///<returns>返回值:true-否; false-是</returns>public bool isOutOfRange(int i,int min,int max){if (min < i && i < max){return false;}else{return true;}}///<summary>///判断三条边是否合法(即:判断三条边都在合法的范围内)///</summary>///<param name="a"></param>///<param name="b"></param>///<param name="c"></param>///<returns>返回值:true-是; false-否</returns>public bool isLegal(int a, int b, int c){if (isOutOfRange(a,0,200) || isOutOfRange(b,0,200) || isOutOfRange(c,0,200)) {return false;}return true;}///<summary>///判断两条边之和是否大于第三边///</summary>///<param name="a"></param>///<param name="b"></param>///<param name="c"></param>///<returns>返回值:true-是; false-否</returns>public bool isSumBiger(int a, int b, int c){if (a + b > c){return true;}return false;}///<summary>///判断三条边是否能够组成三角形///<param name="a"></param>///<param name="b"></param>///<param name="c"></param>///<returns>返回值:true-是; false-否</returns>public bool isTriangle(int a, int b, int c){if (isSumBiger(a, b, c) && isSumBiger(a, c, b) && isSumBiger(b, c, a)){return true;}return false;}///<summary>///判断两条边是否相等///</summary>///<param name="a"></param>///<param name="b"></param>///<returns>返回值:true-是; false-否</returns>public bool isEquals(int a, int b){if (a == b){return true;}return false;}///<summary>///求三角形有几条边相等///</summary>///<param name="a"></param>///<param name="b"></param>///<param name="c"></param>///<returns>返回值:相等边的数量,1:没有边相等 2:只有两条边相等 3:三条边相等</returns> public int howManyEquals(int a, int b, int c){int count = 1;if (isEquals(a, b)){count++;}if (isEquals(b, c)){count++;}if (isEquals(a, c)){count++;}if (count > 3) //如果三条边都相等,则count多加了一次{count = 3;}return count;}///判断是否满足两边平方之和是否等于第三边的平方///</summary>///<param name="a"></param>///<param name="b"></param>///<param name="c"></param>///<returns>返回值:true-是; false-否</returns>public bool isPowerSumEquals(int a, int b, int c) {if (a * a + b * b == c * c){return true;}return false;}///<summary>///判断第一个数是否比第二个数大///</summary>///<param name="a"></param>///<param name="b"></param>///<returns>返回值:true-是; false-否</returns>public bool isGreaterThan(int a, int b){if (a > b){return true;}return false;}///<summary>///判断是否是直角三角形///</summary>///<param name="a"></param>///<param name="b"></param>///<param name="c"></param>///<returns>返回值:true-是; false-否</returns>public bool isRightRriangle(int a, int b, int c) {int max = 0;if (isGreaterThan(a, b)){max = a;a = b;b = max;}if (isGreaterThan(b, c)){max = b;b = c;c = max;}return isPowerSumEquals(a, b, c);}///<summary>///判断三角形的类型测试用例:(1)语句覆盖方法设计triangleType方法测试案设计:测试用例具体取值条件判定条件通过路径输入:{a=-10 or a=300 orb=0 or b=201 c=-1 or c=250}输出:{6.某些边不满足限制} a<0 or a>=200,b<0 or b>=200c<0 or c>=200A=.F. P1(1-2-12)输入:{a=10,b=20,c=25} 输出:{1、不能组成三角形} a+b<=cor b+c<=aor a+c<=bA=.T.B=.F.P2(1-3-4-12)输入:{a=50,b=50,c=50} 输出:{2、等边三角形} a==b and a==cA=.T.B=.T.C=.T.P3(1-3-5-6-12)输入:{a=50,b=50,c=80} 输出:{3、等腰三角形} a==b or b==c or a==cA=.T.B=.T.C=.F.D=.T.P4(1-3-5-7-8-12)输入:{a=3,b=4,c=5} 输出:{4、直角三角形} a*a+b*b=c*cA=.T.B=.T.C=.F.D=.F.E=.T.P5(1-3-5-7-9-10-12)输入:{a=12,b=13,c=20} 输出:{5、一般三角形} 其他情形A=.T.B=.T.C=.F.D=.F.E=.F.P6(1-3-5-7-9-11-12)(2) 判定覆盖方法设计isOutOfRange 方法测试用例具体取值条件 判定条件通过路径输入:{a=10,b=10,c=25} 输出:{1、不能组成三角形}0<a<2000<b<200 0<c<200A=.T.P1(1-3-4-12)输入:{a=-10 or a=300or b=0 or b=201 c=-1 or c=250} 输出:{6.某些边不满足限制}a<=0&&a>=200 b<=0&&b>=200 c<=0&&c>=200 A=.F..P2(1-2-4-12)(3)条件覆盖方法设计isLegal 方法 A 14 F2 TB F83 T F 56 7.条件0<b<200:取真时为T2,取假时为F2; .条件0<c<200:取真时为T3,取假时为F3; .条件c+b>a:取真时为T5,取假时为F5; .条件a+c>b:取真时为T6,取假时为F6;测试用例: .条件0<a<200:取真时为T1,取假时为F1; a,b,c,是一般三角形结束a,b,c,不能构成三角形a>0&&b>0&&c>0a+b>0&&a+c>b&&b+c>a测试用例具体取值条件取值条件判定条件通过路径输入:{a=13,b=24,c=35} 输出:{5、一般三角形}0<a<2000<b<2000<c<200a +b > ca + c > bc + b > aA=.T.B=.T.C=.T.D=.T.E=.T.F=.T.P=.T.M=.T. P1(1-3-5)输入:{a=-10 or a=300 or b=0 or b=201 c=-1 orc=250}输出:{6.某些边不满足限制} a<=0&&a>=200b<=0&&b>=200c<=0&&c>=200a +b < ca + c < bc + b < aA=.F.B=.F.C=.F.D=.F.E=.F.F=.F.P=.F.M=.F.P2(1-2-7-8)(5)条件组合覆盖方法设计isTriangle方法测试用例具体取值条件取值条件判定条件通过路径输入:{a=13,b=24,c=35} 输出:{5、一般三角形} 0<a<2000<b<2000<c<200a +b > ca + c > bc + b > aA=.T.B=.T.C=.T.D=.T.E=.T.F=.T.P=.T.M=.T. P1(1-3-5)输入:{a=-10 or a=300 or b=0 or b=201 c=-1 orc=250}输出:{6.某些边不满足限制} a<=0&&a>=200b<=0&&b>=200c<=0&&c>=200a +b < ca + c < bc + b < aA=.F.B=.F.C=.F.D=.F.E=.F.F=.F.P=.F.M=.F.P2(1-2-7-8)输入:{a=1;b=3 c=6} 输出:{1、不能组成三角形} 0<a<2000<b<2000<c<200a +b < ca + c < bc + b < aA=.T.B=.T.C=.T.D=.F.E=.F.F=.FP=.T.M=.F. P(1-3-4-6-8)(6)路径覆盖方法设计triangleType方法C3 0〈c〈100 E3 等腰三角形{a=3,b=3,c=5}C4 a>b+c E4 等边三角形{a=3,b=3,c=3}C5 b>a+c E5 直角{a=3,b=4,c=5}C6 c>b+aC7 a=bC8 b=cC9 a=cC10 a*2+b*2=c*2C11 c*2+b*2=a*2C12 a*2+c*2=b*2中间结果:10边的范围正确;11可以构成三角形, 12任意两边相等 ,13三条边两两相等 , 14任意两边之和等于第三边。