自动化理论基础(上)

入行测试大约两个月了,目前一直是纯手工测试,手工写用例、手工测试,每天重复性的做着一些工作,觉得甚是没劲,且超级没有安全感,自己的可替代性太强了,随便一个人都可以做我现在的工作。为了让自己变得更有价值,所以决心开始学习自动化测试。目前主要看一些网上的公开课视频,觉得吴老的公开课做的挺不错的,可以学习一下,因为PPT不分享,所以就将视频整理成文字版跟大家一起分享下。

《自动化理论基础(上)》,一个半小时的视频,word整理了6页左右。

一、需要的基本知识

  • HTML
  • CSS
  • Javascript
  • 熟悉Java、python、.Net、ruby其中的一种
  • MySQL的基本SQL知识
  • Junit的基本使用方法

二、需要用到的工具包和工具

  • 浏览器:
  1. IE
  2. FireFox
  3. Chrome
  4. Safari
  • Selenium browser drivers:
  1. Chrome Driver
  2. Internet Explorer Driver

  三、需要用到的工具包和工具

  • 开发工具:Eclipse(Java)

BDD(Behavior DrivenDevelopment,行为驱动开发)框架工具:Cucumber-JVM

TDD(Test Driven Development,测试驱动开发):TDD的原理是在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码。TDD的基本思路就是通过测试来推动整个开发的进行,但测试驱动开发并不只是单纯的测试工作,而是把需求分析,设计,质量控制量化的过程。

敏捷开发:敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。(小步快跑的模式,只考虑自己本身的需求,其它需求不考虑;强调快速反馈,每天有早会,完成当天的开发和测试)

敏捷测试:

敏捷开发效率很高,也很累!

  • 构建和集成工具:

-Maven(构建)

-ANT(构建)

-Jenkins(持续集成)

持续集成:团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。

  • 其它工具(了解):

-AutoIt:操作windows上的一些控件和元素(如上传文件时的文件框)

-Sikuli:基于图像做自动化测试

  • 视频捕获工具:

-Monte MediaLibrary

四、测试的分层和收益(三层模型)

自动化分为三层:单元测试、接口和组件测试及UI测试。单元测试收益最高,接口和组件测试其次,UI测试最低。

图 1 自动化测试三层模型

单元测试收益最高的原因:基于最小的代码模块进行测试的话很容易定位问题,但是目前大多数公司的情况都是没有进行单元测试的,因为项目周期及存活等问题,目前大部分是由开发人员来做。

HP的一位姐们说曾与澳大利亚的开发人员聊到某一产品,开发人员说对这个产品不是太熟悉,只不过才开发了十年而已。中国有几个产品是开发十年的?十年的时间可能公司名都换好几个了。

接口和组件测试:做了一层封装,把各种代码组合封装为一个功能,他的定位和分析会变得较为困难。

UI测试:成本高,收益小。但是也很重要,是完全根据用户的体验和需求来进行的。

  五、业内成功公司的标杆公司:

  • Google测试和开发的人数比是10:1
  • Facebook的测试和开发比是0

Facebook的开发工程师一个人支持100W用户。为何没有测试?1.Facebook开发工程师是绝对的大牛,Facebook需要面试大量的开发工程师才会招聘一个,而且面试流程非常复杂、严谨;2.做大量的单元测试来保证庞大规模代码的产品质量

纯手工测试人员如何提高自己?

像开发人员一样去学习开发。

有人就是因为不想写代码才去做测试,其实这种想法是不合适的,高级测试经理级别的测试人员一般是不仅有开发的技术,而且还有很多测试的要求。

六、目前流行的研发流程-敏捷开发

  • 小版本发布,小步快跑
  • 持续集成,每天构建版本
  • 自动化测试主要版本逻辑,随时发现改动造成的新问题和影响
  • 结对编程:两个人共同写一段代码,可以是一个人写一个人看,也可以各写一部分,然后合在一起。
  • 重构:功能不变,代码重写
  • 鼓励沟通,减少文档的重要性
  • 测试驱动开发

七、Web自动化测试的基本原理

自动化:把手动测试替换为程序执行

图 2 Web自动化测试基本原理

八、自动化测试的类型

单元测试-执行速度最快1-10ms

接口测试-执行速度较快20ms-2s

UI测试-执行速度最慢 打开浏览器即需要3s,加上其它的时间就更长了

九、什么需要自动化

  • 不是所有的功能都需要自动化--如:模拟断网的情况
  • Gui测试自动化的秘密-执行自动化测试只会发现很少的Bug

自动化测试是为了发现更多的Bug吗?不是的,自动化测试是为了验证原有的功能可以正常执行。

  • 执行自动化回归测试来验证系统状态,不是用来找出很多Bug的
  • 执行自动化测试可以让我们抽出时间做更多的手工测试并发现缺陷
  • 编写自动化测试过程会帮助发现大部分的bug,发现后要及时记录

