自动化测试的原理和价值

斯波

2022-11-143065次浏览

0评论

31收藏

13点赞

分享

这次,和大家讲讲自动化测试理论。

回顾我们之前提到过的测试流程:

首先是验证设计:分为文档分析以及性能分析。比如说策划我想要游戏的界面做的非常酷炫,世界上没有其他游戏超过我们,但是大家的游戏设备是否能达到要求?因为现在大多数玩家会使用手机端,移动端来玩游戏。

接下来呢就是设计测试方案:编写测试用例,准备测试环境以及编写测试脚本。比如一个关卡是否好玩?数值是否正确?这时我们就需要测试环境。然后在我们测试中,我们会发现一些BUG,并且记录。然后希望这些BUG被解决。

最后是执行测试:包含跟进缺陷以及产出测试报告。

那么有哪些测试方法呢?功能测试,压力测试,性能测试等等。当然这些只是一部分,并不是全部。 

我整理了下测试的分类。按目标分类,有功能测试,压力测试等,这些测试都是按目标来分类的,当然还有其他的测试分类。 

今天我们来探讨一下三点,自动化测试的原理与价值,持续集成与交付,常用工具介绍。

一、自动化测试的原理与价值

首先第一部分,自动化测试的原理与价值。很多同学可能不知道什么叫自动化,比如我当初高考报考专业的时候有一个专业叫自动化。但是我当时不理解到底什么是自动化。

在百度百科是这么描述的:机器设备、系统或过程(生产、管理过程)在没有人或较少人的直接参与下,按照人的要求,经过自动检测、信息处理、分析判断、操纵控制,实现预期的目标的过程。

维基百科的描述如下:自动化的最大好处是可以节省劳动力,但是,它也可用于节约能源和材料,并改善质量,准确度和精度。

所以这个地方可以看到自动化对于质量保障来说是一个非常好的工具。我自己总结了4个词,来解释什么是自动化。

让我们工作更高效:比如说按一下按钮,就自动保存。

更精确:自动化测试产生的报告非常精确。

更可靠:自动化测试可以在很短的时间内找出明显的问题,排除问题。

省人力:用最少的人完成等量的工作。

生活中也存在非常多自动化。

例如相机的发展,从开始需要人力拍照,到后面可以一秒拍7次,都是自动化延伸的功劳。 

二、什么是自动化测试

那现在来讲讲什么是自动化测试?百度百科描述如下:把以人为驱动的测试行为转化为机器执行的一种过程。通常,在设计了测试用例并通过评审之后,由测试人员根据测试用例中描述的规程一步步执行测试,得到实际结果与期望结果的比较。在此过程中,为了节省人力、时间或硬件资源,提高测试效率,便引入了自动化测试的概念。

那么自动化测试和手工测试有什么区别呢?我们先看一下两类测试的流程。 

我们可以看到,转化用例是自动化特有的。转化用例是指把文件式的用例转化成代码来表示,变成自动化文本。

自动化测试现在发展得越来越好,但目前而言手工测试不会完全被替代,我去观察了很多其他公司的情况,很多公司没有办法完全实现自动化测试。

我们来看下手工测试和自动测试的对比。

手工测试其实有以下特点:首次执行的成本低,也能迅速适应变更。比如你突然想起一个测试用例,可以拿两台手机迅速测试一下。适合于测试新的快速迭代的需求。

而自动化测试有以下特点:重复执行成本低,适合反复执行,例如我们要测所有的匹配组合,我们就可以设置一个自动化测试脚本,进行自动化测试,验证所有的匹配状态,并且生成报告汇总在一起。适合需要反复测试的需求。 

但是自动化测试的成本也非常高,一是操作的转化成本,例如将人的行为转化成指令。举个例子,登录游戏时只需要点击一下登录按钮,而自动化需要进行图像识别,模拟点击,失败截图等等。

二是验证的转化成本。人工判断是否成功登录一眼就能判断,但自动测试要判断客户端是否异常、服务端是否异常等等。一行正式代码可能配几十行测试代码才完美。

我们有两种自动化思路。一是全自动的自动化测试,无需手工干预。可自行进行导表检查、静态代码检查等,另一种是半自动的自动化测试,写一些脚本,辅助手工测试。进行多台手机同步操作、弱网模拟、千人同屏模拟、代码覆盖率统计、mock服务器等操作。 

当我们在进行测试时,我们考虑的不是“能不能做自动化”,而是“适不适合做自动化“。要考虑投入产出比,我们的目标是收益最大化,不要为了自动化而自动化。 

除了成本收益,还需要考虑产品。产品适合自动化吗?市场是瞬息万变的,有些产品的更新迭代速度非常快,比如策划想出了一个点子,你花了三天三夜写出了一个自动化脚本,而后策划告诉你改方向了。这样的自动化测试是没有价值的。所以自动化测试不得不考虑产品所处的领域和产品的生命周期,在合适的时候去推行自动化测试,在不合适的时候可以采用手工测试的方法做临时过渡。 

三、适合自动化的测试

那么,到底什么样的测试适合自动化测试呢?

这里提一下回归测试。

回归测试是软件测试的一种,旨在检验软件原有功能在修改后是否保持完整。

举个例子,一个MOBA游戏加了一个新英雄,但上线后收到投诉,这个英雄的伤害太高,究其原因,在单独开发这个新英雄的时候,对之前的英雄产生了影响。

那这种时候怎么办?我们要做出一个解决方案。

你出一个功能,我就测一个功能,你再出一个我就再测一个,但当你把所有的功能一起打包上线之前,我们要对所有的功能一起测试,这个时候就要进行自动化测试。 

还有一种测试也非常适合自动化测试:兼容性测试。

我们将很多台手机连在一起,任意选择其中一台手机进行操作,用同一个代码就能使得不同尺寸不同分辨率、操作系统的手机去做测试。测试比如说游戏运行、闪退问题、网络情况等。 

四、分层测试

自动化测试理论里有一些成熟的概念,例如分层测试。

我们将测试分为几层,最底层的是单元测试,数量庞大。

再上一层是集成测试,若干各类、若干个组件放在一起进行测试。

最上层是UI测试,测试真正呈现在用户面前的界面,来核实用户与软件的交互。

这三层测试的维护成本、执行时间、误报率都会由低到高。 

我们来详细介绍一下UI测试,UI测试可能是这样的代码。比如说往Email里填入Email,往密码框里填入密码,看是否能成功现实Welcome的界面。这是UI层面。 

同样一个在集成测试层面是如何测试的?

是直接把用户的Email和密码组装起来,用代码的方式伪造界面和网络请求,发给服务器,检查返回的页面是否是Welcome。这种测试方法劣势是集成测试通过的时候不能代表用户界面显示的就是对的。优势是能够降低成本去测试更多东西。 

总结一下,分层测试要根据需求逐步提高等级,最开始做单元测试,之后集成测试,最后UI测试。这是基于整个测试流程去考虑的。如果是项目初期无法开展自动化测试的时候,可以用手工测试进行UI测试。

这里也提到一个概念,如果我们能尽早的去做单元测试的话,提前发现BUG,我们所需要的测试成本是会越来越低。最后总结一下

自动化测试的优劣势: 

从纯手工测试到自动化测试,将来,自动化测试或许能发展成更高的机器学习和AI,用于更短周期的测试。 

评论 0

0/1000
网易游学APP
为热爱赋能
扫描二维码下载APP