APP 自动化测试
什么是 APP 自动化测试?
我们先来说说什么是测试吧,当我们完成一个需求之后,这个需求可能是接口、硬件、机器、APP、客户端等等,当完成它们之后,都需要经过测试这个环节,这相当于给你的需求设置了一道关卡,保证了你这个需求的质量。
但是毕竟测试是需要花费大量人力精力的,所以我们可以让机器去为我们做这件事,毕竟机器是不会累的,让机器去做这件事,能大大提高整体的测试效率,这就是 自动化测试。
为什么要做 APP 自动化测试
如果不适用 自动化测试 ,可能会造成以下情况:
- 重复性的测试,在多次构建中运行的测试
- 容易导致人为错误的测试
- 需要多个数据集的测试
- 经常使用的功能,引入了高风险条件
- 不可能手动执行的测试
- 在几个不同的硬件或软件平台和配置上运行的测试
- 手动测试时需要花费大量精力和时间的测试
APP 自动化测试风险分析
- 测试用例覆盖率:覆盖率很重要,它与测试效率挂钩,覆盖率有人说应该 100%,有人说应该50%,看团队吧
- 测试结果准确度:准确度一定要保证做到近乎全绿才行
- 自动化代码维护:可维护性是很重要的一个指标,代码应该要可维护性高些
- 版本开发和测试时间进度:时间要规定好,这样才能保证效率
- 开发对控件元素增修改的程度:修改尽量不要太大,如果太大的话,那要大改对应的测试用例
APP 自动化测试实践
环境准备
我们大致需要以下环境:
- Jdk 1.6 以上
- Python 2.7 以上
- Appium
Appium 是一个开源测试自动化框架,可用于本地、混合和移动web应用程序。它使用 WebDriver 协议驱动 iOS、Android 和 Windows 应用程序。
启动 Appium
我们需要启动 Appium。
脚本代码编写
platformName
:这里是 android 的 apkdeviceName
:手机设备名称,通过 adb devices 查看platformVersion
:android 系统的版本号appPackage
:apk 包名appActivity
:apk 的 launcherActivity
from appium import webdriver
desired_caps={
'platformName': 'Android',
'deviceName': '127.0.0.1:62001',
'platformVersion': '5.0',
'appPackage': 'com.ss.android.article.news',
'appActivity': 'com.ss.android.news.activity.MainActivity'
}
driver= webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
使用 Apifox 进行 API 自动化测试
API 也是 APP 不可或缺的一部分,所以我们需要对 API 进行测试,我们可以使用一款非常方便的 API 工具 —— Apifox 来进行测试。
创建几个请求
我们需要创建几个请求,在请求中的前置脚本或者后置脚本中,进行脚本代码的编写,Apifox 默认的脚本语言是 javascript。
在填入 路径、方法、名称 之后,我们需要进行 自定义脚本 的编写。
自定义脚本的编写
我们可以发现 Apifox 已经为我们准备了很多校验脚本代码的模板。
比如以下的脚本代码:
// 判断状态码是否为 200
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});
// 判断 body 是否包含目标字符串
pm.test("Body matches string", function () {
pm.expect(pm.response.text()).to.include("string_you_want_to_search");
});
// Body json 检查
pm.test("Your test name", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.value).to.eql(100);
});
// body 字符串检查
pm.test("Body is correct", function () {
pm.response.to.have.body("response_body_string");
});
// 修改 body
pm.response.setBody({});
// header 是否包含 content-type
pm.test("Content-Type is present", function () {
pm.response.to.have.header("Content-Type");
});
// 响应时间低于 200ms
pm.test("Response time is less than 200ms", function () {
pm.expect(pm.response.responseTime).to.be.below(200);
});
// post 请求成功
pm.test("Successful POST request", function () {
pm.expect(pm.response.code).to.be.oneOf([201,202]);
});
我们可以为这个请求设置多个测试校验,比如我这里加了两个:
- 检查返回状态码是否为 200
- 请求耗时是否少于 200ms
点击保存,我们可以先运行一下试试,可以发现,我们得到想要的预期效果,校验也通过了。
Apifox 自动化测试
试想一下,如果有五个接口呢,不可能一个一个去发送吧~所以我们需要用到 Apifox 的自动化测试功能。
我们需要进入自动化测试界面,然后导入对应的接口。
最后填写环境、循环数、延迟数等等,进行运行。
得出运行结果,可以查看耗时,成功数,失败数等报告参数。
关于Apifox
欢迎体验一下,完全免费的哦:在线使用 Apifox。
Apifox 是一体化 API 协作平台,可以实现 API 文档、API 调试、API Mock、 API 自动化测试,是更先进的 API 设计/开发/测试工具。
Apifox 提供了一种全面的 API 管理解决方案。使用 Apifox ,你可以在统一的平台上设计、调试、测试以及协作你的 API,消除了在不同工具之间切换和数据不一致的问题。
个人使用体验还是不错的,推荐使用~