十、使用自动化的一些典型场景

  • 验证原有功能是否依旧可以使用,适合进行大量回归测试的场景
  • 使用自动化测试技术注入测试数据
  • 敏捷开发的TDD模式,行为驱动开发模式
  • 机械并频繁的测试。每次需要输入相同、大量的一些数据,并且在一个项目中运行的周期比较长
  • 做业务运行状态监控

 十一、自动化实践的一些建议

  • 从上到下的支持和协作
  • 先找小的项目进行试点
  • 测试人员需要有较强的编程能力和设计能力
  • 开发需要不断提高软件的可测试性
  • 多鼓励单元测试、接口测试
  • UI测试使用并行测试方式提高执行速度

UI自动化的一些建议

  • 需要根据自己的测试业务类型,量身定做适合自己的测试框架
  • 让不懂开发的测试人员也能使用测试框架来进行自动化测试
  • 使用分层的结构来设计框架
  • 使用截屏技术提高一些测试效率
  • 不断积累自动化测试技术,对开发提可测试性的要求

十二、自动化测试实施失败的因素

1.期望值过高。就像管理人员要求完全测试一样,期望100%的测试自动化,也同样是一个不现实的需求。

图 3 功能覆盖率与成本关系

2.对收益和成本认识不清。抛开工具的购买成本和培训成本,自动化测试的成本应该还包括两部分(实现成本中还隐含了测试准备成本):

成本=实现成本+运行维护成本

3.自动化测试的收益是由测试脚本的重复运行次数,或自动测试脚本的利用率决定的。

  十三、什么时候开始实施自动化

开发阶段?-->稳定阶段?-->部署阶段?

图 4 不要在不适宜的时机进行自动化测试

建议:可预见的需求不影响自动化测试用例的设计

十四、如何实施自动化测试?

单纯的讲,自动化测试的具体实现,应该是包含下面七个过程。

1.获取信息和测试需求分析:总体把握系统架构和设计,分析出系统的测试需求。

2.设计:设计测试用例,并且挑选出需要自动化实现的测试用例。

3.实现:编写、调试和实现测试脚本。

4.执行:执行脚本的过程,需要不断分析执行过程中的异常。

5.测试结果分析:分析哪些是Bug,哪些是测试框架本身的问题。

6.维护:自动化测试脚本的维护是一个难以解决但又必须要解决的问题。

7.总结:在自动化测试过程中总结自动化实践的投入产出比。

十五、软件自动化测试的成本投入

1.脚本的维护成本:

-自动化的脚本维护使得我们的自动化测试在成本上变得较为昂贵

-每一个系统的开发都是时刻随着需求的变更而改变,然而在大多数的情况下,就是很微小的一点系统修改都会导致我们去大量的修改自动化的测试脚本。

2.要维护的因素:测试用例、测试脚本、测试数据、测试结果、自动化的成本分析

3.维护难点:各因素的不确定性、脚本的版本要和软件build号相对应

4.测试服务器

5.人工成本

6.培训相关费用

7.时间成本

十六、自动化测试的术语-数据驱动

基于数据驱动的自动化测试框架是指测试驱动引擎从数据源获取测试数据,然后将数据以参数的形式传递给测试脚本,最后通过执行测试脚本,验证测试结果,并将测试结果输出。

一般数据源与测试结果存储在Excel文件、Csv文件等。

数据驱动的主要优点是:

--测试脚本与测试数据的分离

--当应用功能变更时,只需要修改该功能部分的脚本

--执行测试用例的人员不需要了解测试脚本的实现,只关注测试数据表与测试报告表。而且测试脚本的执行是离散的,即非线性的,测试人员可以有选择的执行测试用例。

  十七、自动化测试的术语-关键字驱动

关键字驱动(keyword_driven)的自动化测试:

--关键字驱动测试是数据驱动测试的一种改进类型,它将测试逻辑按照关键字进行分解,形成数据文件,关键字对应封装的业务逻辑。

--主要关键字包括三类:被操作对象(Item)、操作(Operations)和值(value),用面向对象形式可将其表现为Item.Operation(value)

--关键字驱动的主要思想是:脚本与数据分离、界面元素名与测试内部对象名分离、测试描述与具体实现细节分离。

十八、自动化测试框架的一些目标

  • 高复用性
  • 高可维护性
  • 稳定性
  • 快速编写脚本
  • 自动执行
  • 正确输出结果
  • 能够不断提升自动化测试比例
时间: 2024-10-28 22:08:37

自动化理论基础(上)的相关文章

Puppeteer自动化批量上传抖音视频

