基于模版的Web应用程序的自动测试

点赞:11380 浏览:46777 近期更新时间:2024-03-12 作者:网友分享原创网站原创

摘 要:介绍一种基于模板的Web应用程序测试方法.该方法通过在模板中设置POST数据以及其它相关数据,实现多个测试用例的自动测试,并可以把测试结果和日志文件下载到本地进行分析.该方法操作简单实用,可提高Web应用程序的测试效率.

关 键 词:Web应用程序,测试,模板

中图分类号:TP311.56文献标识码:A文章编号:16727800(2011)012002401

作者简介:余秋惠(1970-),女,湖北武汉人,武汉工程大学计算机科学与工程学院实验师,研究方向为软件工程;何成万(1967-),男,湖北荆门人,武汉工程大学计算机科学与工程学院教授,研究方向为软件工程.


0引言

软件测试是软件开发过程中的一个重要阶段,它是查找软件缺陷、提高软件质量的一个有效方法.针对不同类型的软件,需要使用不同的测试方法和工具.

Web应用程序一般采用3层体系结构,其调试及测试的复杂程度比单机版的应用程序要高.HttpUnit是一个测试Web应用程序的框架,但是它的使用方法还是比较复杂,需要具有专门知识的程序员编写相关代码.

本文提出一种基于模板的Web应用程序的自动测试方法.该方法不需要专门的测试工具,程序员编写的测试驱动程序会按照模板中的数据进行自动测试,生成相关测试结果和测试日志.

1方法概述

基于模板的Web程序的自动测试流程如图1所示.

图1基于模板的Web程序的自动测试流程

测试模板文件包含测试数据、访问Web怎么写作器的URL、执行结果文件名以及日志文件名等信息.参数文件生成程序根据测试模板的内容生成POST数据文件和控制文件.POST数据文件保存发送HTTP请求时的POST数据,而控制文件保存了执行结果的保存场所、访问Web怎么写作器的URL等数据.测试驱动程序根据生成的POST数据文件和控制文件向Web怎么写作器发送HTTP请求.之后,向FTP怎么写作器发送下载请求,把执行结果文件和日志文件下载到本地.

测试模板是具有固定格式的Excel文件.图2是一个测试模板的例子.图有5个测试用例,每个测试用例发送一个HTTP请求,但是传送给怎么写作器的数据是不同的.每个测试用例都要执行一次上述的测试流程.

基于模版的Web应用程序的自动测试参考属性评定
有关论文范文主题研究: 大学计算机类论文范文 大学生适用: 函授毕业论文、电大毕业论文
相关参考文献下载数量: 61 写作解决问题: 写作资料
毕业论文开题报告: 论文任务书、论文选题 职称论文适用: 核心期刊、高级职称
所属大学生专业类别: 写作资料 论文题目推荐度: 优质选题

参数文件生成程序在生成POST数据时,可以用两种方式保存:一种是名值对(参数名1等于值1&参数名2等于值2&等)的形式,另一种是XML形式.不管是以那种方式保存,测试驱动程序在发送HTTP请求时,都是把POST数据作为一个字符串发送给怎么写作器.

图2测试模板

2实现方法

测试模板使用EXCEL文件作成,参数文件生成程序使用VBA语言实现,而测试驱动程序使用Ja语言实现.

参数文件生成程序的功能是根据模板中定义的各种信息生成POST数据和控制文件.针对每个测试用例,其POST数据和下载的执行结果被保存在不同的目录.而无论POST数据是名值对的形式还是XML格式,测试驱动程序都是把其作为一个字符串传送给怎么写作器.测试驱动程序按照HTTP协议的规范直接把头部信息和POST数据传送给怎么写作器.主要实现代码如下所示:

bw等于newBufferedWriter(newOutputStreamWriter(sock.getOutputStream())),

bw.write("POST"+postURL+"HTTP/1.1"),

bw.newLine(),

bw.write("Host:"+reqURL+":"+Constants.HTTP_PORT),

bw.newLine(),

for(Iteratorit等于headerData.entrySet().iterator(),it.hasNext(),){

Map.Entryentry等于(Map.Entry)it.next(),Stringss等于(String)entry.getKey()+":"+(String)entry.getValue(),

bw.write(ss),

bw.newLine(),

}

bw.write("ContentLength:"+String.valueOf(contentLength)),

bw.newLine(),

bw.write("Connection:Close"),

bw.newLine(),

bw.newLine(),

//Writebody

bw.write(postData),

bw.flush(),