1 为什么设计自动化测试架构

1.1 企业现状分析

  • 压力大:产品需求不明确,上线时间确定,压力山大。
  • 混乱:未立项,开发时间已过半,前期无控制,后期无保障。
  • 疲于应付:开发人员交付的文件质量差,测试跟着做集成,上线交付质量无底线。
  • 遗漏率高:为什么 Bug 测试不出来,在用户使用中或在合作伙伴那里反而被测试出 来 Bug。

1.2 提高测试效率的疑问

  • 如何在短时间和资源不足的情况下,尽可能测试出多的 Bug?
  • 如何减少重复工作的工作量?
  • 如何更好地对组员的测试质量进行监控?
  • 测试文档很多,如何保证测试文档的质量?
  • 如何衡量测试的效率,及人员绩效考核?
  • 如何改进测试过程?

测试效率低下的主要原因:

2 认识自动化测试

2.1 明确几点问题

  • 自动化测试永远不可能完全替代手工测试。
  • 手工测试发现的缺陷远比自动化多。
  • 项目周期长、需求变更少且不存在大量不可识别的第三方控件可以进行自动化测试设计。
  • 对可靠性和性能测试要求高以及反复进行的测试,建议使用自动化。

2.2 什么是自动化测试

  • 需要工具,但不应仅仅是测试工具
  • 软件控制,做实际结果与预期结果的比较
  • 可重复性,且有必要的测试流程可以自动化
  • 手工测试难以达到的要点

 狭义来讲,自动化测试指的是基于GUI的自动化测试,自动化测试是一种自动测试思想,应该包括工具、方法、规程和沟通等内容,是测试工程师手的延伸。

2.3 自动化测试框架具备的要素

测试体系与测试平台整合:

测试用例标准化整合:

回归测试自动化执行:

最终目标:

自动化测试平台最终图谱:

3 自动化测试的设计模式

  自动化测试模型主要包括几个阶段:线性测试、模块驱动测试、数据驱动测试、关键字驱动测试.

数据驱动测试与关键字驱动测试的区别:

  数据驱动原理:数据与脚本分离,实现了参数化,通过数据的改变引起测试结果的改变。数据驱动从数据文件读取输入数据,通过变量的参数化将测试数据传入测试脚本,不同的数据文件对应不同的测试用例,数据和脚本分离。数据来控制测试的业务流。

  关键字驱动原理:关键字与脚本分离,通过关键字的改变引起测试的改变 。关键字驱动将测试逻辑按照关键字进行分解,关键字对应封装的逻辑业务。主要关键字包括三类:被操作对象(Item)、操作(operation)和值(value),利用面向对象的方式可以将其表现为Item.Operation(value)。

自动化测试模型阶段依次如下:

4 自动化测试的实施策略

  • 推动开发人员实施单元测试
  • 接口层尽量进行自动化全量测试,关键字模式实现
  • 在UI测试时,使用数据驱动设计模式,解决重复步骤繁琐测试难题
  • UI层在需求稳定的时期,在进行实施,主要回归主要流为主
  • 在线监控:引入自动化脚本监控生成系统的业务流程
  • 抽调精兵强将(编程能力强),针对业务系统那个设计测试框架,实现测试人员不需要写代码,也可以实现自动化
  • 小项目开始逐步推广,初期不要太高期望,有效衡量投入产出比,获得中高层的支持。

5 自动化持续集成测试实战

持续集成(Continuous Integration,CI),是一种软件开发自动化实战。

5.1 自动化持续集成测试任务的提出

自动化持续集成测试任务的提出,主要包括3个部分:任务目标、工具准备、环境说明。

任务目标:

  • 研发用 GIT 提交代码到 Gitlab 服务器。
  • Jenkins 检测到 Gitlab 上有代码更新,自动触发测试。
  • 禅道检测到 Gitlab 上有代码更新,自动将 Bug 状态改为已解决。
  • 测试通过,将代码打包并部署到外部 Tomcat 中。
  • 测试未通过,自动发邮件给相关负责人。
  • 精准测试 ThreadingTest 进行测试实施与回归测试任务。

工具准备:

环境说明:

5.2 服务器集群搭建

服务器集群搭建:gitlab服务搭建、禅道服务搭建。

6 单元测试框架

  单元测试:测试类、方法或者函数

  单元测试框架可以完成的测试类型:

    1、单元测试

    2、UI自动化测试

    3、接口自动化测试

文件级别setup方法:当前文件第一个测试开始之前只执行一次。

  多个测试类:

    测试类A:

      类setup方法:在当前类中的第一个测试方法调用前执行,只执行一次。

        setup方法:在执行测试方法前的一些环境或者数据相关的准备

        测试的方法:每个测试方法执行前,都会执行setup方法,执行后执行teardown方法。

        teardown方法:在执行测试方法前的一些环境或者数据相关的清理

      类teardown方法:在当前类的最后一个测试方法调用完成后,只执行一次。

文件级别teardown方法:所有的测试结束之后只执行一次。

