【软件测试】实验1 功能性测试方法实验报告

编程入门 行业动态 更新时间:2024-10-07 12:19:30

【软件<a href=https://www.elefans.com/category/jswz/34/1771117.html style=测试】实验1 功能性测试方法实验报告"/>

【软件测试】实验1 功能性测试方法实验报告

【软件测试】实验1 功能性测试方法实验报告

1. 实验目的

掌握功能性测试方法。

2.实验内容

对电话账单来说,春季和秋季的标准时间与夏时制时间的转换会带来有意思的问题。春季,这种转换发生在(3月末,4月初的)星期日凌晨2:00时,这时时钟要设置为凌晨3:00时。对称的转换通常发生在10月最后一个星期日,时钟要从2:59:59调回到2:00:00。
请为采用以下费率计算用户的每月通话费:
(1)通话时间<=20分钟时,每分钟收费0.05美元,通话时间不到1分钟时按1分钟计算。
(2)通话时间>20分钟时,收费1.00美元,外加每分钟0.10美元,超过20分钟的部分,不到1分钟时按1分钟计算。假设:
(1)通话计费时间从被叫方应答开始计算,到呼叫方挂机时结束。
(2)通话时间的秒数四舍五入到分钟。
(3)没有超过20个小时的通话。

3.实验步骤

第一步:根据实验内容使用java编写程序。
第二步:根据实验内容设计测试用例,要求分别是用等价类测试和边界值分析方法生成测试用例。
第三步:执行测试用例,并记录测试结果。
第四步:编写实验报告,实验报告的内容包括测试用例的测试结果、程序中存在的bug、以及这两种测试用例生成方法对于揭露程序的错误有什么异同点。

4.实验代码

