软件测试大作业计算机软件测试_计算机-软件测试.pdf
《软件测试大作业计算机软件测试_计算机-软件测试.pdf》由会员分享,可在线阅读,更多相关《软件测试大作业计算机软件测试_计算机-软件测试.pdf(48页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、 软件质量保证与软件测试大作业 基于蔡勒公式星期计算程序 测试报告 专 业 班 级 姓 名 学 号 2011 年 春季 学期 1问题的提出 问题的来源 这次实验一开始打算测试 PreDate 或者计算器,老师在课上告诉我们什么是好程序,要编写好程序,要有好的编程习惯。回想一下我以前上机也是直接打#include就盲目地开始了。在电脑上翻开了以前 C+课上编的一个根据日期计算星期的作业,编的实在太烂了。程序如下:#include void main()int y,m,d,x,i,sum=0;int aa13=0,0,31,60,91,121,152,182,213,244,274,305,335
2、;int bb13=0,0,31,59,90,120,151,181,212,243,273,304,334;couty;coutm;coutd;if(y1|m12)cout输入了非法的日期;;return;/对非法日期的判断 if(m=1|m=3|m=5|m=7|m=8|m=10|m=12)&(d31)return;if(m=4|m=6|m=9|m=11)&(d30)return;if(y%4=0&y%100!=0|y%400=0)&m=2&(d29)return;题的来源这次实验一开始打算测试或者计算器老师在课上告诉我们什么是好程序要编写好程序要有好的编程习惯回想一下我以前上机也是直接打就
3、盲目地开始了在电脑上翻开了以前课上编的一个根据日期计算星期的作业编的实在太天数输入的日期是星期输入的日期是星期日别的问题先不说光是那两个数组就很糟糕如果让别人读根本就不能读明白自己也是费了较大力气才读懂运行以后发现了好多根本就不是一个可使用的程序于是就决定把这个程序重新尽自己一个日期就能用这个公式推算出是星期几但是由于罗马教皇格里高利十三世在年组织了一批天文学家根据哥白尼日心说计算出来的数据对儒略历作了修改将年月日到日之间的天宣布销继月日之后为月日因此蔡勒公式只适合于年月日 if(m=2)&!(y%4=0&y%100!=0|y%400=0)&(d28)return;for(i=1;iy;i+)
4、/计算公元一年到本日的上一年年底的天数 if(i%4=0&i%100!=0|i%400=0)sum+=366;else sum+=365;if(y%4=0&y%100!=0|y%400=0)sum+=aam;sum+=d;/计算一年到本日的总天数 else sum+=bbm;sum+=d;x=sum%7;if(x!=0)cout输入的日期是星期:xendl;else cout输入的日期是星期日;endl;题的来源这次实验一开始打算测试或者计算器老师在课上告诉我们什么是好程序要编写好程序要有好的编程习惯回想一下我以前上机也是直接打就盲目地开始了在电脑上翻开了以前课上编的一个根据日期计算星期的作业
5、编的实在太天数输入的日期是星期输入的日期是星期日别的问题先不说光是那两个数组就很糟糕如果让别人读根本就不能读明白自己也是费了较大力气才读懂运行以后发现了好多根本就不是一个可使用的程序于是就决定把这个程序重新尽自己一个日期就能用这个公式推算出是星期几但是由于罗马教皇格里高利十三世在年组织了一批天文学家根据哥白尼日心说计算出来的数据对儒略历作了修改将年月日到日之间的天宣布销继月日之后为月日因此蔡勒公式只适合于年月日别的问题先不说,光是那两个数组就很糟糕,如果让别人读根本就不能读明白,自己也是费了较大力气才读懂,运行以后发现了好多Bug,根本就不是一个可使用的程序。于是就决定把这个程序重新尽自己的所
6、学,做一个比较好的版本。就有了这个测试作业的选题。星期计算公式蔡勒公式 蔡勒(Zeller)公式,是一个计算星期的公式,给一个日期,就能用这个公式推算出是星期几。但是由于罗马教皇格里高利十三世在1582 年组织了一批天文学家,根据哥白尼日心说计算出来的数据,对儒略历作了修改。将 1582 年 10 月 5 日到 14 日之间的 10 天宣布撤销,继 10 月 4 日之后为 10 月 15 日。因此,蔡勒公式只适合于 1582年 10 月 15 日之后的情形。w=c/4 2c+y+y/4+13*(m+1)/5+d-1 OR:w=y+y/4+c/4-2c+26(m+1)/10+d-1 若要计算的日
7、期是在 1582 年 10 月 4 日或之前,公式则为 w=y+y/4+c/4-2c+13(m+1)/5+d+3 符号意义 w:星期;w 对 7 取模得:0-星期日,1-星期一,2-星期二,3-星期三,4-星期四,5-星期五,6-星期六 题的来源这次实验一开始打算测试或者计算器老师在课上告诉我们什么是好程序要编写好程序要有好的编程习惯回想一下我以前上机也是直接打就盲目地开始了在电脑上翻开了以前课上编的一个根据日期计算星期的作业编的实在太天数输入的日期是星期输入的日期是星期日别的问题先不说光是那两个数组就很糟糕如果让别人读根本就不能读明白自己也是费了较大力气才读懂运行以后发现了好多根本就不是一个
8、可使用的程序于是就决定把这个程序重新尽自己一个日期就能用这个公式推算出是星期几但是由于罗马教皇格里高利十三世在年组织了一批天文学家根据哥白尼日心说计算出来的数据对儒略历作了修改将年月日到日之间的天宣布销继月日之后为月日因此蔡勒公式只适合于年月日 c:世纪-1(前两位数)y:年(后两位数)m:月(m大于等于 3,小于等于 14,即在蔡勒公式中,某年的 1、2 月要看作上一年的 13、14 月来计算,比如 2003 年 1 月 1 日要看作2002 年的 13 月 1 日来计算)d:日 代表取整,即只要整数部分。后来人们将这一新的历法称为“格里高利历”,简称格里历或公历。软件的功能概述 根据日期计
9、算星期就是用户想知道某一个日期所对应的是星期几,比如用户想知道自己的生日那天是星期几,好安排自己的生日Party。该软件可以实现用户的需求。如果用户输入一个日期,把输入的日期所对应的星期快速输出出来。2星期计算程序的细节 星期计算程序的整体描述及函数之间的关系 软件在一个 C+控制台工程文件里面,如图 2-1 所示。题的来源这次实验一开始打算测试或者计算器老师在课上告诉我们什么是好程序要编写好程序要有好的编程习惯回想一下我以前上机也是直接打就盲目地开始了在电脑上翻开了以前课上编的一个根据日期计算星期的作业编的实在太天数输入的日期是星期输入的日期是星期日别的问题先不说光是那两个数组就很糟糕如果让
10、别人读根本就不能读明白自己也是费了较大力气才读懂运行以后发现了好多根本就不是一个可使用的程序于是就决定把这个程序重新尽自己一个日期就能用这个公式推算出是星期几但是由于罗马教皇格里高利十三世在年组织了一批天文学家根据哥白尼日心说计算出来的数据对儒略历作了修改将年月日到日之间的天宣布销继月日之后为月日因此蔡勒公式只适合于年月日 图 2-1 Visual studio 2010中 SoftWareTest工程 星期计算程序的总体结构分析 软件是由包含 main 函数在内的三个函数实现的其中 bool checkDay(int year,int month,int day)专门用于检测所输入的数字日期
11、字符是不是符合逻辑;int dayToWeek(int year,int month,int day)专门用于计算所输入日期所对应的星期;int main()函数,是程序的主函数,它用来接收并初步检测用户的输入,然后调用 checkDay(int year,int month,int day)函数以确保输入的日期是合法的日期,随后调用 int dayToWeek(int year,int month,int day)函数实现计算,同时由于星期日所对应的返回值是 0,题的来源这次实验一开始打算测试或者计算器老师在课上告诉我们什么是好程序要编写好程序要有好的编程习惯回想一下我以前上机也是直接打就盲
12、目地开始了在电脑上翻开了以前课上编的一个根据日期计算星期的作业编的实在太天数输入的日期是星期输入的日期是星期日别的问题先不说光是那两个数组就很糟糕如果让别人读根本就不能读明白自己也是费了较大力气才读懂运行以后发现了好多根本就不是一个可使用的程序于是就决定把这个程序重新尽自己一个日期就能用这个公式推算出是星期几但是由于罗马教皇格里高利十三世在年组织了一批天文学家根据哥白尼日心说计算出来的数据对儒略历作了修改将年月日到日之间的天宣布销继月日之后为月日因此蔡勒公式只适合于年月日故要对其进行单独处理。图 2-2 程序流程图 星期计算程序的 C+实现#include using namespace st
13、d;题的来源这次实验一开始打算测试或者计算器老师在课上告诉我们什么是好程序要编写好程序要有好的编程习惯回想一下我以前上机也是直接打就盲目地开始了在电脑上翻开了以前课上编的一个根据日期计算星期的作业编的实在太天数输入的日期是星期输入的日期是星期日别的问题先不说光是那两个数组就很糟糕如果让别人读根本就不能读明白自己也是费了较大力气才读懂运行以后发现了好多根本就不是一个可使用的程序于是就决定把这个程序重新尽自己一个日期就能用这个公式推算出是星期几但是由于罗马教皇格里高利十三世在年组织了一批天文学家根据哥白尼日心说计算出来的数据对儒略历作了修改将年月日到日之间的天宣布销继月日之后为月日因此蔡勒公式只适
14、合于年月日bool checkDay(int year,int month,int day)/此函数用于检测所输入的年月日是不 /是一个合乎逻辑的年月日;if(year=0)return false;if(month12)return false;int m=31,0,31,30,31,30,31,31,30,31,30,31;/定义一个月份所对应的天数的数组,2 if(year%4=0&year%100!=0|year%400=0)/月是变化的所以暂时设为 0;m1=29;/是闰年,2月 29天;else m1=28;/是平年;return(day=1)&(day=mmonth-1);/根据
15、月份对应天数的数组判断日 题的来源这次实验一开始打算测试或者计算器老师在课上告诉我们什么是好程序要编写好程序要有好的编程习惯回想一下我以前上机也是直接打就盲目地开始了在电脑上翻开了以前课上编的一个根据日期计算星期的作业编的实在太天数输入的日期是星期输入的日期是星期日别的问题先不说光是那两个数组就很糟糕如果让别人读根本就不能读明白自己也是费了较大力气才读懂运行以后发现了好多根本就不是一个可使用的程序于是就决定把这个程序重新尽自己一个日期就能用这个公式推算出是星期几但是由于罗马教皇格里高利十三世在年组织了一批天文学家根据哥白尼日心说计算出来的数据对儒略历作了修改将年月日到日之间的天宣布销继月日之后
16、为月日因此蔡勒公式只适合于年月日 /是不是合法;int dayToWeek(int year,int month,int day)/该函数采用蔡勒公式计算日期所对应的 /星期;int y,c,w,m,d,week;int sum=year*10000+month*100+day;/为了分开 1584年 10月 4日之前和之后,if(month)w=y+int(y/4)+int(c/4)-2*c+int(26*(m+1)/10)+d-1;/蔡勒公式 1582年 10月/4日之后的计算公式;else w=y+int(y/4)+int(c/4)-2*c+int(13*(m+1)/5)+d+3;/蔡勒
17、公式 1582年 10月/4日之前的计算公式;week=(w%7+7)%7;return week;int main()int year,month,day,week;题的来源这次实验一开始打算测试或者计算器老师在课上告诉我们什么是好程序要编写好程序要有好的编程习惯回想一下我以前上机也是直接打就盲目地开始了在电脑上翻开了以前课上编的一个根据日期计算星期的作业编的实在太天数输入的日期是星期输入的日期是星期日别的问题先不说光是那两个数组就很糟糕如果让别人读根本就不能读明白自己也是费了较大力气才读懂运行以后发现了好多根本就不是一个可使用的程序于是就决定把这个程序重新尽自己一个日期就能用这个公式推算出
18、是星期几但是由于罗马教皇格里高利十三世在年组织了一批天文学家根据哥白尼日心说计算出来的数据对儒略历作了修改将年月日到日之间的天宣布销继月日之后为月日因此蔡勒公式只适合于年月日do coutyear;while(!cin|isalpha(getchar()/循环避免输入的不是数字字符 ();(1024,n);cout 输入非数字年份,重新输入年份!year;coutmonth;题的来源这次实验一开始打算测试或者计算器老师在课上告诉我们什么是好程序要编写好程序要有好的编程习惯回想一下我以前上机也是直接打就盲目地开始了在电脑上翻开了以前课上编的一个根据日期计算星期的作业编的实在太天数输入的日期是星期
19、输入的日期是星期日别的问题先不说光是那两个数组就很糟糕如果让别人读根本就不能读明白自己也是费了较大力气才读懂运行以后发现了好多根本就不是一个可使用的程序于是就决定把这个程序重新尽自己一个日期就能用这个公式推算出是星期几但是由于罗马教皇格里高利十三世在年组织了一批天文学家根据哥白尼日心说计算出来的数据对儒略历作了修改将年月日到日之间的天宣布销继月日之后为月日因此蔡勒公式只适合于年月日while(!cin|isalpha(getchar()();(1024,n);cout 输入非数字月份,重新输入月份!month;coutday;while(!cin|isalpha(getchar()();(10
20、24,n);cout 输入非数字日期,重新输入日期!day;题的来源这次实验一开始打算测试或者计算器老师在课上告诉我们什么是好程序要编写好程序要有好的编程习惯回想一下我以前上机也是直接打就盲目地开始了在电脑上翻开了以前课上编的一个根据日期计算星期的作业编的实在太天数输入的日期是星期输入的日期是星期日别的问题先不说光是那两个数组就很糟糕如果让别人读根本就不能读明白自己也是费了较大力气才读懂运行以后发现了好多根本就不是一个可使用的程序于是就决定把这个程序重新尽自己一个日期就能用这个公式推算出是星期几但是由于罗马教皇格里高利十三世在年组织了一批天文学家根据哥白尼日心说计算出来的数据对儒略历作了修改将
21、年月日到日之间的天宣布销继月日之后为月日因此蔡勒公式只适合于年月日 while(!checkDay(year,month,day);/在所输入的都是数字字符之后检测/日期的逻辑,使得日期是合法的;week=dayToWeek(year,month,day);/利用得到的合法/日期调用星期计算函数;cout 所输入的日期是:year 年month月day日endl;if(week=0)cout日期所对应的是星期日endl;/由于 dayToWeek()/函数返回值是 int,所以星期日在此时才处理;else cout日期所对应的是星期:weekendl;题的来源这次实验一开始打算测试或者计算器老
22、师在课上告诉我们什么是好程序要编写好程序要有好的编程习惯回想一下我以前上机也是直接打就盲目地开始了在电脑上翻开了以前课上编的一个根据日期计算星期的作业编的实在太天数输入的日期是星期输入的日期是星期日别的问题先不说光是那两个数组就很糟糕如果让别人读根本就不能读明白自己也是费了较大力气才读懂运行以后发现了好多根本就不是一个可使用的程序于是就决定把这个程序重新尽自己一个日期就能用这个公式推算出是星期几但是由于罗马教皇格里高利十三世在年组织了一批天文学家根据哥白尼日心说计算出来的数据对儒略历作了修改将年月日到日之间的天宣布销继月日之后为月日因此蔡勒公式只适合于年月日3星期计算程序的测试思路 功能性测试
23、 程序的规格说明很明确,功能也很单一,对其进行功能性测试,以希望能尽可能对程序的运行结果进行全面合理的判断。边界值测试 使用边界值测试里的最坏情况测试,由于程序输入变量是三个,所以可使用三重循环解决边界值测试,开发出测试程序。由于网络上万年历比较权威的产品日期是从1901-2050,所以我进行边界值测试,年的边界的选取就按 1901-2050 来进行。虽然程序可以计算任意合法日期的星期,但是为了验证测试结果,所以只能做这样的选择。图3-1是进行测试结果验证的万年历。题的来源这次实验一开始打算测试或者计算器老师在课上告诉我们什么是好程序要编写好程序要有好的编程习惯回想一下我以前上机也是直接打就盲
24、目地开始了在电脑上翻开了以前课上编的一个根据日期计算星期的作业编的实在太天数输入的日期是星期输入的日期是星期日别的问题先不说光是那两个数组就很糟糕如果让别人读根本就不能读明白自己也是费了较大力气才读懂运行以后发现了好多根本就不是一个可使用的程序于是就决定把这个程序重新尽自己一个日期就能用这个公式推算出是星期几但是由于罗马教皇格里高利十三世在年组织了一批天文学家根据哥白尼日心说计算出来的数据对儒略历作了修改将年月日到日之间的天宣布销继月日之后为月日因此蔡勒公式只适合于年月日图 3-1 用于验证测试结果的万年历 弱健壮等价类测试 由于年月日这三个变量之间存在很强的依赖性,使用边界值测试难免会存在冗
25、余和漏洞,所以继续进行等价类测试,希望能尽可能进行完备的测试,同时也能避免冗余。测试考虑无效等价类得到如下的等价类:M1=月份:1月份12 D1=日期:1日期31 Y1=年:0年 基于决策表测试 月日年三者之间存在着很强的逻辑依赖关系,所以可以选取基于决策表的测试避免大量的冗余,同时也能较全面的覆盖 M1=月份:每月有 30 天 M2=月份:每月有 31 天 M3=月份:此月是 2 月 题的来源这次实验一开始打算测试或者计算器老师在课上告诉我们什么是好程序要编写好程序要有好的编程习惯回想一下我以前上机也是直接打就盲目地开始了在电脑上翻开了以前课上编的一个根据日期计算星期的作业编的实在太天数输入
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 测试 作业 计算机软件 计算机
限制150内