目前自动化测试并不属于新鲜的事物,或者说自动化测试的各种方法论已经层出不穷,但是,能够明白自动化测试并很好落地实施的团队还不是非常多,我们接下来用通俗的方式来介绍自动化测试……

首先我们从招聘岗位需求说起。看近期的职业机会,提到“软件测试工程师”,基本上都有关于自动化测试的要求。例如:

了解 selenium、appium或者其他自动化测试框架

至少熟悉一门面向对象开发语言,有一定的代码功底优先

熟悉Java或者python,有一定的测试自动化经验和代码阅读能力

了解接口集成测试,会使用JMeter、Postman、SoapUI等接口测试工具

等等,上述内容不再一一列举。突然自动化测试遍地开花,好像测试工程师的自动化测试能力成为了标配一般。

下面我就从自动化测试的要求入手,简单的进行自动化测试扫盲,争取让各位在一分钟之内了解自动化测试。

那么我们就从“自动化测试”五个字来剖析。

测试

测试:这个我们熟悉。最经典的一个解释“程序测试是为了发现错误而执行的过程。”这个来自于G.J.Myers的经典著作《软件测试的艺术》的定义,给我们展示了测试的本质:过程。

测试是为了发现软件的错误,而执行的过程,这个过程可以是以下内容:

运行被测试的软件,执行软件的功能

运行其他工具,去检查软件的内部和外部

总而言之,是一个过程,执行的过程。接下来就一张最常见的测试示意图:

把软件的所有功能遍历一遍,该测试工程师通过鼠标、键盘、麦克风、手机屏幕触控等,把软件所有的功能,全部遍历了,这个叫做什么?熟悉测试的童鞋明白,这就是传说的“手工目测”呀,这是“人肉测试”。

我们好好的画这张图,实际上是这样的。

自动化

到这里,结合上面的说法,自动化测试就是让被测试的软件自己运行起来,执行软件的功能;或者就是让其他的工具自己运行起来,去检查软件的内部和外部。

既然测试是一个过程,那么自动化测试,就是自动的执行的过程。

接下来我们探讨的一个核心的问题:自动。什么叫做自动呢?让机器自己动,就是自动。让机器按照人类的要求,把软件的所有功能遍历一遍,这是自动化。。这样说会不会清晰一点?

重点来了,机器。让机器去动,这可不是“吃鸡”哦,这是人类命令机器去操作。不知道童鞋们有没有思考过,机器怎么知道人类的要求?上面的例子,测试主管只要告诉测试工程师,命令传达就完成了。可是人类直接的沟通,远比人机沟通容易啊。

首先,机器听不懂“人话”,无论中文,英文……

其次,机器默认会的“汇编语言”,应该是绝大部分的童鞋不会,并且短期掌握不来吧。

好吧,用“编程语言”。是时候拿出我们的另一张图了:

机器学习一个编程语言,轻松和简单到令人发指的地步:安装上去,机器就学会了。好在人类学习编程语言也不是特别难的的事情。看来这个可行。

有了编程语言,就有了人机交流的桥梁,剩下的事情,是帮机器挑选工具。做对应的测试,就需要找到对应的工具,这样自动化就自动起来了。能到这里,我希望各位童鞋了解了基本的“自动”原理。

同样,好好的画这张自动化测试的示意图:

然后我们介绍各种常见的工具,来继续讨论自动化测试。进一步探讨之前,我们先看看测试的常用分类。这里不同的分类维度下,我们可以分为不同的测试,这里我们认真分析一下。

从软件测试的实践过程看:单元测试、集成测试、确认测试、系统测试、验收测试……

从软件测试的方法策略看:白盒测试、黑盒测试、灰盒测试……

从软件测试的测试视角看:功能测试、性能测试、兼容性测试、安全测试、探索性测试……

从软件测试的技术程度看:手工测试、自动化测试、测试开发……

以上这些维度下的分类,只有一部分测试可以通过“人肉测试”的“手工目测”完成,剩下的其实从广义概念上,都是需要机器来完成的。我们把这一部分测试抽取出来:系统测试-黑盒测试-功能测试-手工测试。不可否认的讲,这条线是目前软件测试从业者的重点覆盖范围,该范围之外的地方,便是自动化测试的用武之地。

