文档章节

一个网站自动化测试程序的设计与实现

FansUnion
 FansUnion
发布于 2015/05/03 01:25
字数 1085
阅读 17
收藏 1

CSDN博客不再经常更新,更多优质文章请来 粉丝联盟网 FansUnion.cn! (FansUnion)


代码

下载地址:http://download.csdn.net/detail/fansunion/5018357(免积分)
   
代码亮点:可读性很好,注释详尽

背景

       工作中,在维护一个项目。几个月前开始了 后台Java网站的重构。
  
重构的过程 需要不断去 运行网站,然后不断去测试。其中,最常见的

问题是 服务器内部错误 即 500错误。只要不出现500,一般来说,程序的业务不会出错。

      此外,期间还要不断地去 完成新的功能,修复出现的Bug,而后台Java网站具体开发人员几乎就我一个。

无限制的测试工作,重复且无聊。是可忍,孰不可忍?

目标
  
       写一个 自动化测试的程序。自动发送相关请求到网站,把请求的结果和执行时间等信息,作为报表展现出来。
 通过报表就可以发现,服务器内部错误(500),页面未找到错误(404),哪些请求相对比较耗时。
   
       重复的事情自动化,减轻工作“压力”,提高工作效率。
   
流程
      1.把项目中需要访问的URL 记录在配置文件中。
      2.读取配置文件。
      3.访问每个URL。
      4.生成报表并查看测试结果。

设计
  
   1.配置文件的设计
      conf文件下是所有的配置信息。
      每一个文件夹代表一个独立的网站,比如conf目录下 有 user和fans2个文件夹,就代表有2个网站需要分别访问测试。
 
      一个网站的配置信息,分为 website_core.properties和 website_url_*.properties。
  
 website_url_*.properties专门放置一个模块的url。
  
   2.读取配置文件
     自定义一个 配置文件读取器,读取并解析配置信息。
  
   3.发送请求并保存结果
     使用Apache HttpClient执行请求,然后保存每个请求的执行结果到 集合中。
  
   4.生成报表 
     ApachePOI 生成Excel2007(.xlsx)报表,每个sheet对应一个网站或者子系统。
实现
   语言:Java
   工具:Apache HttpClient,Apache POI

截图

    项目结构  

 
  

遇到的问题

1. 200 OK 不一定就 请求成功。

   服务器内部对每个请求都进行了Session检查,未登录或登录失败或未保持会话,都会跳转到“登录页面”,此时也是200 OK。
 
   因此,需要 先登录,并保存当前会话。

2. 保持会话的方法。
   登录成功后,获取Cookie信息,之后的请求每次都带上Cookie。
 
3. 根据执行的操作,一个链接可以分为2大类:

   查询与非查询(增加-删除-修改)。
  
   查询请求大多有默认参数,大多可以不带参数,而非查询请求一般需要带参数。
  
   因此,非查询请求并不能很好地进行测试。
    
V1.0不足与V1.1改进

1.需要手动配置 URL。当URL过多时,显得比较麻烦。
  改进:可以合并类似的或者有规律的URL。

2.不能很好地支持带参数的请求。
  改进:可以将请求参数和URL分开配置,一个URL对应多个参数配置。
 
3.请求方法使用POST方法。
  改进:增加请求方法的配置。

4.单线程顺序执行每个请求,效率不够高。
  开发过程中,可能需要尽快地执行请求,看到报表。
 
  改进:增加配置,实现2种模式。
  第1种,尽快执行,适合开发过程中。
  第2种,按照一定的周期执行,适合诊断和发现线上的问题。
 
5.报表信息不够详尽,还存在不准确的地方。
  改进:增加字段,改进不准确的地方。
        增加统计功能。

6.会话的保持。一个网站只有1个账号登录,之后的请求都在同一个会话中。
  改进:增加多个会话,作用域小的可以覆盖大的。
 
7.配置信息的验证不足。
  改进:待细化。

结束语
   代码重复是软件开发的大敌!
   测试重复又何尝不是呢?
   

致谢
   第1版问题多多,望海涵!
  
   谢谢阅读!欢迎交流!

 

© 著作权归作者所有

FansUnion
粉丝 60
博文 858
码字总数 825464
作品 0
丰台
高级程序员
私信 提问
网站测试自动化系统—系统应该有的功能

在前面几篇文章网站测试自动化系统—基于Selenium和VSTT、数据驱动测试、在测试代码中硬编码测试数据里,大概介绍了编写测试代码的过程。然而光把代码写完了是不够的,自动化测试不仅仅是将原...

技术小美
2017/11/12
0
0
简单的MVC就够了吗?浅谈service Layer的引入

MVC是web开发中常见的程序结构。 简单的mvc结构如下: view层:显示层。 control层:业务层,集合了各种action。 model层:模型层,一般和数据打交道。简单的sample:一个表对应一个model类。...

蜗牛奔跑
2015/11/23
93
0
【转载】自动化测试过程

提到测试,一般都认为是使用测试用例进行测试,而事实上,这只是完整测试过程中的一个步骤,测试活动其实是一个过程,如下图所示,是一系列的步骤,通过这些步骤实现测试活动,导致测试的执行...

chieei
2016/09/01
138
0
UI自动化测试的一些特点

虽然UI自动化是比较高成本的方式,但是很多时候也是功能测试的唯一选择。 · UI自动化测试不只是脚本,也需要设计 · 软件测试脚本的开发也是软件开发,脚本必须符合规范,必须经过设计编码测...

白一客
2017/05/11
197
0
《大型网站技术架构》——第二章 大型网站架构模式

分层 横向维度 上层对下层的依赖和调用 合理规划层次边界和接口 禁止跨层次的调用及逆向调用 分割 纵向切分 分布式 将不同模块部署在不同的服务器上,通过远程调用协同工作。 问题: 调用通过...

wsjtwmy
2018/12/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

SpringBoot中 集成 redisTemplate 对 Redis 的操作(二)

SpringBoot中 集成 redisTemplate 对 Redis 的操作(二) List 类型的操作 1、 向列表左侧添加数据 Long leftPush = redisTemplate.opsForList().leftPush("name", name); 2、 向列表右......

TcWong
今天
5
0
排序––快速排序(二)

根据排序––快速排序(一)的描述,现准备写一个快速排序的主体框架: 1、首先需要设置一个枢轴元素即setPivot(int i); 2、然后需要与枢轴元素进行比较即int comparePivot(int j); 3、最后...

FAT_mt
昨天
4
0
mysql概览

学习知识,首先要有一个总体的认识。以下为mysql概览 1-架构图 2-Detail csdn |简书 | 头条 | SegmentFault 思否 | 掘金 | 开源中国 |

程序员深夜写bug
昨天
10
0
golang微服务框架go-micro 入门笔记2.2 micro工具之微应用利器micro web

micro web micro 功能非常强大,本文将详细阐述micro web 命令行的功能 阅读本文前你可能需要进行如下知识储备 golang分布式微服务框架go-micro 入门笔记1:搭建go-micro环境, golang微服务框架...

非正式解决方案
昨天
8
0
前端——使用base64编码在页面嵌入图片

因为页面中插入一个图片都要写明图片的路径——相对路径或者绝对路径。而除了具体的网站图片的图片地址,如果是在自己电脑文件夹里的图片,当我们的HTML文件在别人电脑上打开的时候图片则由于...

被毒打的程序猿
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部