乐趣区

关于自动化测试:浅谈自动化测试

引子

很多敌人始终从事功能测试,想要学习自动化测试。但因为网上的材料大多表面化,内容雷同,短少联合我的项目的实际,看完之后仍对自动化测试较为含糊。鉴于此,在本篇内容中,

先介绍自动化测试人员能力阶梯,目标是让初学者明确成长路线。随后举例一个自动化我的项目,来阐明在面对一个理论业务测试需要时,是如何设计、实现、落地并产生价值的。

一、自动化测试人员能力阶梯

  • 根本自动化测试工具利用
  • 可能应用相熟的语言,编写简略的测试脚本、应用罕用的自动化测试框架
  • 自动化测试模块开发
  • 自动化测试框架设计
  • 定制零碎业务级自动化计划

如上所列,自动化测试人员的能力阶梯分为五个阶段,自上而下能力要求递增,大家依据本人的能力进行对标,可明确本人下一步晋升的方向。

留神:下面内容是我的敌人总结而成,与“业界规范”等标签无关,内容属于阅读者沟通交流领域

二、一个误区

以前面试的时候,会问面试者一个问题:您的接口自动化测试是怎么做的?

有一些答案是这样的:postman 呀。

持续问:假如您公司的产品是 T3 出行,当初有一个测试需要,咱们要求在任何新性能上线之前,咱们的 叫车→ 乘客下单 → 司机应答 → 实现订单 → 订单核算 → 处分发放 -> 领取 这一外围业务要齐全自动化回归,这个需要如何通过 postman 实现?

答复:把下面波及的几个接口串联起来就行了。

持续问:

1)订单数据是从 kafka 生产而来,存在漏单状况

2)处分发放为每天定时计算

3)领取接口返回胜利,但仍存在用户未收到的状况

针对上述理论业务场景和实现,如何通过 postman 实现保障?

答复:唔~

读到这里,敌人们应该能了解到我想表白的意思:postman 无疑是一款十分便当的接口测试工具,它有肯定的接口串联能力和肯定的断言能力。

暂且不从自动化测试要求的低耦合、高灵便、高保护等几个方面来谈,上述举例的业务流程较理论业务曾经是简化过的,单用 postman 工具曾经无奈保障。

postman 是一款十分便当的接口测试辅助工具,但 postman 利用 != 接口自动化测试

心愿打消 工具利用 == 自动化测试,这一个误区。

三、实际

我始终感觉最好的学习形式,就是实际。当初拿我以前做过的一个我的项目,以 业务背景 -> 测试痛点 -> 解决抓手 -> 计划选取 -> 方案设计 -> 我的项目实现 -> 我的项目落地和产生业务价值

这一思路来给大家举例。

1、业务背景

广告投放是营销业务的伎俩。广告投放的曝光渠道流量最大的 app 是微信、抖音、今日头条等等。投放频率在顶峰周期会打高一周三次。

这代表着,测试人员如果要保障投放成果,须要在每次上新之前测试 var 次,var = 数个投放渠道 乘以 数个手机品牌 乘以 每个品牌不同手机型号

靠人工来测试 var 次,无疑是低效的。对测试人员来说,这种反复的、大量的、机械的测试是很头痛的(我个人感觉是很苦楚的)

这时候,大家天然会说:这用市面上的一些 UI 自动化测试工具,不就能够解决吗?

上面要介绍的痛点就在这个疑难中。

2、测试痛点

在说痛点之前,先简略谈一下 UI 自动化测试工具的底层实现原理,获取页面元素坐标、path -> 模仿用户点击元素 -> 判断断言 -> 生成后果

即,获取页面元素坐标、path 是第一步。

然而,微信浏览器做了限度,你在微信内关上的 h5 页面,是无奈间接获取到页面元素坐标的。

痛点随之而来。

3、计划选取 airtest

网易游戏开发了一款工具 airtest,airtest 没有从根本上解决获取不到页面元素问题,而是另辟蹊径采纳截图和找图的形式来达到测试目标。

其外围流程是:
封装办法初始化、操控挪动端设施(adb、moco)-> 截取被测页面元素并保留 -> 判断断言(暴力图像识别)-> 生成后果
在测试中,发现 airtest 存在以下弊病:
1)应用门槛高
须要搭建 airtest 测试环境,要求测试人员具备 python 代码能力)
2)资源耗费大
airtest 图片比照底层算法是机器学习图像识别的暴力匹配,简略来说就是在一张大图上,找出保留下来的截图,是一个找图和比照图片类似度的过程。
算法对 cpu 耗费资源较大,耗时较长。

留神:airtest 源码撑持另外一种非暴力匹配算法,耗费资源低,然而准确度有待测试

3)测试后果准确性管制难度高
airtest 测试后果是否精确与截图强相干。下面提到过测试后果的生成是一个找图的过程,若截图不“对”,则无奈返回正确测试后果。
举一个日常测试中的小例子,假如要截取一个操作按钮,若按钮的背景图色偏淡,则须要截取范畴扩充。若色彩突出,则截取范畴必须正好,否则也可能造成测试后果不准。
总体来说,airtest 在截图要求上比拟高,须要有长时间工具应用教训的人来编写脚本。这同时减少了脚本调试的工夫老本和测试用人门槛。

airtest 在与 stf 联合开发调试中也存在一些问题,这里不再详述。
总结下来,airtest 并没有齐全达到节俭人力、升高耗时、笼罩更广范畴测试机型的目标。

最初,决定采纳自主研发一款工具,配合 airtest 一起应用。

4、RR 方案设计

计划外围流程:
录制 → 提交录制数据 → 增加断言 → 回放 → 提交回放数据 → 比照录制和回放数据中截图的类似度 → 生成测试后果
其中录制数据分为两局部:
一是用户操作行为数据,用来在其余设施上模仿用户操作
二是点击事件生成的截图数据,用户可自定义勾选其中的局部图片作为用例断言(assert),并将断言数据上传到 server 端。

回放设施接管到带断言的录制数据,会依据录制时的用户行为数据模仿用户操作,并在断言的地位截图生成截图数据,而后将

通过比照录制数据和回放数据中的截图类似度

5、我的项目实现

我的项目实现遇到过很多难点,其中最大的难点是如何获取页面。其余的比方 server 端与手机外部的 js 如何交互、工作状态机的轮转、手机状态的管制、各种失败状况的捕捉、hash 比照准确度。

6、我的项目落地和产生业务价值

该我的项目最初落地于投放广告业务,同时也反对,多台设施并行测试。
上面截取局部测试报告:

四、最初

我的项目实现计划,因为公司起因,不能写出。
本文篇幅较长,心愿能对想做自动化测试的敌人,有所帮忙。

退出移动版