自动化测试

接下来我们探讨一下主流的自动化测试方案,无一例外,都有人机沟通的编程语言,加上机器操作的工具来组成。

功能自动化测试

VBScript + QTP(HP UFT),商用功能自动化测试方案

Python/PHP/Java/C#/JavaScprit/Ruby + Selenium/Appium +

单元测试框架,开源功能自动化测试方案

这里我们多介绍一点,Selenium/Appium

本身不能算是测试工具,而只是机器用来操作浏览器的工具,并且这个工具能听懂多种语言:

语言

Python,Ruby 这两个脚本轻语言

PHP,JavaScript 这两个专门处理 Web 的语言

工具外加指定的语言,可以让机器来操作浏览器,但是到此时还无法做到测试,于是才需要每个语言自己的单元测试框架,来一起完成这个功能自动化测试方案的构建。此外,业界还一种暂时临时的方案,就是

Python 2 + Robot Framework + Selenium Library 插件 + 单元测试框架

构成的一种测试方案,这个方案笔者不是非常推荐,主要基于两点:

理念:这是一种基于关键字的方案,那么关键字是 QTP(HP UFT)的特长,并不是Selenium的本意

技术:Python 2 终究是要退出历史舞台的,如果从零开始做自动化测试,还是直接入手 Python 3 吧,然而 Robot

Framework 不支持 Python 3……

Python/Java/C#/JavaScprit/Ruby + Gauge,又一款开源的功能自动化测试方案

Thoughtworks 的基于BDD理念的自动化测试工具

Gauge 本身就是完整的测试方案

Gauge 是从需求分析师(BA)到测试工程师(QA)都覆盖的测试方案

Java/Python + Macaca,阿里巴巴的功能自动化测试方案,缺点是文档少

JavaScript + TestCafe,DevExpress 的开源功能自动化测试方案

pure node.js - TestCafe不使用Selenium,并且不需要插件来在实际浏览器中运行测试。

它建立在node.js的顶部,因此它与现代开发工具集成和工作良好

无需额外的设置或配置- TestCafe是所有设置后立即运行测试npm install

完整的测试工具 - 使用单个启动命令,TestCafe启动浏览器,运行测试,收集结果并生成报告

JavaScript + Postman,免费的Web接口功能自动化测试方案

Groovy + SoapUI,开源的Web接口功能自动化测试方案

性能自动化测试

Java/C + HP LoadRunner,商业版性能测试方案

Java + JMeter,开源版性能测试方案

Python + locust,开源版性能测试方案

这里,我们借用一张别人的图,Martin Fowler,敏捷开发方法的创始人之一,他借用金字塔的概念来展示测试的层次。

事实上,自动化测试覆盖了从UI(功能测试)到契约(接口测试)以及底层代码方法(单元测试)的整个过程,要想很好的掌握自动化测试,那么的确需要以下三种领域的经验积累:

编程语言,面向对象编程优先,因为大量的开源技术方案,都是基于面向对象的编程方式

第三方测试工具和测试框架,这些主要通过官网的文档学习

测试的理念与设计,工具和语言,只是测试的手段,如何准备测试数据,如何设置测试的检查点与测试步骤,这些决定了测试的成败

此外综合的前端与服务器后端技术,是测试执行的保障。加油吧童鞋们,那么你现在了解到自动化测试了么?

欢迎加入

51软件测试大家庭,在这里你将获得【最新行业资讯】,【免费测试工具安装包】,【软件测试技术干货】,【面试求职技巧】...

51与你共同学习,一起成长!期待你的加入:

QQ                     群:                    755431660

