如何做自动化测试

article/2025/10/14 12:34:45

这个话题比较大,相信大家也都有自己的想法,我在这里写一些我自己的看法,请大家指教。

什么叫做自动化测试工程师

首先,会使用自动化测试工具的测试人员不能够称之为完全的自动化测试人员,这类测试人员被称为『工具小子』(Script Kid)。这个阶段还是处于自动化测试的一个比较低级的阶段,因为这些工具都不是测试人员开发的。

对于高手来说,要能写一些独立的测试脚本甚至测试工具。

更高的高手则是能脚本和工具和实际工作紧密结合起来,解决工作中遇到的问题。

自动化测试工程师应该具有开发能力吗

通过上述内容,应该可以看得出来,自动化测试人员一定要有开发能力,而这恰恰是测试人员目前所欠缺的。没有开发能力的测试人员虽然也可以做一些所谓的自动化,但是仅仅是一些皮毛,没有办法做到活学活用。根据某机构的调查数据,目前所有从事测试工作的人中,90%的人都没有任何开发能力。根据目前的市场行情,如果在精通一门开发语言,能够从纯手工测试转型为自动化测试工程师,月薪至少增加3~5k。

自动化测试的层级


一般来说,自动化测试分为三个层级:单元测试、接口测试和UI测试,这三层成一个金字塔形状分布。最底层是单元测试,接口测试在中间,UI测试在最上层。下面通过一个表格来对比着三层测试。

层级

所处位置

受益

测试对象

运行速度

定位问题难度

维护成本

单元测试

底层

70%

类或者方法

极快

十分容易

接口测试

中间

20%

服务接口

一般

UI测试

上层

10%

UI

较难

非常高

从表格中我们可以看到,最适合做自动化的是单元测试层,而UI层则不是十分适合进行自动化。

测试人员应该怎么办

单元测试

单元测试无疑是最适合做自动化的,但是,大多数单元测试都是由研发人员自己完成。单元测试的代码行覆盖率能够达到70%,就是一个非常不错的程度了。测试人员不做单元测试,但是可以尝试推动研发人员来编写单元测试用例。

单元测试框架

  • 单元测试常用的框架——XUnit,比如Java的JUnit,PHP的PHPUnit,Python的unittest等等;
  • 一个测试用例通常由三部分组成——setUp,测试逻辑,tearDown。setUp用于准备测试数据,tearDown用于清理数据;
  • 一般单元测试框架都支持装饰器设计模式的注解,比如跳过执行,测试套件的组织,测试用例依赖管理等等
单元测试框架可以无缝地在UI测试和接口测试中使用,它们的基本思想都是相通的。

UI测试

目前,大众眼中关注的比较多的是UI的自动化测试,这是由大家的思维惯性导致的。传统的测试行业,测试工程师都是从UI下手,来完成所有的测试工作,所以到自动化领域,大家也理所当然的喜欢从UI层来进行自动化。做UI自动化,最重要的是要能有一个好的自动化测试框架,这里有一些框架的基本设计思路供大家参考:
  • 分布式——case增加到一定程度后,如何快速的运行所有的case,这就涉及到分布式的概念。对于Selenium,官方提供了一个Grid,感兴趣的同学可以研究一下;
  • 行为驱动——也就是常说的Cucumber,这个领域笔者没有太多的涉足,不误导大家
  • 关键字驱动——由『操作对象』、『操作』、『数据』关键字组合成测试用例,框架来把关键字解析为脚本并执行。这种框架最大的优点就是可以提供给不懂代码的测试人员使用,典型的代表是Robot framwork
  • 数据驱动——同一段代码的业务逻辑通过更换数据输入来生成多个测试用例,我们只需维护测试数据就可以维护case,这种框架思想在很多测试工具中都有实现
  • 关键字和数据混合驱动——目前最高级的框架,将上述两种框架结合起来
当然,这些思路不仅仅能用在UI层的自动化。
对于UI自动化,我个人的建议是只做冒烟测试用例的自动化,这样既可以从UI的角度来重复性的验证主业务主流程没有问题,又可以降低维护成本。

接口测试

接口的自动化是目前最适合测试工程师进行自动化的一层。接口不但变化小,运行速度快,受益高,还有着出现问题后能够很快定位的优点。

什么时候最适合做自动化

首先,自动化测试从来都不是用来发现新的bug的,它更多的是用来验证原有功能是没问题的,新的修改对原有代码逻辑没有影响。所以,当一个项目相对稳定之后,以后的项目都是基于原有代码进行迭代,这个时候自动化的介入是非常有效的。
另外,如果某个用例需要有大量的输入项,做手工测试比较繁琐,我们也可以引入自动化的手段做局部的自动化。比如,验证某个用户登录1000次是否能够登录成功,这种情况使用手工的方式基本是不可能的。

总结

服务端灰盒测试是一个很好的自动化测试的方向,从功能测试向服务端自动化测试转型,需要自己学习充足的编程知识,有一定的变成能力。同时还需要了解HTTP协议(或RPC协议)、设计模式、Linux、DB、前端开发、算法、架构等知识,需要很多积累。如果你不知道怎么做,先写10000行代码!

http://chatgpt.dhexx.cn/article/qlts8xal.shtml

相关文章

【测试】自动化测试基本流程

下图是自动化测试的基本流程图,以及每个阶段的任务负责人,输出等。 1、制定测试计划 在展开自动化测试之前,最好做个测试计划,明确测试对象、测试目的、测试的项目内容、测试的方法、测试的进度要求,并确保测试所需的…

