《软件测试技术课程设计》课程设计报告班级:姓名:学号:设计时间:2012/6/24到2012/6/28一、课程设计名称:图书管理系统的测试二、使用工具软件:MyEclipse ,JProfiler windows 7.0,Selenium IDE1.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=p ort=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版王顺著清华大学出版社。