设计与开发monkey自动化测试方案需要多少技术栈?

前言思想

    自动化测试就是将人(测试人员、开发人员)用手、腿、耳朵、嘴做的每个动作,全部转换由程序进行,比如我们人类眼睛的图像识别、耳朵的音频识别、嘴上的音频输出,手上的触摸动作。

Android上的monkey测试为了什么

     用于发现程序崩溃与ANR,提高程序的稳定性测试,只有这样才能让用户留下来,假设你用到一个总是崩溃的App,你的不爽,一定会发泄为卸载,所以稳定性测试是提高留存的必要手段,非常重要。

聊聊自动化测试的几个重要的元素

1、环境

执行自动化测试的环境,比如依赖的操作系统:Windows、Linux等等、依赖的程序:Python、bash、Android SDK

2、过程

执行测试的过程,比如monkey程序,它模拟人类的手去触摸屏幕(备注:你用脚我也不干预)

3、结果

收集测试程序、被测程序的日志,程序虽然结束了,它的使用过程必须要留痕。包括:文本日志、图片日志、视频日志,统称为log。 用于分析程序发生异常时的执行情况,执行了哪个指令,导致程序结束。

4、报告

针对测试过程的总结性过程,包括崩溃的次数、系统性的展示log信息等等

Monkey的自动化测试都需要做什么(需求分析)

    分析测试人员进行Monkey测试的行为,分析手工测试的行为相当于自动化测试方案的需求评估,你不能错过任何一个手工动作,因为需要把每个手工动作全部使用自动化程序实现

    一个测试人员执行monkey测试会做哪些事情呢?自己做一遍是最重要的,你可能记住每一个动作,如果对业务测试不熟悉,也可以跟踪一个测试人员。

     考虑如何将测试人员的一个一个的手工动作变成由程序代替执行呢,让我们想想一个测试工程师做Monkey测试,他会做哪些事情??

1、环境准备

开发提交代码到远程仓库、Jenkins使用Git插件、Gradle插件构建出Apk、测试人员从产物平台拿到Apk、插上手机、开启手机开发者模式、adb devices确认是否连接手机、使用adb工具安装到手机上、从Launcher点击被测App的图标、输入账号、输入密码、点击登陆,然后还需要把人为授权的弹出点掉,这样一个apk环境准备好了

2、测试过程

通过命令行启动Monkey程序

3、结果

收集Monkey异常日志、打开异常日志,一行一行筛选有用的且无重复的崩溃(Native、Java)、然后将日志录入到bug管理系统并指定给开发、QQ或微信或面对面通知开发有个monkey的bug看一下

4、报告

它会把测试结论以某种形式展现给开发者

需求背景

1、monkey测试频繁的去做这些行为

2、能发现稳定性bug,说明有产出

3、非常消耗人力资源

实现目标:24小时无人工干预的Monkey程序,将上述动作全部自动化(程序),适用于Android、Ios

自动化monkey技术栈

1、计算机语言

python、shell、java、js、vue、html、css

2、外部工具(命令)

jenkins、git、tapd(jira)、gradle、monkey、adb、unicorn

3、自动化框架

UiAutomator

4、文件系统

读写文件、文件路径

5、网络

http、json

6、中间件服务

mysql、redis

7、通信

飞书API、邮件API

8、进程

进程间同步、进程间通信

9、框架

Flask、Vue

进程角度

1、主执行流进程

2、log分析进程

3、monkey进程

早期粗略计划

1、git pull master分支上的代码(可以利用gitlab的API,或者git的log,通过开发提交日志触发、添加特殊字符)这块都交给Jenkins

2、没有新提交的话什么也不做,有新提交的代码的话,Jenkins执行一个命令也行,比如就用curl命令行

3、Flutter支持(通过前端触发Jenkins打包),构建成功后(是否构建可以根据git tag决定),让Jenkins的job里给我的后端发一个请求,后端收到请求,从产物H5AI的服务里,获取最新的安装包,获取成功之后,通过adb安装到手机里,此时再用adb启动Uiautomator,执行登陆操作,登陆完之后把该获得的权限都点出来,通过Uiautomator全部获取,全部完事之后(给个5分钟吧),后端将Uiautomator的进程干掉,开始启动

可以省略为测试同学使用jenkins构建完App后,那么定时程序去检测目录,如果有新的目录,然后将安装包安装到手机上(消息队列已经逐渐成为企业IT系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能,成为异步RPC的主要手段之一。当今市面上有很多主流的消息中间件,如老牌的ActiveMQ、RabbitMQ,炙手可热的Kafka,阿里巴巴自主开发RocketMQ)

4、安装到手机apk(这里的容错是,先卸载原先的App)

5、启动Appium服务,执行登陆、权限等步骤的操作(如果账户权限相关的,请后端支持白名单,绕过验证码)App处于可用状态(然后可以开启一个守护进程、利用Uiautomator,处理弹窗等影响Monkey执行的异常业务逻辑,这个由Monkey来点击既可以)

6、Monkey执行,Monkey日志(标准输出)存储在Mac本地文件中,其中的崩溃日志、ANR日志从Monkey中提取出来(开启bugreport,使用bugreport的日志文件进行分析),每个都要单独写到一个文件里

7、ANR日志拿到的话,也要单独先提取出来放到一个目录当中

8、上传线程监听崩溃目录、ANR目录是否有文件,有的话,直接将目录文件都存放到云盘中

9、自动提交bug系统,POST到TAPD中

这里面涉及到一个Exception过滤重复的问题,每次提交到TAPD之前,与上传过的Exception做对比,如果一样,不作提交,上传到TAPD崩溃日志、ANR日志,需要增加容错去重(别重复的日志总是上传)

10、Monkey执行完毕,发出报告(有发现的问题才发,没有不发)

总结

1、完全无需人干预的24小时Monkey自动化,整个需求很复杂,我没有写所有的步骤,细节很多,最后的目标是:利用程序代替执行Monkey的所有人力动作

2、monkey发现崩溃,用于帮助产品提高留存

3、同时由于采用自动化程序执行,可以节约人力资源,为公司省钱

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值