软件测试python测试步骤_软件测试员必备基础:3分钟带你入门自动化测试!相关推荐

  1. Android 3分钟带你入门开发测试

    本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/-TW7p3z3vJ3GJw7X9u7dVg 作者:Zhu Yifei 作为一名合格的开发人员, ...

  2. 并发测试工具_软件测试工程师都在用哪些测试工具?

    工欲善其事,必先利其器,高效开展软件测试活动,除了测试工程师工作中认真敬业之外,还应有优秀的测试工具辅助其工作.测试工具能提高测试效率,辅助实现测试目标,提升个人的技能. 下面简单介绍一下目前业内常用 ...

  3. 软件测试黑盒测试实验心得_软件测试的基础知识

    1测试的含义为"以检验产品是否满足需求为目标".而软件测试活动包括了很重要的任务,即发现错误. 2什么是软件测试 广义的概念 指软件生存周期中所有的检查.评审和确认工作,其中包括了 ...

  4. python真假命题_程序员冒死揭开家暴内幕:教女友学Python是道送命题!

    近期,某网站发出了一个调查问题: 2018-2019年科技行业最火的关键词有哪些? 上线5小时便有3.6万人参与,经过盘点,"人工智能"和"Python"则脱颖 ...

  5. javaweb不同用户需要几张表_程序员必备2020版:JavaWeb快速进阶全套教程

    Java Web应用由一组Servlet.HTML页.类.以及其它可以被绑定的资源构成.它可以在各种供应商提供的实现Servlet规范的Servlet容器中运行. JavaWeb项目简单来说就是一个应 ...

  6. Java如何接手别人项目_程序员必备技能——怎样快速接手一个项目

    作为一个程序员,我们很少能从头到尾参与一个新项目的开发.如果你经常开发的是新项目,那你真是太幸福了. 更多的情况是半路进入一个项目组进行开发,或者是有其他同事离职了,之前由他维护的系统转交给你维护. ...

  7. Python测试框架pytest(01)简介、安装、快速入门

    1.简介 pytest 是成熟的功能齐全的 Python 测试工具,可帮助你编写更好的程序. pytest 是一个使构建简单和可伸缩的测试变得容易的框架.测试具有表达性和可读性,不需要样板代码.几分钟 ...

  8. 程序员必备基础:如何安全传输存储用户密码?

    前言 我们开发网站或者APP的时候,首先要解决的问题,就是「如何安全传输和存储用户的密码」.一些大公司的用户数据库泄露事件也时有发生,带来非常大的负面影响.因此,如何安全传输存储用户密码,是每位程序员 ...

  9. 安装python步骤-从0到1,Python安装步骤详解(附基础知识简介)!

    Python下载安装步骤 python解释器,在Linux中可以内置安装,而在windows中则需要去下载.具体步骤如下: 第一步:通过Web浏览器,访问http://www.python.org官网 ...

最新文章

  1. 周志华:“数据、算法、算力”,人工智能三要素在未来还要加上“知识”
  2. 第十六届全国大学生智能汽车竞赛华东赛区 承办情况汇报
  3. java解非线性方程组_Scipy - 非线性方程组的所有解
  4. 从Delegate.CreateDelegate看值类型的实例方法
  5. mysql allowmultiqueries=true_Mysql批量更新的一个坑-allowMultiQueries=true允许批量更新(转)...
  6. c-free5.0运行程序错误_web前端之异常/错误监控
  7. 力扣217.存在重复元素 使用多种方法
  8. Spring帖子汇总
  9. sql server 2008 新建服务器注册,SQL Server 2008中不能注册服务器怎么回事
  10. html怎么做出相框的效果,纯CSS实现的相框效果
  11. Masscan教程和入门手册
  12. 高德导航java_通过拼接实现高清地图的下载-高德-java实现
  13. 打字练习网站keybr.com
  14. 用texstudio写伪代码
  15. OCP大会 | 腾讯开放光网络平台(附PDF)
  16. 2018年湖南省高中数学联赛(A)卷试题
  17. 益聚星荣:如何有理有据地给元宇宙泼一盆冷水?
  18. datadog-define-tags by AOP
  19. fragment 中调用getactivity()的时候报 nullpoint错误
  20. CDA Level1知识点总结之总论

热门文章

  1. 行内块的巧妙运用(HTML、CSS)
  2. 测试线程池(Java)
  3. visionpro 窗口显示文字
  4. opencv显示中文
  5. Eclipse-阶段1-配置问题解决
  6. 大数据将植物学研究带入新境界
  7. Linux命令解释之du
  8. 如何在Ubuntu 13.04, 13.10上安装Sublime Text 3
  9. Linux-sed command
  10. C#笔记09 结构、枚举、异常、泛型、操作符重载、dll、垃圾回收与资源清理、XML注释