前言:最近因为项目宣传,所以用Puppeteer写了一个批量上传抖音视频的自动化程序用于推广. 环境和依赖:node,puppeteer 废话不多说,直接上代码: const puppeteer =require('puppeteer'); const fs = require('fs'); var arry=[]; fs.readdir('video',function(err,files){ if(err){ console.log(err); } else{ (function getfi

appium+python自动化60-windows上同时启动多个appium服务,让多个android机器并行运行

前言 做android自动化的时候,启动一个appium服务,只能匹配一个手机去自动化执行.有时候想同一套代码,可以在不同的手机上执行,测下app在不同手机上兼容性. 这就需要启动多个appium服务了,并且android设备和appium要一一对应才行. 启动多个手机 1.这里以夜神模拟器和雷电模拟器为例,先启动这2个设备 2.adb devices查看设备名称,多个设备会显示多行数据 启动多个appium服务 1.启动appium服务,可以用命令行模式,在cmd里面启动,可以参考上一篇 ap

selenium2 python自动化测试之利用AutoIt工具实现本地文件上传

本人在学习基于python语言的selenium2自动测试方法的过程中,发现涉及本地上传文件的测试时,selenium2在定位本地window窗口的对象(元素)上能力有限.当上传按钮使用的是input标签时,可以使用send_keys()方法添加本地文件路径轻松实现,但有的上传控件使用的不是input元素,这个时候send_keys()方法是行不通的.经过网上搜索加上自己实践,总结出一个非常简单而有效的方法--借用AutoIt工具实现自动化本地上传文件,在此与大家分享. 1.AutoIt介绍及安

[运维] 第三篇:漫谈数据中心运维自动化

运维自动化是从2010年以后起来的一个运维需求,10年之前,运维项目主要集中在监控和ITIL流程上,当时也有BMC Control-M等产品在推,但是客户接受程度和影响力不如监控和流程.10年之后,运维自动化提上日程,建行开始招运维自动化的标,IBM.BMC.HP都纷纷参与,测了三轮,最后HP opsware中标,只能说一句厉害!工商银行也在自己组织服务商做自己特色的运维自动化平台,做了3.4年,基本成型,服务商也做出了自己的运维自动化产品,正式推向市场.当时运维自动化的主要功能是五项:自动化巡

18页PPT带你深度解读运维自动化【转】

来自地址:[http://www.opsers.org/tech/18-pages-ppt-show-you-depth-interpretation-operations-automation.html] 说实话,一个运维团队的运维能力如何,其实看一个自动化管理系统便知! ********文章较长,索引目录如下******* 一.概述 二.运维自动化的三重境界 三.运维自动化的多维解读 ******第一.基于应用变更场景的维度划分 ******第二.基于系统层次的维度划分 ******第三.基

[转载] On Designing and Deploying Internet-Scale Services(译)-上

原文: http://duanple.blog.163.com/blog/static/70971767201352105348729/ 大规模服务的部署和管理是非常复杂的, 作者结合自身经验总结了一些最佳实践. 作者经验非常丰富, 很多东西虽然只给了一些描述, 有的甚至还不太能够理解, 希望通过这篇文章慢慢体会 作者:James Hamilton – Windows Live Services Platform 2007 原文:http://www.mvdirona.com/jrh/Talks

利用Azure Automation实现云端自动化运维(1)

Azure Automation是Azure上的一个自动化工作流引擎,基于Powershell,来帮助用户简化,集成和自动化Azure上的运维工作,例如: 实现定时开关虚拟机,节约成本 实现定时创建删除HDInsight cluster执行大数据计算任务 定时备份虚拟机上的数据库 定时归档或者删除无用的日志文件 自动化部署或者更新应用 等等 微软实际上有3个基于runbook的工作流引擎,用来完成不同的自动化工作: Azure automation用来自动化云端Azure环境中的各项任务,也是基

Appium+python自动化

名称 链接地址 Appium+python自动化8-Appium Python API(上) http://mp.weixin.qq.com/s/WvpT5oRrYY22avI95FuypQ Appium+python自动化8-Appium Python API(下) http://mp.weixin.qq.com/s/rGWWf9m9-6n-J7KaGVlqoA Appium+python自动化9-SDK Manager http://mp.weixin.qq.com/s/wGyfXAwJ9M

appium+python自动化50-生成定位对象模板templet(jinja2)

前言 每次自己写pageobject定位元素对象太繁琐,格式都差不多,只是换个定位方法,这种就可以才有模板的方式,批量生成pageobject定位元素对象的模板 python里面生成模板有两个模块可以选择:templet和mako 简单来说,本篇实现的目的是用代码去自动生成代码,做到代码自动化 接着上一篇讲:appium+python自动化49-yaml管理定位元素 jinja2简介 1.jinja2官方文档:官方文档 要了解jinja2,那么需要先理解模板的概念.模板在Python的web开发