软件测试-三角形问题
- 格式:ppt
- 大小:1.74 MB
- 文档页数:19
实验报告
课程名称:软件测试
实验项目:判断三角形
专业班级:软件0505班
姓名:
学号:
指导教师:**
沈阳工业大学实验报告
(适用计算机程序设计类)
专业班级:软件学院学号:姓名:实验名称:
附件A 沈阳工业大学实验报告
(适用计算机程序设计类)
专业班级:软件0505 学号:姓名:实验步骤或程序:
1.设计窗口
2.设计结构
ModelMain是程序的主入口,主要实现窗口的建立,从键盘接收三个变量,调用Triangle 类的构造方法和判断方法,并打印出结果。
Judge是一个判断接口定义了3个方法
Triangle是三角形类,实现了Judge接口
3.设计接口
4.实现内部功能
5.输出结果。
一.题目要求:使用c#语言编写程序,实现下面功能:输入三个数,判断能否构成三角形,如果能构成三角形,判断其为等边三角形、等腰三角形或不等边三角形。
三角形的判定方法有返回值,并对该方法进行测试。
二.源代码程序:using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace TriangleTest{class Triangle{int a,b,c;public Triangle(int a0,int b0,int c0){this.a = a0;this.b = b0;this.c = c0;}public bool IsTriangle(){if ((a + b) > c && (a + c) > b && (b + c) > a)return true;elsereturn false;}public bool IsTwoEqualTriangle(){if (IsTriangle()){if (a == b || a == c || b == c)return true;elsereturn false;}else{Console.WriteLine("It is not a triangle!");return false;}}public bool IsThreeEqualTriangle(){if (IsTriangle()){if (a == b && a == c)return true;elsereturn false;}else{Console.WriteLine("It is not a triangle!");return false;}}static void Main(string[] args){int a=0, b=0, c=0;Console.WriteLine("Please input three edges:\n");a =Convert.ToInt32(Console.ReadLine());b = Convert.ToInt32(Console.ReadLine());c = Convert.ToInt32(Console.ReadLine());Triangle tri = new Triangle(a,b,c);if (tri.IsThreeEqualTriangle())Console.WriteLine("It is a threeequal triangle!");else{if (tri.IsTwoEqualTriangle())Console.WriteLine("It is a twoequal triangle!");elseif(tri.IsTriangle())Console.WriteLine("It is a triangle!");elseConsole.WriteLine("It is not a triangle!");}Console.ReadLine();}}}三.程序运行结果:1.判断是否为三角形:2.判断是否为等腰三角形:3.判断是否为等边三角形:四.测试脚本:进行三角形单元测试时,可选择总体测试,也可以一个一个测试。
一、三角形问题逻辑覆盖法1Scanner input=new Scanner(System.in);2double a=input.nextDouble();3double b=input.nextDouble();4double c=input.nextDouble();5boolean isTriangle=true;6if(a<1||a>200||b<1||b>200||c<1||c>200){7System.out.println("输入数据非法\n");}8else if((a+b)<=c||(a+c)<=b||(c+b)<=a){9System.out.println("非三角形\n");}10else if(a==b&&b==c&==c){11System.out.println("等边三角形\n");}12else if(a==b||b==c||a==c){13if(a*a==b*b+c*c||b*b==a*a+c*c||c*c==a*a+b*b){ 14System.out.println("等腰直角三角形\n");15}else{System.out.println("等腰三角形\n");}}16else if(a*a==b*b+c*c||b*b==a*a+c*c||c*c==a*a+b*b){ 17System.out.println("直角三角形\n");}18else System.out.println("一般三角形\n");程序结构图语句:1、2、3、4、5、7、9、11、14、15、17、18路径:共七条路径(1)1-2-3-4-5-6-7(2)1-2-3-4-5-6-8-9(3)1-2-3-4-5-6-8-10-11(4)1-2-3-4-5-6-8-10-12-13-14(5)1-2-3-4-5-6-8-10-12-13-15(6)1-2-3-4-5-6-8-10-12-16-17(7)1-2-3-4-5-6-8-10-12-16-18判定:(1)a<1||a>200||b<1||b>200||c<1||c>200 (节点6)(2)(a+b)<=c||(a+c)<=b||(c+b)<=a (节点8)(3)a==b&&b==c (节点10)(4)a==b||b==c||a==c (节点12)(5)a*a==b*b+c*c||b*b==a*a+c*c||c*c==a*a+b*b (节点13)(6)a*a==b*b+c*c||b*b==a*a+c*c||c*c==a*a+b*b (节点16)条件:(1)a<1||a>200||b<1||b>200||c<1||c>200 (1.1-1.6)(2)(a+b)<=c||(a+c)<=b||(c+b)<=a (2.1-2.3)(3)a==b&&b==c (3.1,3.2)(4)a==b||b==c||a==c (4.1,4.2,4.3)(5)a*a==b*b+c*c||b*b==a*a+c*c||c*c==a*a+b*b (5.1,5.2,5.3) (6)a*a==b*b+c*c||b*b==a*a+c*c||c*c==a*a+b*b (6.1,6.2,6.3)1、语句覆盖/路径覆盖2、判定覆盖3、条件覆盖/判定条件覆盖二、NextDate问题基路径方法1.Scanner input=new Scanner(System.in);2.int year=input.nextInt(),input.nextInt(),day=input.nextInt();3.int tomorrowday=day,tomorrowmonth=month,tomorrowyear=year;4.if(year<1900||year>2100||month<1||month>12||day<1||day>31) {5.System.out.printf("输入日期非法");System.exit(-1);}6.else if((month==4||month==6||month==9||month==11)&&(day==31)){7.System.out.printf("输入日期不存在\n");System.exit(-1);}8.else if((year%400==0||(year%100!=0&&year%4==0))&&month==2&&day>29){9.System.out.printf("输入日期不存在\n");System.exit(-1);}10.elseif((!(year%400==0||(year%100!=0&&year%4==0))&&month==2&&day>28)){11.System.out.printf("输入日期不存在\n");System.exit(-1);}12.else if((month==4||month==6||month==9||month==11)&&day==30)13.{ tomorrowmonth++;14.tomorrowday=1; }15.elseif((month==1||month==3||month==5||month==7||month==8||month==10)&&day==31)16.{ tomorrowmonth++;17.tomorrowday=1;}18.else if(month==12&&day==31)19.{ tomorrowyear++;20.tomorrowmonth=1;21.tomorrowday=1;}22.else if(month==2&&(year%400==0||(year%100!=0&&year%4==0))&&day==29)23.{ tomorrowmonth++;24.tomorrowday=1;}25.elseif(month==2&&(!(year%400==0||(year%100!=0&&year%4==0)))&&day==28)26.{ tomorrowmonth++;27.tomorrowday=1;}28.else{ tomorrowday++;}29.System.out.println("nextdayis\n"+tomorrowyear+"/"+tomorrowmonth+"/"+tomorrowday);程序结构图基路径数量:分支节点:4、6、8、10、12、15、18、22、25基路径数量9+1=10基路径:(1)最长的路径:Start-1-2-3-4-6-8-10-12-15-18-22-25-26-27-29-End (2)节点4翻转:Start-1-2-3-4-5-29-End(3)节点6翻转:Start-1-2-3-4-6-7-29-End(4)节点8翻转:Start-1-2-3-4-6-8-9-29-End(5)节点10翻转:Start-1-2-3-4-6-8-10-11-29-End(6)节点12翻转:Start-1-2-3-4-6-8-10-12-13-14-29-End(7)节点15翻转:Start-1-2-3-4-6-8-10-12-15-16-17-29-End(8)节点18翻转:Start-1-2-3-4-6-8-10-12-15-18-19-20-21-29-End (9)节点22翻转:Start-1-2-3-4-6-8-10-12-15-18-22-23-24-29-End (10)节点25翻转:Start-1-2-3-4-6-8-10-12-15-18-22-25-28-29-End三、佣金问题数据流测试方法1.double lockprice=45,stockprice=30,barrelprice=25;2.double totallocks=0,totalstocks=0,totalbarrels=0;3.double commission;4.Scanner input=new Scanner(System.in);5.System.out.print("Input the locks,stocks and barrels:\n");6.int locks=input.nextInt(),stocks=input.nextInt(),barrels=input.nextInt();7.if(1>locks||locks>70||1>=stocks||locks>=80||1>=barrels||barrels>=90){8.System.out.println("输入错误");System.exit(-1);}9.totallocks=totallocks+locks;10.totalstocks=totalstocks+stocks;11.totalbarrels=totalbarrels+barrels;12. doublelocksales=lockprice*totallocks,stocksales=stockprice*totalstocks,barrelsales=barrelprice*totalbarrels,sales=locksales+stocksales+barrelsales;13.if(sales>1800){mission=0.10*1000;mission=commission+0.15*800;mission=commission+0.20*(sales-1800);}17.else if(sales>1000){mission=0.10*1000;mission=commission+0.15*(sales-1000);}20.else commission=0.10*sales;21.System.out.print("commission is$:"+commission);程序流程图定义—使用路径:locks:(1)6-7 是定义—清除路径(2)2-3-4-5-6-7-9 是定义—清除路径stocks:(1)6-7 是定义—清除路径(2)6-7-9-10 是定义—清除路径barrels:(1)6-7 是定义—清除路径(2)6-7-9-10-11 是定义—清除路径sales:(1)12-13 是定义—清除路径(2)12-13-14-15-16 是定义—清除路径(3)12-13-17 是定义—清除路径(4)12-13-17-18-19 是定义—清除路径(5)12-13-17-20 是定义—清除路径commission:(1)14-15-16-21 不是定义—清除路径(2)15-16-21 不是定义—清除路径(3)16-21 是定义—清除路径(4)18-19-21 不是定义—清除路径(5)19-21 是定义—清除路径(6)20-21 是定义—清除路径分析:locks、stocks、barrels与sales没有非定义清除路径,commission却有3条非定义—清除路径,所以该变量在使用之前可能被定义两次或多次,可将14-15-16三条语句合并成一条一句,18-19两条语句合并成一条语句,减少缺陷。
三角形问题接受三个整数a、b和c作为输入,用做三角形的边。
程序的输出是由这三条边确定的三角形类型:等边三角形、等腰三角形、不等边三角形。
(说明:三边边长小于200)源程序:#include<iostream>using namespace std;float a,b,c; //全局变量(边长)int input (void); //边长输入函数int main (void) //主函数{float tmp;int i;char ch=c; //ch程序控制while(ch!='s'&&ch!='S'){input();if(!(a>0&&a<200)&&(b>0&&b<200)&&(c>0&&c<200)) //边界检查{cout<<"输入数据不符合范围要求,请检查后按任意键重新输入(输入s结束程序):";continue;}for(i=0;i<3;i++) //三边排序(升序){if (a>b) { tmp=a;a=b; b=tmp; }if (b>c) { tmp=b;b=c; c=tmp; }}if((a+b>c)&&(c-a<b)&&(c-b<a)) //判断能否构成三角形{if(a==b&&b==c){cout<<"等边三角形"<<endl;}else if(a==b||a==c||b==c){cout<<"等腰三角形"<<endl;}else{cout<<"不等边三角形"<<endl;}}else{cout<<"输入三边不能构成三角形,按任意键重新输入(输入s结束程序):";cin>>ch;}}return 0;}int input (void){cout<<endl<<"输入三边长(0~200):"<<endl<<"a:";cin>>a;cout<<"b:";cin>>b;cout<<"c:";cin>>c;cout<<endl;return 0;}THANKS !!!致力为企业和个人提供合同协议,策划案计划书,学习课件等等打造全网一站式需求欢迎您的下载,资料仅供参考。
软件测试实验1:为三⾓形问题编写⼀个Java程序,并⽤Junit测试程序实验报告实验内容:1.Install Junit(4.12), Hamcrest(1.3) with Eclipse2.Install Eclemma with Eclipse3.Write a java program for the triangle problem and test the program with Junit.实验步骤:1.在eclipse中安装Junit、Hamcrest和eclemma。
下载Junit-4.12.jar、hamcrest-core-1.3.jar、和hamcrest-library-1.3.jar。
打开eclipse,新建⼀个project,在eclipse的菜单栏中,选择Project->Properties,在弹出的框的左侧选择“Java Bulid Path”,然后点击“Add External JARs”,把下载的⼏个包添加进来。
如图:安装eclemma:选择eclipse菜单中的“Help”,选择"Eclipse marketplace...",搜索eclemma,点击install开始安装。
安装完成后重启eclipse。
看到快捷按钮中的,说明eclemma安装成功。
2.程序代码和测试代码:可查看https:///realpby/SWTesting/blob/master/First%20Lab项⽬的⽬录如图:triCalculate.java⽂件中是实现三⾓形问题的代码。
testCalculate.java中是测试程序的代码。
triCalculate.java:package triangle;public class triCalculate {private static int tri =0;public void triangle(int a,int b, int c){if(a<=0||b<=0||c<=0){tri=0;}else{if(((a+b)>c) && ((a+c)>b && (b+c)>a)){if((a == b) &&(a == c)){tri = 3;//equilateral}if((a==b && a!=c)||(a==c && a!=b)||(b==c && a!=b)) {tri = 2;//isosceles}if(a!=b && a!=c && b!=c){tri = 1;//scalene}}else{tri=0;//三边长度⽆法构成三⾓形}}}public int getReuslt(){return tri;}public void clear(){tri = 0;}}testCalculate.java:package triangle;import static org.junit.Assert.*;import org.junit.Test;public class testCalculate {private static triCalculate cal = new triCalculate();@Testpublic void testTriangle(){cal.triangle(-5, 5, 5);assertEquals(0, cal.getReuslt());cal.triangle(5, 5, 5);assertEquals(3, cal.getReuslt());cal.triangle(5, 5, 6);assertEquals(2, cal.getReuslt());cal.triangle(3, 4, 5);assertEquals(1, cal.getReuslt());cal.triangle(12, 5, 5);assertEquals(0, cal.getReuslt());cal.triangle(10, 5, 5);assertEquals(0, cal.getReuslt());cal.triangle(11, 5, 5);assertEquals(3, cal.getReuslt());}}3.三⾓问题测试的测试结果和覆盖报告截图如下:测试程序中(11,5,5)这组数据不为3,所以出现⼀个failure。
计算机三级软件测试技术上机试题及答案2016年计算机三级软件测试技术上机试题及答案1.三角形问题说明:输入三个正整数a、b、c,分别作为三角形的三条边,现通过程序判断由三条边构成的三角形的类型是否为等边三角形、等腰三角形、直角三角形、普通三角形以及非三角形。
根据问题的`规格说明,可以从输出域划分5种等价类:输出等价类编程实现:(1)对每一个输出等价类,至少设计一个测试用例。
输入格式:输入(a,b,c):输出格式:输出(ID类型):例如:输入(a,b,c):5,5,5↙(回车)输出(ID类型):1(等边三角形),2(等腰三角形)(2)假设10≤a,b,c≤100,根据划分的等价类,设计边界值测试用例。
例如:输入(a,b,c):60,60,10↙(回车)输出(ID类型):2(等腰三角形)2、阅读下面的一段程序,voidTest2(intX,intA,intB)1{2intk=0,j=0;3if((A>1)&&(B=0))4{5X=X/A;6k=A*B-1;7}8if((A==2)||(X>1))9X=X+1;10j=X+3;11}//Test2根据所给定的程序,确定该程序的独立路径如下:路径1:3→8→10→11路径2:3→5→6→8→10→11路径3:3→8→9→10→11路径4:3→5→6→8→9→10→11编程实现:对每一个独立路径,设计一个测试用例,并插入一条显示输出语句(printf/cout),显示测试路径标号。
输入格式:输入(X,A,B):输出格式:输出(k,j):k=j=路径ID:例如:输入(X,A,B):1,2,1↙(回车)输出(k,j):k=0j=5路径ID:测试路径4。