自动化测试架构设计 &&自动化持续集成测试任务实战[线性测试、模块驱动测试、数据驱动测试、关键字驱动测试]的更多相关文章

  1. Selenium自动化测试Python六:持续集成

    持续集成 欢迎阅读WebDriver持续集成讲义.本篇讲义将会重点介绍Selenium WebDriver API的在持续集成中的使用方法,以及使用Jenkins持续集成工具进行自动化测试的设计. 持 ...

  2. 自动化持续集成Jenkins

    自动化持续集成Jenkins 使用Jenkins配置自动化构建http://blog.csdn.net/littlechang/article/details/8642149 Jenkins入门总结h ...

  3. Java生鲜电商平台-秒杀系统微服务架构设计与源码解析实战

    Java生鲜电商平台-秒杀系统微服务架构设计与源码解析实战 Java生鲜电商平台-  什么是秒杀 通俗一点讲就是网络商家为促销等目的组织的网上限时抢购活动 比如说京东秒杀,就是一种定时定量秒杀,在规定 ...

  4. Jenkins持续集成企业实战

    阅读目录: Jenkins持续集成企业实战1.1 目前主流网站部署的流程1.2 Jenkins持续集成简介1.3 Jenkins持续集成组件1.4 Jenkins平台安装部署1.5 Jenkins相关 ...

  5. flow.ci + Github + Slack 一步步搭建 Python 自动化持续集成

    理想的程序员必须懒惰,永远追随自动化法则.Automating shapes smarter future. 在一个 Python 项目的开发过程中可能会做的事情:编译.手动或自动化测试.部署环境配置 ...

  6. Jmeter(二十八)_Docker+Jmeter+Gitlab+Jenkins+Ant(容器化的接口自动化持续集成平台)

    这套接口自动化持续集成环境已经部署差不多了,现在说说我的设计思路 1:利用Docker容器化Gitlab,Jenkins,Jmeter,Ant,链接如下 Docker_容器化gitlab Docker ...

  7. Jenkins持续集成企业实战系列之两种网站部署的流程-----01

    注:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.    最初接触Jenkins也是由于公司需求,根据公司需求Java代码项目升级的.(公司是 ...

  8. docker+headless+robotframework+jenkins实现web自动化持续集成

    在Docker环境使headless实现web自动化持续集成 一.制作镜像 原则:自动化测试基于基础制作镜像 命令:docker run --privileged --name=$1 --net=ho ...

  9. 基于 flow.ci 实现 PHP 项目自动化持续集成

    高效程序员的习惯之一--让开发流程自动化.Automating shapes smarter future. 这是一个关于如何快速实现 PHP 项目自动化持续集成的快速指导.无论你是否使用过持续集成, ...

随机推荐

  1. CVE-2020-0769逆向分析

    受影响版本: 系统 版本 Microsoft Windows 10 Windows 10 1607 Windows 10 1709 Windows 10 1803 Windows 10 1809 Wi ...

  2. c++实现split

    #include<iostream> #include<vector> #include<algorithm> #include<string> usi ...

  3. 接口自动化测试:apiAutoTest使用re 处理数据依赖

    目录 废话 2020/11/19 参数依赖 更新后的效果 新版依赖数据如何使用 源码地址 道谢 废话 目前在工作中写脚本的时候发现了一些之前开源的apiAutoTest的可优化项,后面应该也是会慢慢的 ...

  4. DB2 建表,添加字段,删除字段,修改字段等常用操作

    转载:http://blog.sina.com.cn/s/blog_67aaf4440100v01p.html,稍作修改. --创建数据库 create database Etp; --连接数据库 c ...

  5. 在Service中创建全局Dialog对话框

    需要使用到悬浮窗权限 val builder: AlertDialog.Builder = AlertDialog.Builder(this)builder.setMessage("from ...

  6. oracle 11.2.0.4静默安装

    oracle 11.2.0.4静默安装 1.安装包 1.1.上传安装包 xshell可用rz命令,选择安装包. mobaxterm可用左侧栏上传功能. 2.安装准备 2.1.关闭防火墙.SELinux ...

  7. 讲武德,你们要的高性能日志工具 Log4j2,来了

    Log4j 介绍过了,SLF4J 介绍过了,Logback 也介绍过了,你以为日志系列的文章就到此终结了? 不不不,我告诉你,还有一个 Log4j 2,顾名思义,它就是 Log4j 的升级版,就好像手 ...

  8. Metasploit渗透使用攻略

    msf关于tomcat口令暴力猜解模块 use auxiliary/scanner/http/tomcat_mgr_login show options set rhosts 192.168.2.14 ...

  9. 启动时出现错误:*** Warning - bad CRC or NAND

    前面转自:https://www.cnblogs.com/java20130726/archive/2012/06/15/3218570.html 在对NAND Flash烧写了bootstrap和U ...

  10. 和功能相近的虚拟机软件相比,CrossOver的产品优势有哪些?

    很多用户其实并不喜欢虚拟机软件,他们只是想用回熟悉的Windows应用程序,因为苹果系统与许多软件并不兼容.无奈之下,他们只能安装虚拟机软件.可是虚拟机软件大多比较笨重并且也相对复杂一些,在后期维护上 ...