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. C语言中宏的作用

    在C语言#define机制中包括了一个规定,与允许把参数替换到文本中,这种实现通常称为宏或宏定义.下面是宏的声明方式: #define      name(parameter-list)       ...

  2. 内网渗透 day5-msf本地提权(windows)

    msf本地提权 目录 1. 利用uac提权 1 2. 绕过uac认证 2 3. 利用windows本地提权漏洞进行提权 4 1. 利用uac提权 前提与目标机建立会话连接 seach local/as ...

  3. SpringBoot进阶教程(六十四)注解大全

    在Spring1.x时代,还没出现注解,需要大量xml配置文件并在内部编写大量bean标签.Java5推出新特性annotation,为spring的更新奠定了基础.从Spring 2.X开始spri ...

  4. 看看poll 事件掩码 --- review代码时发现掩码不分的错误

    事件 描述 是否可作为输入(events) 是否可作为输出(revents) POLLIN 数据可读(包括普通数据&优先数据) 是 是 POLLOUT 数据可写(普通数据&优先数据) ...

  5. python-网络安全编程第十天(web目录扫描&&fake_useragent模块&&optionParser模块)

    前言 昨天的内容没有完成今天花了点时间继续完成了 感觉自己的学习效率太低了!想办法提高学习效率吧 嗯 ,再制定下今天的目标 开始健身. python fake_useragent模块 1.UserAg ...

  6. 新鲜出炉!阿里Java后端面经,已拿offer!

    前面给大家分享了一篇字节跳动拿下offer的面经,很多小伙伴都私信我说收获很大,感兴趣的朋友可以回头去看看.很多小伙伴还问我有没有其他大厂的面试题分享,这不他来啦,阿里2020春招面试题给大家整理在下 ...

  7. 关于oracle11g 和sqldeverloper的安装配置

    0友情提示:以下下载地址都是我的百度云分享链接安全无毒请放心下载! 电脑配置 win10 jdk版本1.7 下载oracle11G 版本 下载地址:安装很简单 sqldverloper(oracleD ...

  8. 在FL Studio中通过Key Tracking来改善声音

    FL Studio中的关键点跟踪(Key Tracking),是一种为MIDI添加更多动态效果的便利工具,在FL Studio中通过使用这个插件能力,我们无需担心自动化或手动调整参数等比较麻烦的问题. ...

  9. Windows/Linux 代码共享,开发者称此举使Linux有了更差的结局

    英特尔近期披露了 Linux 图形驱动程序相关的一些细节并指出,英特尔的图形驱动程序现在已在 Windows/Linux 之间共享约 60% 的代码库,90~100% 的性能. 针对此事,红帽公司的高 ...

  10. NameServer路由删除

    NameServer会每隔10s扫描brokerLiveTable状态表,如果BrokerLive的lastUpdateTimestamp的时间戳距当前时间超过120s,则认为Broker失效,移除改 ...