存档资料 成绩:
华东交通大学理工学院
课 程 设 计 报 告 书
所属课程名称 软件测试课程设计
题 目 软件测试
分 院 电信分院
专业班级 11信管1班
学 号
学生姓名
指导教师
20 年 月 日
课程设计(论文)评阅意见
评阅人 职称
20 年 月 日
目录
第一章 课程设计目的............................... 4
第二章 功能测试.................................. 5
第三章 结构测试.................................. 9
3、1. 逻辑路径测试............................. 9
3、2. 基本路径测试............................ 11
第四章 压力测试................................. 14
第五章 课程设计心得.............................. 16
第六章 参考文献................................. 17
第一章 课程设计目的
这次的软件测试课程设计与以前我做过的那些课程设计很不同,以往的都是一个大题而已,而这次的课程设计共有五个题目,需要使用到三种测试方法:功能测试、结构测试、压力测试。
软件性测试需要贯穿在整个软件生命周期的每个阶段,每个时刻。它需要伴随着软件开发以检验每一个阶段性的成果是否符合质量的要求和达到预先定义的目标,尽早的发现错误并改正以减少损失。
软件测试是软件工程中非常重要的环节,是软件质量的保证。该课程是培养训练学生软件质量保证能力的重要实践性教学环节,与软件测试技术课程的教学内容紧密配合,同步进行。开设该课程设计的主要目的是:通过软件测试的实践训练,深刻理解和掌握软件测试和软件测试过程的基本方法和基本技术,熟练掌握功能测试、结构测试的测试用例的设计,同时进一步提高学生对于复杂程序的编写能力,为学生将来从事实际软件测试工作和进一步深入研究打下坚实的理论基础和实践基础。
第二章 功能测试
功能测试也称为黑盒测试,黑盒测试是根据软件的规格对软件进行的测试,这类测试不考虑软件内部的运作原理,因此软件对用户来说就像一个黑盒子。
软件测试人员以用户的角度,通过各种输入和观察软件的各种输出结果来发现软件存在的缺陷,而不关心程序具体如何实现的一种软件测试方法。
黑盒测试常用工具有:AutoRunner、winrunner、loadrunner。
以下两个题采用等价类划分法进行功能测试。
等价划分测试是根据等价类设计测试用例的一种技术。是黑盒测试的典型方法之一,通过把被测试程序所有可能的输入数据域划分成若干部分。从每一部分中选取少数有代表性的数据作为测试用例,可有效减少测试次数,极大提高软件测试效率,缩短软件开发周期.等价类划分测试的目的就是为了在有限的测试资源的情况下,用少量有代表性的数据得到比较好的测试效果。有效等价类和无效等价类。有效等价类中的数据代表的是一组符合需求文档的正确的有意义数据。无效等价类则正相反。
1、用等价类划分法测试为保险公司计算保费费率的程序。
某保险公司的人寿保险的保费计算方式为:投保额*保险费*保险费率,其中的保险费依点数不同而有别,10点及10点以上保险费为0.6%,10点以下保险费率为0.1;而点数又是由投保人的年龄、性别、婚姻状况和抚养人数来决定,具体规则如下:
对程序中各个输入条件的要求如下:
年龄是一位或两位非零整数,值的有效范围为1-99;性别是一位英文字符,有效取值只能为‘M’(表示男性)或‘F’(表示女性);婚姻的有效取值只能为‘已婚’或‘未婚’:抚养人数的有效取值可以是空白或一位非零整数(1-9)。
(1)分析程序的规格说明,列出等价类表(包括有效等价类和无效等价类)。
(2)根据(1)中的等价类表,设计能覆盖所有等价类的测试用例的输入数据和预期输出。
步骤1:分析程序的规格说明,列出输入域等价类表
步骤2:根据等价类表设计能覆盖所有等价类的测试用例
2、某城市电话号码由三部分组成。它们的名称和内容分别是:
地区码:空白或三位数字:
前缀:非‘0’或‘1’的三位数字:
后缀:4位数字。
假定被测程序能接受一切符合上述规定的电话号码,拒绝所有不符合规定的电话号码。根据该程序的规格说明,作等价类的划分,并设计测试方案。
答:1.划分等价类
设计测试方案
第三章 结构测试
结构测试也称为白盒测试,白盒测试是把测试对象看作一个打开的盒子。利用白盒测试法进行动态测试时,需要测试软件产品的内部结构和处理过程,不需测试软件产品的功能。
白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。其中逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。
白盒测试常用工具有:Jtest、VcSmith、Jcontract、C++ Test、CodeWizard、logiscope。
以下两题目分别采用逻辑覆盖测试、基本路径覆盖测试,其中对于逻辑覆盖测试的用例设计,采用了语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖和路径覆盖对程序设计测试用例。
3、1. 逻辑路径测试
使用逻辑覆盖测试方法测试以下程序段:
Void Do Work(int x,int y,int z)
{
1 int k=0,j=0;
2 if((x>3)&&(z<10))
3 {
4 k=x*y-1;
5 j=sqrt(k);
6 }
7 if((x==4)||(y>5))
8 j=x*y+10;
9 j=j%3;
10 }
说明:程序段中每行开头的数字(1-10)是对每条语句的编号。
(1)画出程序的控制流图(用题中给出的语句编号表示)。
(2)分别以语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖和路径覆盖方法设计测试用例,并写出每个测试用例的执行路径(用题中给出的语句编号表示)。
解答:
(1)
程序的控制流图如下:
(2)假设M=(x>3)&&(z<10),N=(x=4)||(y>5),/M表示M的取反,/N同理
条件>3为真时为T1,为假时为F1,
条件<10为真时为T2,为假时为F2,
条件x==4为真时为T3,为假时为F3.
条件y>5为真时为T4,为假时为F4.
语句覆盖:输入x=5,y=6,z=9,满足MN,执行路径为: 1-2-3-4-5-6-7-8-9-10,输出k=29,j=1
判定覆盖:输入x=5,y=6,z=9,满足MN,执行路径为: 1-2-3-4-5-6-7-8-9-10,输出k=29,j=1
输入x=3,y=5,z=10,满足/M/N,执行路径为:1-2-7-9-10,输出k=j=0
条件覆盖: 输入x=4,y=5,z=10,满足T1F2T3F4,执行路径为: 1-2-7-8-9-10,输出k=j=0
输入x=3,y=6,z=9,满足F1T2F3T4,执行路径为:1-2-7-8-9-10,输出k=0,j=1
判定/条件覆盖:输入x=4,y=6,z=9,满足MN、T1T2T3T4,执行路径为:
输入x=3,y=6,z=9,满足F1T2F3T4,执行路径为: 1-2-7-8-9-10,输出k=0,j=1
判定/条件覆盖:输出x=4,y=6,z=9,满足MN、T1T2T3T4,执行路径为: 1-2-3-4-5-6-7-8-9-10,输出k=23,j=1
输入x=3,y=5,z=10,满足/M/N、F1F2F3F4,执行路径 为:1-2-7-9-10,输出k=j=0
条件组合覆盖:输入x=4,y=6,z=9,满足MN、T1T2T3T4,执行路径为:
1-2-3-4-5-6-7-8-9-10,输出k=23,j=1
输入x=4,y=5,z=10,满足/MN、T1F2T3F4,执行路径为:
1-2-7-8-9-10,输出k=j=0
输入x=3,y=6,z=9,满足/MN、F1T2F3T4,执行路径为:
1-2-7-8-9-10,输出k=0,j=1
输入x=3,y=5,z=10,满足/M/N、F1T2F3F4,执行路为:
1-2-7-9-10,输出k=j=0
路径覆盖:输入x=5,y=6,z=9,执行路径为:1-2-3-4-5-6-7-8-9-10输出k=29,j=1
输入x=5,y=5,z=9,执行路径为:1-2-3-4-5-6-7-9-10输出k=24,j=1
输入x=3,y=6,z=9,执行路径为:1-2-7-8-9-10输出k=0,j=1
输入x=3,y=5,z=10,执行路径为:1-2-7-9-10输出k=j=0
3、2. 基本路径测试
使用基本路径测试方法测试以下程序段:
Int IsLeap(int year)
{
① if(year%4==0)
{
② if(year%100==0)
{
③ if(year%400==0)
④ leap=1;
else
⑤ leap=0;—
}
else
④ leap=1;
}
else
⑤ leap=0;
⑥ return leap;
}
说明:写在程序段某些行开头的数字(1 - 6)是对相应语句的编号。
(1)画出程序的控制流图(用题中给出的语句编号表示)。
(2)计算上述程序段的环形复杂度。
(3)导出基本路径集,列出程序的独立路径(用题中给出的语句编号表示)。
(4)假设输入的取值范围是1000<year<2001,请根据(3)中的独立路径,设计测试用例的输入数据和预期输出。
解答:(1)
(2)圈复杂度:V(G)=4
(3)基路径
Path1:1,2,10,11,12
Path2:1,2,3,8,9,11,12
Path3:1,2,3,4,6,7,9,11,12
Path4:1,2,3,4,5,7,9,11,12
(4)测试用例:
用例1:year是1000-2000之间不能被4整除的整数,如1001、1002、1003等。
用例2:year是1000-2000之间能被4整除但不能被100整除的整数,如1004、1008、1012、10016等。
用例3:year是1000-2000之间能被100整除但不能被400整除的整数,如1100、1300、1400、1500、1700、1800、1900
用例4:year是1000-2000之间能被400整除的整数,如1200、1600、2000。
第四章 压力测试
压力测试是一种基本的质量保证行为,它是每个重要软件测试工作的一部分。压力测试的基本思路很简单:不是在常规条件下运行手动或自动测试,而是在计算机数量较少或系统资源匮乏的条件下运行测试。通常要进行压力测试的资源包括内部内存、CPU 可用性、磁盘空间和网络带宽等。一般用并发来做压力测试。下题运用到的知识如下:
(1)响应时间:从应用系统发出请求开始,到客户端接收到最后一个字节数据为止所消耗的时间。
(2)并发用户数:同一时间段内访问系统的用户数量。
(3)吞吐量:单位时间内系统处理的客户请求数量。
压力测试是指模拟实际应用的软硬件环境及多用户订单提交过程的系统负荷,运行测试软件来测试被测系统的可靠性、稳定性等。本次实验所用到的压力测试方法有:
(4)重复测试:重复执行某个操作或功能,以检验软件能否在极端情况下正常执行该操作。
(5)并发测试:并发是同时执行多个操作的行为,即在同一时间执行多个测试线程。
1、负载压力性能测试是评估系统性能、性能故障诊断以及性能调优的有效手段。自选一个系统,例如税务征管系统中“税票录入”业务或“投票”业务等进行测试。系统服务器端由应用服务器和单节点数据库服务器组成。
回答以下问题:
(1)简述交易吞吐量和交易响应时间的概念。
(2)试判断随着负载的增加,当交易吞吐量不再递增时,交易响应时间是否会递增,并说明理由。
(3)对系统进行测试并且补充上表,根据测试结果,判断服务器资源使用情况是否合理,为什么?
(4)在并发用户数为50时,如果交易吞吐量和交易响应时间都不满足需求,简述数据库端造成此缺陷的主要原因,有效的解决方案是什么?
(5)若去年仓库处理“税票录入”交易约100万笔,考虑到3年后交易量递增到每年200万笔。假设每年交易量集中在8个月,每个月20个工作日,每个工作日8小时。试采用80~20原理估算系统服务器高峰期“税票录入”的交易吞吐量(trans/s)。
答:
(1)交易吞吐量:系统服务器每秒能够处理通过的交易数。
交易响应时间:是系统完成事务执行准备后所采集的时间戳和系统完成待执行事务后所采集的时间戳之后的时间间隔,是衡量特定类型应用事务性能的重要指标,标志了用户执行一项操作大致需要多长时间。
(2)当系统吞吐量未达到系统处理极限时,系统性能不衰减,交易平均响应时间一般不会递增;
当系统达到交易吞吐量极限时,客户端交易会在请求队列中排队等待,等待的时间会记录在响应时间中,交易平均响应时间一般会递增。
(3)数据库服务器资源使用不合理。
服务器资源使用中最主要的指标是CPU利用率,对于一般的应用系统,在负载压力期间当CPU利用率平均值持续达到85%以上时,表示服务器资源使用出现瓶颈,视为不合理。
当并发用户数达到50时,数据库服务器CPU平均利用率(%)达到97.5%,属不合理范围。
(4)数据库端造成此缺陷的主要原因包括:
服务器资源负载过重;
数据库设计不合理;
数据库单个事务处理响应时间长;
系统并发负载造成最终用户响应时间长;
有效的解决方案是:采用数据库集群策略,并注意配置正确。
(5)(1000000*2*80%)/(8*20*8*3600*20%)=1.74trans/s
即服务器处理“税票录入”交易的吞吐量应达到1.74trans/s
第五章 课程设计心得
通过此次软件测试的课程设计,深刻学习掌握了软件测试和软件测试过程的基本方法和基本技术,关于黑盒、白盒的测试用例的设计,也进行了认真学习研究,从而进一步提高了自己在程序上的编写能力,以及一些之前未触及的问题,为即将踏上社会的自己又做了一份理论和实践的准备。
《软件测试方法和技术》这门课程是计算机软件工程专业的一门专业课,它具有很高的专业性知识,通过学习《软件测试方法和技术》,在《现代软件工程》课程基础上,将《现代软件工程》课程中的软件测试部分专门提取出来并详细解读,足以见本门课程的内容在软件实际开发过程中的重要性,软件测试做的好坏能决定一个软件的好坏,软件测试用例使用的好坏也决定着软件测试过程、软件的好坏。学习好本门课程对以后进行软件开发以及软件测试有着很好的作用。通过本次课程设计,以具体的测试实例加深巩固了本学期所开设的《软件测试方法和技术》课程。掌握并总结实践中的缺点和成功之处,将为我们将来在软件行业工作打下良好基础。总之,这几天来的付出得到了回报,既巩固了所学的知识,又加深了对这门学科的理解,感觉自己收获颇丰。
这次课设,让我学到了很多书本上没有的东西,我也将课本上的知识融会贯通,起到了很好的辅助学习的效果,我也发现我学到的知识比上个学期学的还要多。理论和实践相结合是学习的最有效的方法,这次设计中我也发现了自己的很多不足之处,对以前所学的理解不够深刻,掌握不够牢固。
第六章 参考文献
[1]张小松,王钰,曹跃 等译.软件测试(原书第2版).机械工业出版社.2006.4
[2]陈能技(著).软件测试技术大全:测试基础、流行工具、项目实战(第二版).人民邮电出版社.2011.7
[3]段念.软件性能测试过程详解与案例剖析(第二版).清华大学出版社.2012.6
[4]刘群策,《LoadRunner和软件项目性能测试》,机械工业出版社,20##年
[5]朱少民,《软件测试方法和技术》,清华大学出版社,20##年
[6]段念,《软件性能测试过程详解与案例剖析》,清华大学出版社,20##年
[7]宫云站,《软件测试教程》,机械工业出版社,20##年
[8]谢希仁,计算机网络(第五版)北京:电子工业出版社,2008.2
[9]胡小强,计算机网络 北京:电子邮电大学出版社 2005.1
[10]张海藩,《软件工程导论》(第五版),清华大学出版社,2008.2