《软件测试技术课程设计》课程设计报告
班级:
姓名:
学号:
设计时间:
2012/6/24到2012/6/28
一、课程设计名称:图书管理系统的测试
二、使用工具软件:MyEclipse , JProfiler windows 7.0, Selenium IDE 1.8.1;
三、课程设计内容简介:
软件测试是根据软件开发阶段的规格说明和程序的内部结构而精心设计的一批测试用例,并利用这些测试用例去运行程序,以发现错误的过程。测试不仅是软件开发中的重要环节之一,也是软件质量保证的关键环节,直接影响着软件的质量评估。程序测试是为了发现错误而执行程序的过程。
基本结构流程:
(1) 单元测试
测试用例:对图书管理系统的部分功能代码进行单元测试。在编写完成的系统程序里导入JUnit包来完成单元测试。具体步骤如下:
首先,工程名右键,Build Path,然后选择 Configure Build Path , Add Library里选择 JUnit,下一步,最后点击完成。
在工程里,新建一个 Source Folder,再新建一个测试包 com.library.junit,然后新建一个测试类 DaoTest.java。在类里编写测试代码。
编写测试脚本
package com. library.junit;
public class DaoTest {
@Test//查询图书相关信息
public void selectBookInfoTest() {
List<BookInfo> list=Dao.selectBookInfo();
Assert.assertEquals("1234567891234", ((BookInfo)list.get(0)).getISBN());
Assert.assertEquals("1", ((BookInfo)list.get(0)).getTypeid());
Assert.assertEquals("Java", ((BookInfo)list.get(0)).getBookname());
Assert.assertEquals("测试", ((BookInfo)list.get(0)).getWriter());
Assert.assertEquals("测试", ((BookInfo)list.get(0)).getTranslator());
Assert.assertEquals("***出版社", ((BookInfo)list.get(0)).getPublisher());
Assert.assertEquals(30.0, ((BookInfo)list.get(0)).getPrice()); }
@Test//查询借阅表信息
public void selectBorrow() {
List<Borrow> list =Dao.selectBorrow("1111111111113");
Assert.assertEquals(31, ((Borrow)list.get(0)).getId());
Assert.assertEquals("1111111111113", ((Borrow)list.get(0)).getReaderISBN()); }
运行测试
点击右键,选择 Run As->JUnit Test,出现结果如图:
分析测试结果
此测试代码共实现了两个查询功能的测试,图书信息的查询和借阅表信息的查询。测试的结果与预期的值相同,数据库中存在ISBN为"1234567891234"的图书,所以结果显示为绿色,在Failure Trace栏中不显示任何错误信息。
(2) 性能测试
在Java EE项目测试中,服务器的性能是测试的一个重点,而且服务器的缺陷也是多发区。常见的现象如CPU的负荷在不断的增长,Memory常常溢出,系统性能逐渐下降甚至死机等。这些问题在实际的产品线更容易暴露出来。在这方面的测试,JProfiler是一个很好的测试工具,它通过实时的监控系统CPU、Memory和Thread来很好的监控JVM的运行和性能状况。
设计测试用例
a、 监控端的配置
打开JProfiler,然后单击Start Center ,弹出对话框。选择New Session选项,单击New Remote Intergration,单击Start。
选择On a remote computer按钮,在Platform of the remote computer :选择Windows X86。
输入配置远程机器IP地址。
b、 被监控端的配置
修改服务器启动文件后,在Tomcat的Bin文件夹下的startup.bat文件里设置JAVA_OPTS,内容如下:set JAVA_OPTS=%JAVA_OPST% -agentpath:F:\jprofiler_windows_7_0\jprofiler7\bin\windows\jprofilerti.dll=port=8849
添加PATH环境变量,在PATH中添加之前复制的环境变量。
运行测试
启动Startup.bat。Tomcat窗口出现提示等待连接的状态;
监控端在Start Center选择配置好的Session,单击开始按扭;
访问远程服务;
观察JProfiler提供的5个视图。
启动Tomcat
(1) 内存剖析
(2) 堆遍历
(3) CPU剖析
(4) 对线程剖析
(5) VM遥感勘测技术
分析测试结果
内存剖析:JProfiler的内存视图部分可以提供动态的内存使用状况视图和显示关于内存分配状况信息的视图。所有视图都有几个聚集层,并且能够显示现有存在的对象和作为垃圾回收的对象。
堆遍历:在JProfiler的堆遍历器中可以对堆的状况进行快照,并且可以通过选择寻找感兴趣的对象。
CPU剖析:JProfiler提供不同的方法来记录访问数以优化性能和细节。线程以及线程组可以被所有视图选择,所有的视图都可以聚集到方法、类、包等不同层上。
VM遥感勘测技术:观察JVM的内部状态,JProfiler提供了如下不同的遥感勘测视图。
(3) 功能测试
Selenium是专门为Web应用程序编写的一个验收测试工具。Selenium测试直接在浏览器中运行。Selenium Core测试使用HTML组织测试用例。
设计测试用例
Selenium录制功能是由Selenium IDE实现的。启动Firefox浏览器,在菜单栏中单击工具菜单,可以看到Selenium IDE子菜单。选择Selenium IDE命令,弹出窗口。这时开始录制脚本,右上角有个红色圆点,按下时表示正在进行录制脚本,录制时直接操作浏览器就可以了,IDE自动记录操作。
编写测试脚本
录制脚本。将Selenium IDE “录制”按钮按下,使其变成录制状态,这时可以再页面上进行相应操作,如登录“图书管理系统”,依次做这些动作:鼠标单击用户名输入框并输入用户,移到密码输入框,输入密码,单击“登录”。这时查看Selenium IDE窗口,在table选项卡中有以下几条记录:
<table cellpadding="1" cellspacing="1" border="1">
<thead><tr><td rowspan="1" colspan="3">New Test</td></tr>
</thead><tbody><tr>
<td>open</td>
<td>/StrutsLibrarySystem/</td>
<td></td></tr><tr>
<td>type</td>
<td>id=name</td>
<td>admin</td>
<td>clickAndWait</td>
<td>name=Submit</td>
<td></td></tr>
</tbody></table>
运行测试
添加验证点。当一个脚本录制完成以后,实际上这个脚本还没有达到测试的目的,还需要为其添加验证点。在刚才的脚本后面加上下面的语句即可。
<tr>
<td>verifyTextPresent</td>
<td>退出系统</td>
</tr>
回放脚本。录制好脚本以后,单击Selenium IDE窗口中的Play entire test suite 按钮来回放脚本。
分析测试结果
正常情况下,录制的脚本是可以在回放时顺利通过的,但是为了脚本的稳定,一般在一些有页面重载的地方加一些延时,如延时3S或者增加一个等待命令。
四、设计实践过程中的自我感受
对于这次的程序设计的完成主要是样子,首先分析了相关的题目内容,并由此进行了相关资料和书籍的查询工作,然后才开始正式进行设计。一开始不知从何下手但后来分析了一下题目,仔细查看书本与测试有关的内容,尝试去理解其中的方法,最后终于慢慢了解了测试的工具和手段。通过几天的练习,我也发现自己的很多不足,自己知识的很多漏洞,看到了自己的实践经验还是比较缺乏的,理论联系实际的能力还是比较弱的。在今后我应该在多看书的同时还要加强实践的联系,才能进一步提高自己的测试的能力。
五、参考文献
[1]软件测试方法与技术实践指南 Java EE版王顺著 清华大学出版社
第二篇:图书管理系统《软件测试技术》课程设计报告——测试计划
北方民族大学
课程设计报告
系(部、中心) 计算机科学与工程学院
姓 名 学 号
专 业 班 级
同组人员
课程名称 软件测试技术
设计题目名称 《图书管理系统系统测试计划》
起止时间 20##年3月1日—20##年5月1日
成 绩
指导教师签名
北方民族大学教务处制
目 录
1. 引言............................................................................................................ 1
1.1《测试计划》编写目的........................................................................ 1
1.2 项目简介............................................................................................. 1
1.3 测试所需参考资料.............................................................................. 1
1.4 测试提交文档...................................................................................... 1
2. 测试进度安排............................................................................................ 1
3. 测试资源.................................................................................................... 2
3.1 人力资源............................................................................................. 2
3.2 测试环境............................................................................................. 2
3.3 测试工具............................................................................................. 2
4. 测试方案..................................................................................................... 2
4.1 测试方法的选择.................................................................................. 2
4.2 测试覆盖率要求.................................................................................. 2
5. 测试项目说明............................................................................................. 3
参考文献.......................................................................................................... 3
1. 引言
1.1《测试计划》编写目的
测试计划是在软件开发的前期对软件测试做出清晰,完整的计划,不光对整个测试起到关键性的作用,而且对开发人员的开发工作,整个项目的规划,项目经理的审查都有辅助性作用。包含了产品概述,测试策略,测试方法,测试区域,测试配置,测试周期,测试资源,风险分析等内容;借助软件测试计划,参与测试的项目成员,可以明确测试任务和测试方法,保持测试实施过程的顺畅沟通,跟踪和控制测试进度,应对测试过程中的各种变更。
首先,《测试计划》用来定义测试的范围、测试的方法、所需的资源、进度等,明确需要测试的产品项,需要覆盖的功能特性,需要执行的测试任务,每项任务的负责人,识别相关的风险。
其次,能够指导我们顺利的完成软件测试的任务,无论是在时间还是在任务分配或者是在进度安排方面都对我们起一个指导性的作用,使我们有条不紊的进行课程的学习。
测试计划是详细的计划过程中的一个副产品。重要的是计划的过程,而不是文档本身。测试计划的最终目标是表达(而非记录)测试组的意图、期望,以及对于即将进行的测试的理解。
1.2 项目简介
1.2.1 项目背景、
系统名称:图书管理系统
项目背景为:
科学技术的飞速发展把人类社会推向了一个崭新的时代——信息时代。人们对这些信息进行收集、加工、传递等过程的时间性和准确性提出了更高的要求。这一切使得传统的手工作业为基础的信息系统陷入了机构日益庞大,效率日益降低的困境。电子计算机的出现为摆脱这种困境找到了出路。计算机用于管理信息处理的突出优点是迅速、准确、可靠、具有很大的存储能力,适应于管理信息量大、面宽的特点,适合于管理信息处理及时、准确的要求信息对社会经济发展的巨大推动作用,使其与物质能源一起并列为现代社会的三大支柱。图书管理系统是一个图书单位不可缺的部分,图书管理系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件档案,这种管理方式存在着许多缺点,如:效率低、保密性差,这对于查找、更新和维护都带来了不少的困难。对于借阅者来说,想要借书必须去到图书馆,一本本的查找,效率低,占用时间长,不利于查找,而且没有人性化管理。图书馆的规模越大,管理员对图书的管理越来越复杂,如果用传统的方法来管理,将是不可能实现的问题,对于借阅者,想要找到需要的图书也是一个复杂的问题。为了使图书管理简单化,使非专业人员也能轻松管理图书,使读者便于查找借阅归还图书,就必须设计一套实用简单,功能强大的图书管理系统。
项目范围:
本图书管理系统主要面向中小型图书管理机构或中小型机构的资料或文件等的管理,由于系统本身的和管理方面的限制及数据方面的要求和局限性,本系统并不适合于大型机构和其他性质的机构使用,此外本系统也可作为学习和参考方面的资料。
1.2.2 系统基本功能
图:1.1 系统功能模块图
1.2.3 系统总体用例
图:1.2 系统功能模块图
图1.3读者子系统用例图
1.2.4 系统技术架构
系统采用C/S 架构
C/S(Client/Server)结构,即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是Client/Server形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Server应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的发展方向。
传统的C/S体系结构虽然采用的是开放模式,但这只是系统开发一级的开放性,在特定的应用中无论是Client端还是Server端都还需要特定的软件支持。由于没能提供用户真正期望的开放环境,C/S架构的软件需要针对不同的操作系统系统开发不同版本的软件
C/S的优点是能充分发挥客户端PC的处理能力,很多工作可以在客户端处理后再提交给服务器。对应的优点就是客户端响应速度快。
缺点主要有以下几个:
1)只适用于局域网。而随着互联网的飞速发展,移动办公和分布式办公越来越普及,这需要我们的系统具有扩展性。这种方式远程访问需要专门的技术,同时要对系统进行专门的设计来处理分布式的数据。
2)客户端需要安装专用的客户端软件。首先涉及到安装的工作量,其次任何一台电脑出问题,如病毒、硬件损坏,都需要进行安装或维护。特别是有很多分部或专卖店的情况,不是工作量的问题,而是路程的问题。还有,系统软件升级时,每一台客户机需要重新安装,其维护和升级成本非常高。
3) 对客户端的操作系统一般也会有限制。
在编程技术方面采用VB.NET技术,开发环境应用Visual Studio2005数据库采用Access 2003
Visual Studio :
Visual Studio 是微软公司推出的开发环境,Visual Studio 可以用来创建 Windows 平台下的 Windows 应用程序和网络应用程序,也可以用来创建网络服务、智能设备应用程序和 Office 插件。
1.3 所需参考资料
表1-1:所需资料列表
1.4 测试提交文档
表1-2:测试提交文档列表
2. 测试进度安排
表2-1:测试进度安排表
3. 测试资源
3.1 人力资源
表3-1:测试人力资源安排表
3.2 测试环境
3.2.1 硬件环境
个人PC机一台
Pentium(R)Dual-Core CPU
T4400@ 2.20GHz
2.19GHz, 2.0GB 的内存
3.2.2 操作系统
Windows XP pro sp3 32位
3.2.3 软件环境
Visual Studio2005 Access 2003 word 2003
3.3 测试工具
表3-2:测试工具列表
4. 测试方案
4.1 测试方法的选择
测试的方法:在这里我们采用黑盒、白盒、静态、动态、回归、单元和集成测试。
黑盒测试:
黑盒测试又称功能测试或者数据驱动测试。黑盒测试是根据软件的规格对软件进行的测试,这类测试不考虑软件内部的运作原理,因此软件对用户来说就像一个黑盒子。
软件测试人员以用户的角度,通过各种输入和观察软件的各种输出结果来发现软件存在的缺陷,而不关心程序具体如何实现的一种软件测试方法。
白盒测试:
白盒测试又称结构测试或者逻辑驱动测试。白盒测试是把测试对象看作一个打开的盒子。利用白盒测试法进行动态测试时,需要测试软件产品的内部结构和处理过程,不需测试软件产品的功能。
白盒测试是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证
静态测试:
静态测试指测试不运行的部分,例如测试产品说明书,对此进行检查和审阅.。静态方法是指不运行被测程序本身,仅通过分析或检查源程序的文法、结构、过程、接口等来检查程序的正确性。静态方法通过程序静态特性的分析,找出欠缺和可疑之处,例如不匹配的参数、不适当的循环嵌套和分支嵌套、不允许的递归、未使用过的变量、空指针的引用和可疑的计算等。静态测试结果可用于进一步的查错,并为测试用例选取提供指导
动态测试:
动态测试是指通过运行软件来检验软件的动态行为和运行结果的正确性。
回归测试:
回归测试是指在发生修改之后重新测试先前的测试以保证修改的正确性。理论上,软件产生新版本,都需要进行回归测试,验证以前发现和修复的错误是否在新软件版本上再次出现。
根据修复好了的缺陷再重新进行测试。回归测试的目的在于验证以前出现过但已经修复好的缺陷不再重新出现。一般指对某已知修正的缺陷再次围绕它原来出现时的步骤重新测试。通常确定所需的再测试的范围时是比较困难的,特别当临近产品发布日期时。因为为了修正某缺陷时必需更改源代码,因而就有可能影响这部分源代码所控制的功能。所以在验证修好的缺陷时不仅要服从缺陷原来出现时的步骤重新测试,而且还要测试有可能受影响的所有功能。
单元测试:
单元测试是最微小规模的测试;以测试某个功能或代码块。典型地由程序员而非测试员来做,因为它需要知道内部程序设计和编码的细节知识。这个工作不容易做好,除非应用系统有一个设计很好的体系结构; 还可能需要开发测试驱动器模块或测试套具。
集成测试:
集成测试是指一个应用系统的各个部件的联合测试,以决定他们能否在一起共同工作并没有冲突。部件可以是代码块、独立的应用、网络上的客户端或服务器端程序。这种类型的测试尤其与客户服务器和分布式系统有关。一般集成测试以前,单元测试需要完成。
集成测试是单元测试的逻辑扩展。它的最简单的形式是:两个已经测试过的单元组合成一个组件,并且测试它们之间的接口。从这一层意义上讲,组件是指多个单元的集成聚合。在现实方案中,许多单元组合成组件,而这些组件又聚合成程序的更大部分。方法是测试片段的组合,并最终扩展进程,将您的模块与其他组的模块一起测试。最后,将构成进程的所有模块一起测试。此外,如果程序由多个进程组成,应该成对测试它们,而不是同时测试所有进程。
集成测试识别组合单元时出现的问题。通过使用要求在组合单元前测试每个单元,并确保每个单元的生存能力的测试计划,可以知道在组合单元时所发现的任何错误很可能与单元之间的接口有关。这种方法将可能发生的情况数量减少到更简单的分析级别
测试用例的选取原则:
一:测试用例必须具有代表性、典型性。
二:测试用例要有“浓缩性”,即精要、综合。
三:尽量避免含糊的测试用例。
四:尽量将具有类似效果的测试用例抽象并归类。
五:尽量避免冗长和复杂的测试用例。
4.2 测试覆盖率要求
4.2.1 对源代码的测试覆盖率要求
在这里我们争取对软件关键模块的语句覆盖率要达到100%,分支覆盖要达到85%以上。从而使系统的整体代码覆盖率能够达到87%以上。
4.2.2 对需求的测试覆盖率要求
在这里争取测试用例的执行率要在100%,即所有用例都要执行一遍,测试用例的通过率要达到95%以上。
5. 测试项目说明
表5-1:测试项目列表
参考文献
[1] [德]Spillner,Linz,[挪]Schaefer著,刘琴等译,《软件测试基础(第2版)》,人民邮电出版社,20##年4月
[2]朱少民,《软件测试方法和技术》,清华大学出版社, 20##年7月
[3]教育部考试中心/教育部考试中心,《全国计算机等级考试四级教程 - - 软件测试工程师(20##年版) 》,高等教育出版社,20##年9月
[4]赵斌,《软件测试技术经典教程(第二版)》,科学出版社,20##年3月
[5][美]Paul C.Jorgensen,《软件测试(原书第2版)》,机械工业出版社,20##年4月