【摘要】本文通过对各种测试工具的研究,摸索出了一些适合在现有研发过程中使用的收集Web Script代码覆盖率的工具,包括适用于ASP.net和JSP应用的工具。并就在这些工具的优缺点进行了分析,给出了对于ASP.net和JSP应用不同的代码覆盖率的收集方法。
一、问题的提出软件质量问题是本部门、本公司、整个业界都十分关注的问题,为了提高软件质量,事业部EPG决定在各个项目中逐步把单元测试引入到研发流程。在C、C++和JAVA单元测试方面,已经有CUnit、CppUnit和Logiscope等测试工具能够完成。在Web测试方面,也有许多工具能够完成功能测试、性能测试和回归测试,但是在Script的代码覆盖率收集方面,目前没有一款全面的工具。
代码执行的覆盖率是衡量软件测试好坏的一项重要指标,理想的状态是语句覆盖率达到100%,一般要求达到90%以上。为了达到这一目标,必须找到一种方法或者测试工具能够度量覆盖率指标,以便能够根据测试结果不断修改完善测试用例,从而提高覆盖率指标。
二、实践思路针对Web Script代码覆盖率收集这一问题,我们确定了研究的重点在于找到一款合适的工具进行覆盖率的收集工作。Web应用主要分为两大阵营:一大阵营是ASP.net应用,一大阵营是JSP应用。针对这两种不同的应用 ,我们必须找到支持这两种应用的不同工具或者同时支持这两种应用的覆盖率测试工具。
因为国内在这方面的资料很少,所以我们主要是通过访问专业的测试论坛去获取专业技术资料,同时借助事业部EPG提供的指导,掌握最新的动态来完成此工作。
三、实践情况我们研究了多款工具,最后发现有两款工具适合做Web Script覆盖率的收集工作。
1.AQTime
我们首先研究的第一款工具是AutomatedQA公司的AQTime。AQtime运行在windows平台下,它支持.net应用和非.net应用,但不支持JAVA应用。测试.net应用需要Microsoft .NET Framework 1.x 或Microsoft .NET Framework 2.0的支持。
AQtime提供了如下的八种监测器:
Ø Performance:监测应用程序的执行情况,发现其瓶颈所在
Ø Allocation:监测应用程序的内存分配情况,分析是否有内存泄漏存在
Ø Resource:监测程序对Windows资源的占用情况
Ø Coverage:代码覆盖率监测
Ø Exception Tracer:监测程序运行中出现的异常,并在Event View面板中显示该异常的堆栈调用情况
Ø Static Analysis:显示程序中的函数依赖与调用关系
Ø Sequence Diagram Link :自动生成表明函数间调用关系的UML时序图
Ø Platform Compliance :报告源程序中的API调用适用于哪些版本的Windows 我们通过使用发现,其中的Coverage监测器能够进行ASP.net应用的覆盖率的收集,而且使用起来十分方便,只要将服务端的DLL文件导入,然后打开浏览器,输入网址,整个收集工作就开始了。而且生成的测试报告给出了覆盖率数据,清晰地反映了每个函数的执行情况,包括哪些行执行到了,哪些行没有执行到,分别执行了几次等重要信息。 用AQTime能够收集服务端C#和VB.net代码的覆盖率,但是不能收集客户端Script脚本的覆盖率,同时导入的DLL文件需要编译器的Debug信息。2.Web Script Coverage
我们研究的另一款工具是DevPartner Studio的Web Script Coverage工具。该工具主要是收集Web客户端Script脚本覆盖率的。 它使用起来也很简单,只要启动此工具,然后在浏览器中 输入网址,收集工作就开始了。在形成的测试报告中清楚地反映了每个函数的实行情况,给出了覆盖率数据,同时对于执行到的脚本和未执行到的脚本用不同的颜色表示,十分明了。 该工具唯一的缺陷就是不能收集服务端脚本的覆盖率,同时存在中文字符无法正确识别的问题。 总结这两款工具的优缺点,最后我们根据我们的实际情况,提出了一个可行的Web Script覆盖率收集方案。对于ASP.net应用,我们可以采用AQTime+Web Script Coverage相结合的方式,用AQTime收集服务端C#或者VB.net的覆盖率,用Web Script Coverage收集客户端Script的覆盖率;对于JSP应用,对于客户端的Script,仍然可以用Web Script Coverage去收集覆盖率,但是对于服务端的Scriptlet目前还没有一款很好的工具去收集其覆盖率,分析Scriptlet中的脚本多是调用JavaBean中的方法,进行诸如数据库连接、查询和数据显示的工作,所以测试的重点应该放在对JavaBean的测试方面。