package rjcs1;
import java.io.*;
import java.text.*;
import java.util.*;public class Bill {public static void main(String[] args){BufferedReader br = new BufferedReader(new InputStreamReader(System.in));try {System.out.println("请输入通话开始时间,例:20210404193600:");String time1 = br.readLine();System.out.println("请输入通话结束时间,例:20210404193600:");String time2 = br.readLine();	try {SimpleDateFormat format1 = new SimpleDateFormat("yyyyMMddHHmmss");Date date1 = format1.parse(time1);Date date2 = format1.parse(time2);Calendar cal1 = Calendar.getInstance();cal1.setTime(date1);Calendar cal2 = Calendar.getInstance();cal2.setTime(date2);long phonetime = cal2.getTime().getTime() - cal1.getTime().getTime();long minute;if(phonetime>=0 && phonetime/1000<60 || phonetime%60000>0) //不到一分钟按一分钟计算minute = phonetime/1000/60+1;elseminute = phonetime/1000/60;if(cal1.get(Calendar.MONTH) == Calendar.OCTOBER && cal1.get(Calendar.DATE) >= 25 && cal1.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {//开始时间在十月最后一个周日if(cal1.get(Calendar.HOUR_OF_DAY)==2 && cal2.get(Calendar.HOUR_OF_DAY)==2 && cal2.get(Calendar.HOUR_OF_DAY)<3 && cal2.get(Calendar.MINUTE)<=cal1.get(Calendar.MINUTE)) {//因为转换而出现通话时间为负的情况minute+=60;System.out.println("通话时长:"+minute);System.out.println("通话账单:"+Money(minute));}else if(cal1.get(Calendar.HOUR_OF_DAY)<2 && cal2.get(Calendar.HOUR_OF_DAY)>=2) {//开始时间是两点前,结束时间是两点后(经历第二次转换System.out.println("通话时长:"+minute+"或"+(minute+60));System.out.println("通话账单:"+Money(minute)+"或"+Money(minute+60));}else {System.out.println("通话时长:"+minute);System.out.println("通话账单:"+Money(minute));}	}else{if(cal2.get(Calendar.MONTH) == Calendar.OCTOBER && cal2.get(Calendar.DATE) >= 25 && cal2.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {if(cal2.get(Calendar.HOUR_OF_DAY)>=2)minute +=60;}else {if((cal1.get(Calendar.MONTH) == Calendar.MARCH && cal1.get(Calendar.DATE) >= 25 && cal1.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY)){//开始时间在三月最后一个周日  if(cal1.get(Calendar.HOUR_OF_DAY)<2 && cal2.get(Calendar.HOUR_OF_DAY)>=3)//开始时间在两点前,结束时间在三点后(经过了第一次转换minute -=60; }else{//开始时间不在三月最后一个周日if((cal2.get(Calendar.MONTH) == Calendar.MARCH && cal2.get(Calendar.DATE) >= 25 && cal2.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY)){//但是结束时间在(从前一天打到这一天 if(cal2.get(Calendar.HOUR_OF_DAY)>=3 )  minute -= 60;  }}	  }   System.out.println("通话时长:"+minute);System.out.println("通话账单:"+Money(minute));}SimpleDateFormat format2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss E");String starttime = format2.format(date1);System.out.println("通话开始时间:"+starttime);String endtime = format2.format(date2);System.out.println("通话结束时间:"+endtime);} catch (ParseException e) {// TODO Auto-generated catch blocke.printStackTrace();}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public static double Money(long minute) {double money = 0;if(minute>1200 || minute <=0){  System.out.println("通话时间输入错误,请重新输入。");   }else{  if(minute<=20)money = minute*0.05;elsemoney = 1+(minute-20)*0.1;}return money;}
}

5.测试结果

等价类测试:
(此通话时长为现实中通话时长,非结束时间-开始时间)
T1={通话时长≤0分钟}
T2={0分钟<通话时长<1分钟}
T3={1分钟≤通话时长≤20分钟}
T4={20分钟<通话时长≤1200分钟}
T5={通话时长>1200分钟}
S1={无时制转换}
S2={春时制与夏时制转换}
S3={夏时制与秋时制转换}

用例ID输入数据预期输出实际输出是否通过备注
120210410150000 20210409000000通话时间输入错误,请重新输入。通话时间输入错误,请重新输入。通过对应等价类T1与S1
220210328031050 20210328013030通话时间输入错误,请重新输入。通话时间输入错误,请重新输入。通过对应等价类T1与S2
320211031025830 20211031014059通话时间输入错误,请重新输入。通话时间输入错误,请重新输入。通过对应等价类T1与S3
420210404191700 202104041917300.050.05通过对应等价类T2与S1
520210328015959 202103280300300.050.05通过对应等价类T2与S2
620211031025959 202110310200300.050.05通过对应等价类T2与S3
720211031015959 202110310200300.05或5.10.05或5.1通过对应等价类T2与S3
820210404191700 202104041927300.550.55通过对应等价类T3与S1
920210328015559 202103280315301.01.0通过对应等价类T3与S2
1020211031025959 202110310210300.550.55通过对应等价类T3与S3
1120211031015959 202110310210300.55或6.10.55或6.1通过对应等价类T3与S3
1220200505050505 2020050515151560.160.1通过对应等价类T4与S1
1320200329000000 2020032905000023.023.0通过对应等价类T4与S2
1420200328222222 2020032904040427.227.2通过对应等价类T4与S2
1520201025013005 2020102511555561.6或67.661.6或67.6通过对应等价类T4与S3
1620201024232323 2020102503030327.027.0通过对应等价类T4与S3
1720200202020202 20200202220203通话时间输入错误,请重新输入。通话时间输入错误,请重新输入。通过对应等价类T5与S1
1820200329000000 20200330000000通话时间输入错误,请重新输入。通话时间输入错误,请重新输入。通过对应等价类T5与S2
1920201025013005 20201025222222通话时间输入错误,请重新输入。通话时间输入错误,请重新输入。通过对应等价类T5与S3

边界值分析方法:
(此通话时长为现实中通话时长,非结束时间-开始时间)
通话时长:{-1s,0min,1s,59s,1min,1min1s, 19min59s,20min,20min1s,1199min59s,1200min,1200min1s}
通话日期:{无时制转换时间,春时制与夏时制转换,夏时制与秋时制转换}

用例ID输入数据预期输出实际输出是否通过备注
120210410150000 20210410145959通话时间输入错误,请重新输入。通话时间输入错误,请重新输入。通过-1s,无转换
220210328030000 20210328015959通话时间输入错误,请重新输入。通话时间输入错误,请重新输入。通过-1s,春夏转换
320211031020000 20211031015959通话时间输入错误,请重新输入。通话时间输入错误,请重新输入。通过-1s,夏秋转换
420210410150000 20210410150000通话时间输入错误,请重新输入。通话时间输入错误,请重新输入。通过0min,无转换
520210328020000 20210328020000通话时间输入错误,请重新输入。通话时间输入错误,请重新输入。通过0min,春夏转换
620211031030000 20211031030000通话时间输入错误,请重新输入。通话时间输入错误,请重新输入。通过0min,夏秋转换
720210410145959 202104101500000.050.05通过1s,无转换
820210328015959 202103280300000.050.05通过1s,春夏转换
920211031025959 202110310200000.050.05通过1s,夏秋转换
1020210410140000 202104101400590.050.05通过59s,无转换
1120210328015959 202103280300580.050.05通过59s,春夏转换
1220211031025959 202110310200580.050.05通过59s,夏秋转换
1320200505050505 202005050506050.050.05通过1min,无转换
1420200329015930 202003290300300.050.05通过1min,春夏转换
1520201025025930 202010250200300.050.05通过1min,夏秋转换
1620200505050505 202005050506060.10.1通过1min1s,无转换
1720200329015930 202003290300310.10.1通过1min1s,春夏转换
1820201025025930 202010250200310.10.1通过1min1s,夏秋转换
1920200505050505 202005050525041.01.0通过19min59s,无转换
2020200329015930 202003290319291.01.0通过19min59s,春夏转换
2120201025025930 202010250219291.01.0通过19min59s,夏秋转换
2220200505050505 202005050525051.01.0通过20min,无转换
2320200329015930 202003290319301.01.0通过20min,春夏转换
2420201025025930 202010250219301.01.0通过20min,夏秋转换
2520200505050505 202005050525061.11.1通过20min1s,无转换
2620200329015930 202003290319311.11.1通过20min1s,春夏转换
2720201025025930 202010250219311.11.1通过20min1s,夏秋转换
2820200505010505 20200505210504119.0119.0通过1199min59s,无转换
2920200329015930 20200329225929119.0119.0通过1199min59s,春夏转换
3020201025025930 20201025225929119.0119.0通过1199min59s,夏秋转换
3120200505010505 20200505210505119.0119.0通过1200min,无转换
3220200329015930 20200329225930119.0119.0通过1200min,春夏转换
3320201025025930 20201025225930119.0119.0通过1200min,夏秋转换
3420200505010505 20200505210506通话时间输入错误,请重新输入。通话时间输入错误,请重新输入。通过1200min1s,无转换
3520200329015930 20200329225931通话时间输入错误,请重新输入。通话时间输入错误,请重新输入。通过1200min1s,春夏转换
3620201025025930 20201025225931通话时间输入错误,请重新输入。通话时间输入错误,请重新输入。通过1200min1s,夏秋转换

6.实验总结

代码测试过程中出现的bug主要集中在:1.对时制转换的具体情况没能做到完备的分类;2.对因为时制转换导致的通话时间为负的情况没有进行处理;3.对不足一分钟记为一分钟的要求处理有误。

测试用例生成方法共同点:均可捕捉到边界值这类较容易发生的错误。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。

测试用例生成方法区别:等价类测试考虑数据依赖关系,标识等价类时需要更多的判断和技巧,等价类标识出以后的处理也是机械的,但是所有的输入可能都被考虑进去,不仅仅考虑到边界值的出错;边界值分析方法基于定义域, 对输入的边界值进行测试,不识别数据或逻辑关系。因为程序大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部。因此针对各种边界情况设计测试用例,可以查出更多的bug。

更多推荐

【软件测试】实验1 功能性测试方法实验报告

本文发布于:2024-02-28 00:15:11,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1767079.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:测试   功能   报告   方法   软件

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!