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版问题多多,望海涵!
  
   谢谢阅读!欢迎交流!

转载于:https://www.cnblogs.com/qitian1/archive/2013/01/21/6463790.html

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

  1. 如何建立一个网站?规划、设计、目的、原则、宣传(一)

    如何建立一个网站?规划.设计.目的.原则.宣传(一) 互联网站规划与设计 摘要 本文概述了互联网站的规划与设计的方法,介绍了网站设计规划的规范,及所需的关键技术,对电信系网站的构建作了系统分析,提出了 ...

  2. 如何建立一个网站?规划、设计、目的、原则、宣传(三)

    如何建立一个网站?规划.设计.目的.原则.宣传(三) 四.网站的设计制作   1.整体形象设计   在程序员进行详细设计的同时,网页设计师开始设计网站的整体形象和首页.   整体形象设计包括标准字,L ...

  3. 学习实践:使用模式,原则实现一个C++自动化测试程序

    个人编程中比较喜欢重构,重构能够提高自己的代码质量,使代码阅读起来也更清晰.但是重构有一个问题,就是如何保证重构后带代码实现的功能与重构前的一致,如果每次重构完成后,对此不闻不问,则会有极大的风险,如 ...

  4. 如何建立一个网站?规划、设计、目的、原则、宣传(转)

    互联网站规划与设计 摘要本文概述了互联网站的规划与设计的方法,介绍了网站设计规划的规范,及所需的关键技术,对电信系网站的构建作了系统分析,提出了总体设计方案和制作步骤,而且论述了构建网站过程中所遇到的 ...

  5. 第二章 第二节 使用Python IDLE编写你的第一个UI自动化测试程序

    相信上一节的环境搭建过程已经让不少新手感到非常繁琐,万事开头难,我们有必要花一点时间在环境的搭建配置上,因为环境的搭建是后面实施自动化测试的前提. 环境搭建好了,下面准备开始我们的第一个基于Pytho ...

  6. php如何设计一个网站,如何设计一个优质的外贸网站?

    如何设计一个优质的外贸网站? 随着搜索引擎的快速发展,搜索引擎和用户对网站用户体验要求越来越高.那么在当下如何简单快速搭建一个高质量的英文网站呢?接下来301SEO英文网站推广团队来和大家一起探讨下: ...

  7. 在网页设计中,引导页是所有页面中的重中之重,引导浏览者很快进入各栏目页面,是一个网站的灵魂所在。

    在网页设计中,引导页是所有页面中的重中之重,引导浏览者很快进入各栏目页面,是一个网站的灵魂所在.

  8. HTML+CSS:设计一个网站登录页面 学起来很简单

    hello,大家好,我是wangzirui32,今天我们来学习如何设计一个网站登录页面. 开始学习吧! 1. 项目架构 demo/login.html 网页文件backgrond.png 登录背景图片 ...

  9. 制作一个简单HTML电影网页设计(HTML+CSS)---电影主题网站 6页带

    ⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材,DIV+CSS 布局制作,HTML+CSS网页设计期末课程大作业 | 摄影作品 | 影视设计网页 | 在线电影 | 视频音频元素 | ...

最新文章

  1. 专访 | 英特尔收购Nervana后的第一张王牌Lake Crest,号称比GPU速度快10倍,年底测试
  2. linux撤销以硬件时钟作为UTC,linux时钟基本概念、CST与UTC、以及NTP简单设置
  3. python在excel中的应用-Python利用pandas处理Excel数据的应用详解
  4. 新书发布《每天5分钟玩转Docker容器技术》
  5. 数据库日常总结(笛卡儿积与笛卡儿集 )
  6. k8s通过label来控制pod的位置
  7. 洛谷 P1821 [USACO07FEB]银牛派对Silver Cow Party
  8. Go Time常用语法
  9. 黑马Java学习笔记之-----集合框架
  10. ECCV 2020 论文大盘点-图像与视频分割篇
  11. java接口构造函数_Java8自定义函数式编程接口和便捷的引用类的构造器及方法
  12. linux下opengl开发环境,Ubuntu 16.04 OpenGL 开发环境配置指南
  13. Linux上配置jupyter的步骤及与本地映射
  14. C++函数与java函数菜鸟级的对比理解
  15. JNI 调用 DLL
  16. 【kali-漏洞扫描】(2.1)Nessus下载安装(上)
  17. Python-支持向量机 决策边界 最大化margin、使用多项式特征和核函数、高斯核函数、超参数 γ、SVM解决回归问题
  18. SAP 采购定价日期控制
  19. 有钱人的心肠更硬吗?
  20. adobe air linux centos,Adobe AIR(跨平台应用)

热门文章

  1. Thymeleaf th:include、th:replace使用
  2. 【算法】 - 滑动窗口
  3. javascript --- 使用ajax与服务器进行通信
  4. ES5-17/18 错误信息、try_catch、严格模式
  5. node项目正常启动后不能访问(防火墙未放行端口)
  6. Viewpager无限循环(首页与尾页平滑过渡)
  7. 如何使用CSS实现居中
  8. Android的debug.keystore拒绝访问导致的生成异常及解决方案
  9. 使用file做swap分区
  10. 工业无线遥控器 SUNRF-1011RC