自动化测试如何管理测试数据

前段时间,知识星球里有同学问到:自动化case越多,测试数据越多,数据的管理成本也越来越高,是否需要一个数据池来专门管理测试数据?这是一个好问题,也是很多测试同学在自动化测试实践中必须面对的…

自动化测试如何准备测试数据

事实上,大多数类型的测试都需要准备测试数据。 手动测试:需要准备一些基础数据,比如配置数据等; 自动化测试:基础需要准备,已有数据,动态运行时产生的数据需要准备; 性能测试:类似于自动化测试…

自动化测试实施流程

在上篇文章中,我们已经介绍过Selenium的一些基础知识,以及是否能够开展自动化测试的情形,在这篇文章中,我们将主要介绍自动化测试的实施流程。 1、自动化测试流程图 2、主要过程描述 2.1、自动化测试的切入点 开展自动化测试的…

自动化测试之获取mysql中的数据

各位小伙伴们,大家好,今天给大家带来的是关自动化测试之获取mysql数据库中的数据方面的干货,技术含金量超高,有测开方面发展的小伙伴可以好好看看。 实施自动化获取mysql数据库中的数据的前提知识有: 1. 精通软件测试…

性能自动化测试整体流程

目录 1. 性能环境搭建介绍 1.1 配置Jenkins 1.2 配置Maven, JDK 1.3 安装Jenkins插件 1.4 Jenkins角色权限管理 1.5 Jenkins配置发送邮件 1.6 配置JMeter 1.7 安装和配置Tomcat 2. 分布式接口压测的Job设置 2.1 Jenkins上配置Job 2.2 配置JMeter分布式压测环境 2.3…

自动化测试(一)

利用测试自动化工具,更轻松地编写测试套件,减轻人为干预并提高测试ROI回报率。 业务关键测试用例,重复测试用例,功能测试用例 web自动化测试工具 : QTP一个商业化的功能测试工具,收费,支持web…

自动化测试-使用python控制MYSQL数据库(pymysql)

当需要对大量的数据进行处理并写入/读取数据库时,直接使用Linux显然会显得力不从心,即使是图形化的Navicat Premium在处理大批量数据时也难以招架,只能通过SQL语句结合导入导出来实现一些事情,本文分享使用python语言中的pymysql包…

自动化测试基本流程

下图是自动化测试的基本流程图,以及每个阶段的任务负责人,输出等。 1、制定测试计划 在展开自动化测试之前,最好做个测试计划,明确测试对象、测试目的、测试的项目内容、测试的方法、测试的进度要求,并确保测试所需的…

最完整的自动化测试流程

今天笔者就要归纳总结下一整套测试流程,从无到有,实现零突破,包括如何编写测试用例,定时执行测试用例,查找最新生成的测试报告文件,自动发送最新测试报告邮件,一整套完整的测试流程。以后各位只…

图解《字典学习》

PPT&代码链接 csdn:https://download.csdn.net/download/u012037852/10899017 github:https://github.com/longfeizhou2016/Dictionary-learning

python学习 字典

22-9-15 1.格式:大括号{} eg: 2.创建字典: 6种常用方法: 3.增: 1.formkeys: eg: 2: 用此种方法,若键值存在,则修改其value,若不存在,则新…

[转]字典学习/稀疏编码

本文转自https://zhuanlan.zhihu.com/p/26015351 机器学习——字典学习/稀疏编码学习笔记 Esquirrel 2 个月前 以下资料是小编学习字典学习/稀疏编码时,整理的高质量的网络博客,供大家参考。欢迎留言交流,批评指正理解不足。 最Highlight的地…

【零散知识】字典学习(Dictionary Learning)

前言: { 之前的神经网络实践还卡在硬件上,不过目前已经打算先使用云设备,下次应该就会继续进行多目标识别的调试。这次就先写一点零散知识。 在专利[1]中我遇到了新的观点——字典学习(Dictionary Learning)。 } 正…

Python-字典学习

这次主要学习了字典学习的相关知识以及选择分支结构,根据课程编写了下图一些代码:

Python中的字典学习笔记

字典的格式:{"key":"value"} key表示数据的含义,value表示对应的数据的值字典是一种可变的数据类型,从python3.7开始,字典是有序的。 字典创建的方式 1、通过{},要使用key:value的格式&#xff0c…

『ML笔记』字典学习3(Dictionary Learning,KSVD)

文章目录 一、字典学习数学模型1.1、数学描述1.2、求解问题1.3、字典学习算法实现 字典学习也是一种数据降维的方法,这里我用到SVD的知识,对SVD不太理解的地方,可以看看这篇博客: 奇异值分解SVD 一、字典学习数学模型 字典学习的…

字典学习日记

字典的创建 在定义字典时,每个元素都包含了两部分:键(key)和值(value),并且在“键”和“值”之间使用英文冒号分隔,相邻两个元素使用英文逗号分离,所有的元素都放…

Dictionary Learning(字典学习、稀疏表示以及其他)

第一部分 字典学习以及稀疏表示的概要 字典学习(Dictionary Learning)和稀疏表示(Sparse Representation)在学术界的正式称谓应该是 稀疏字典学习(Sparse Dictionary Learning)。该算法理论包含两个阶段&am…

字典的学习笔记

列表 [] 单身什么是字典 {} 二人世界 python内置的数据结构之一,与列表一样是一个可变序列(可以增删改操作的) 以键值对的方式存储数据,字典是一个无序的序列 -> hash(key) 通过哈希函数来计算存储位置,key一定是不可变的字典的创建 使用花…