软件黑盒测试PreDate报告 - 图文
更新时间:2024-01-24 01:52:01 阅读量: 教育文库 文档下载
- 软件黑盒测试方法推荐度:
- 相关推荐
实 验 报 告
课 程 专业年级 指导教师 软件测试 实验项目 姓 名 实验时间 黒盒测试用例设计与执行 学 号 实验成绩 一、实验目的
1.掌握如何运用边界值、等价类和决策表等黒盒测试方法进行测试用例设计。
2.初步熟悉轻量级自动化测试中测试驱动的编写与执行。
二、实验内容
1、题目
前一日函数PreDate是NextDate的逆函数(代码实现见下),实现功能为:函数接受一个MyDate类型的输入变量后通过计算返回该输入日期的前一日期值(如输入1999-3-6,则返回1999-3-5)。有效处理范围为1800 年到2050 年之间的某个日期,当输入无效时返回日期值为:年为0,月、日与输入值相同(例如输入1990-2-31,则返回0-2-31)。
请分别用边界值方法、等价类划分方法、决策表方法对前一日函数进行测试用例设计,并根据设计的用例集执行测试,对测试结果进行总结分析。
被测代码:(Leapyear函数比较简单,此处不做测试,直接作为PreDate的下级调用函数。以下代码粘贴到VC环境后与测试驱动程序结合即可执行测试。) #include\
typedef struct MyDate{ int month; int day; int year; }MyDate;
MyDate PreDate(MyDate date); int Leapyear(int year);
MyDate PreDate(MyDate date) {
MyDate yesterday;
yesterday.month = date.month; // initialization yesterday.day = date.day; yesterday.year = date.year;
//-------------验证输入日期的有效性------------- int v=1; //v==0表示无效,v==1表示有效
if(date.year<1800 || date.month<0 || date.day<0 || date.day>31 || date.month>12 || date.year>2050)
v=0;
//---------------计算输入日期的前一日期------------- if(v==1) {
if(date.day>1) yesterday.day=date.day-1; else {
switch(date.month) { case 1: case 2: case 4: case 6: case 8: case 9: case 11: {
yesterday.month=date.month-1; yesterday.day=31;
break; } case 3: {
}
if(Leapyear(date.year)) { }
yesterday.month=2; yesterday.day=29;
else {
yesterday.month=2; yesterday.day=28;
}
break;
case 5: case 7: case 10: case 12:
{
yesterday.month=date.month-1; yesterday.day=30;
}
}
}
}
}
break;
else yesterday.year=0; return yesterday;
int Leapyear(int year) { }
2、测试用例设计 1)边界值 A 边界值分析: C1 1<=month<=12 C2 1<=day<=31 C3 1800<=year<=2050 B 边界值测试用例
输入数据 ID 月 Test1 Test2 Test3 Test4 Test5 Test6 Test7 Test8 Test9 Test10 Test11 6 6 6 6 6 6 6 6 6 6 6 15 15 15 15 15 15 15 -1 1 2 30 日 年 1799 1800 1801 2012 2049 2050 2051 2012 2012 2012 2012 0年6月14日 1800.6.14 1801.6.14 2012.6.14 2049.6.14 2050.6.14 0年6月14日 0年6月-1日 2012.5.31 2012.6.1 2012.6.29 0年6月15日 1800.6.14 1801.6.14 2012.6.14 2049.6.14 2050.6.14 0年6月14日 0年6月-1日 2012.5.31 2012.6.1 2012.6.29 预期结果 执行结果 if((year%4==0&&year0!=0) || (year@0==0)) return 1; else return 0;
Test12 Test13 Test14 Test15 Test16 Test17 Test18 Test19 2等价类
6 6 -1 1 2 11 12 13 31 32 15 15 15 15 15 15 2012 2012 2012 2012 2012 2012 2012 2012 2012.6.30 0年6月32日 0年-1月14日 2012年1月14日 2012年2月14日 2012年11月14日 2012年12月14日 0年13月14日 2012.6.302012 0年6月32日 0年-1月14日 2012年1月14日 2012年2月14日 2012年11月14 2012年12月14 0年13月14日 A 等价类划分 M1={月份:每月30天}
M2={月份:每月31天(除三月外)} M3={月份:此月是1月} M4={月份:此月是2月} M5={月份:此月是3月} M6={月份:此月是8月}
D0={日期:day=1} D1={日期:2<=day<=28} D2={日期:day=29} D3={日期:day=30} D4={日期:day=31}
Y1={年:year=闰年} Y2={年:year=平年} B 等价类测试用例 ID
1 1996 1 1 1995 12 31 2 2002 1 1 2002 12 31 3 1996 1 16 1996 1 15 4 2002 1 16 2002 1 15
5 1996 1 29 1996 1 28 6 2002 1 29 2002 1 28 7 1996 1 30 1996 1 29 8 2002 1 30 2002 1 29 9 1996 1 31 1996 1 30 10 2002 1 31 2002 1 30 11 1996 2 1 1996 1 31 12 2002 2 1 2002 1 31 13 1996 2 16 1996 2 15 14 2002 2 16 2002 2 15 15 1996 2 29 1996 2 28 16 2002 2 29 0 2 28 17 1996 2 30 0 2 29 18 2002 2 30 0 2 29 19 1996 2 31 0 2 30 20 2002 2 31 0 2 30 21 1996 3 1 1996 2 29 22 2002 3 1 2002 2 28 23 1996 3 16 1996 3 15 24 2002 3 16 2002 3 15 25 1996 3 29 1996 3 28 26 2002 3 29 2002 3 28 27 1996 3 30 1996 3 29 28 2002 3 30 2002 3 29 29 1996 3 31 1996 3 30 30 2002 3 31 2002 3 30 31 1996 6 1 1996 5 31 32 2002 6 1 2002 5 31 33 1996 6 16 1996 6 15 34 2002 6 16 2002 6 15 35 1996 6 29 1996 6 28
36 2002 6 29 2002 6 28 37 1996 6 30 1996 6 29 38 2002 6 30 2002 6 29 39 1996 6 31 0 6 30 40 2002 6 31 0 6 30 41 1996 7 1 1996 6 30 42 2002 7 1 2002 6 30 43 1996 7 16 1996 7 15 44 2002 7 16 2002 7 15 45 1996 7 29 1996 7 28 46 2002 7 29 2002 7 28 47 1996 7 30 1996 7 29 48 2002 7 30 2002 7 29 49 1996 7 31 1996 7 30 50 2002 7 31 2002 7 30 51 1996 8 1 1996 7 31 52 2002 8 1 2002 7 31 53 1996 8 16 1996 8 15 54 2002 8 16 2002 8 15 55 1996 8 29 1996 8 28 56 2002 8 29 2002 8 28 57 1996 8 30 1996 8 29 58 2002 8 30 2002 8 29 59 1996 8 31 1996 8 30 60 2002 8 31 2002 8 30
3)决策表 简化后的决策表
1 2-4 5 6 7-10 11 12-15 16 C1:M C2:D C3:Y 不可能 D减1 D复31 D复30 D复29 D复28 M减1 M复12 Y减1 C1:M C2:D C3:Y 不可能 D减1 D复31 D复30 D复29 D复28 M减1 M复12 Y减1
M1 D1 -- √ M1 D2-D4 -- √ M1 D5 -- √ M2 D1 -- √ M2 D2-D5 -- √ M3 D1 -- √ √ √ M3 D2-D5 -- √ M4 D1 -- √ 17 M4 D2 -- √ 18 19 M4 M4 D3 D3 Y1 Y2 √ 20-21 22 M4 M5 23 M5 D1 Y2 √ 24-27 M5 D2-D5 -- √ 28 M6 D1 -- √ 29-32 M6 D2-D5 -- √ D4-D5 D1 -- √ Y1 √ √ 3、执行测试
1)测试驱动程序代码:
void DriverpredateRevenueAccount() { //--------1. 设置局部变量----------- int tcPassNum = 0;
int tcFailNum = 0; // 存储通过和失败的测试用例总数
FILE* pFpFrom = NULL; // 数据文件的指针,存储测试用例的基本信息 FILE* pFpTo = NULL; // 记录测试用例执行结果的文件的指针 //--------2. 打开数据文件,准备读取测试用例的数据----------- char* DataFileName = \ pFpFrom = fopen( DataFileName, \ if( !pFpFrom )
{
printf( \读取数据失败,返回\\n\ return;
}
// 打开数据文件,准备记录测试用例执行结果 char* DataFileTestResultName = \ pFpTo = fopen( DataFileTestResultName, \ if( !pFpTo )
{
printf( \打开文件失败,返回\\n\ return;
}
fprintf( pFpTo, \对函数predateRevenueAccount的单元测试结果-------------\\n\
//-----------3. 执行测试用例,记录测试结果----------- int TCID = 0;
MyDate originalAmount; // 测试用例的输入 MyDate expectedOutcome; // 测试用例的预期输出 MyDate actualOutcome; // 测试用例的实际输出
printf( \对函数predateRevenueAccount展开单元测试\\n\ while( !feof(pFpFrom) ){// 不断读取每个测试用例的数据 fscanf( pFpFrom, \读入测试用例的ID
fscanf( pFpFrom, \
fscanf( pFpFrom, \读入测试用例的输入 fscanf( pFpFrom, \
fscanf( pFpFrom, \读入测试用例的预期输出 fscanf( pFpFrom, \ fscanf( pFpFrom, \
actualOutcome = PreDate( originalAmount );// 执行测试用例 // 输出测试用例的信息
printf( \测试用例%d: 输入%d年%d月%d日, 预期输出%d年%d月%d日,实际输出%d年%d月%d日, \ expectedOutcome.year,expectedOutcome.month ,expectedOutcome.day, actualOutcome.year, actualOutcome.month,actualOutcome.day);
if( actualOutcome.year==expectedOutcome.year&&actualOutcome.month==expectedOutcome.month&&actualOutcome.day==expectedOutcome.day) {// 若测试用例通过,则记录通过的用例总数 tcPassNum ++; printf( \通过\\n\
fprintf( pFpTo, \测试用例%d: Pass\\n\将测试用例的执行结果存入结果文件 } else {
tcFailNum ++; printf( \失败\\n\
fprintf( pFpTo, \测试用例%d: Fail\\n\将测试用例的执行结果存入结果文件 } }
fclose( pFpFrom );// 关闭测试用例数据文件 //-----------4. 统计测试结果-----------
printf( \共执行%d 个测试用例,其中%d 个通过,%d 个失败\\n\tcPassNum, tcFailNum );
fprintf( pFpTo, \共执行%d 个测试用例,其中%d 个通过,%d 个失败\\n\tcPassNum+tcFailNum, tcPassNum, tcFailNum ); fclose( pFpTo );// 关闭结果记录文件 }
void main() {
DriverpredateRevenueAccount(); }
2)测试执行结果与分析 1边界值测试
分析:
共执行19 个测试用例,其中18 个通过,1 个失败 2等价类测试 分析:
共执行19 个测试用例,其中18 个通过,1 个失败。 决策表:
分析:
共执行17 个测试用例,其中13 个通过,4 个失败
三、实验小结
正在阅读:
软件黑盒测试PreDate报告 - 图文01-24
小主持人终稿311-05
2022-2022学年牛津译林版八年级下册英语期中试卷(无听力)(有答案04-05
我是环卫小卫士作文500字06-28
基于公平视角下的城乡教育配置资源探究10-10
俄罗斯钻探到地狱入口05-07
特级教师黎琼《老师的语言要像宝石一样镶嵌在课堂上》05-04
第五次作业--资本结构决策及答案10-01
现场总线实验心得体会10-22
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- PreDate
- 图文
- 测试
- 报告
- 软件
- 江西版小学五年级美术上册期末试题
- 小学科学学生探究活动记录表(五年级下) - 图文
- 如何处理餐饮员工之间的矛盾?管理大咖经验分享
- 最新部编版三年级语文上册教案教学设计导学案 灰雀3
- 建筑学学校建筑规划设计论文中英文资料外文翻译文献
- 人教版高中化学选修四 - 酸碱中和滴定教案设计 - 图文
- 我国有色冶炼及烟气制酸的现状与展望
- APAP4基本语法参考
- 大学生社交礼仪论文
- 工程地质岩石分类及鉴定
- 中南大学《电子商务》课程试题(2)及参考答案
- 社区实行网格化管理工作中存在的问题与困难
- 数值积分及其MATLAB实现
- 环境保护部连续自动监测试题11
- 小小的船课堂实录及评点
- 一位农村小学校长的困惑与反思
- 危险化学品卸车查验、核准登记表
- 防水工程专项施工方案 - 图文
- 通达OA工作流设计简易案例
- 阳光体育冬季长跑活动计划