目录
前言:
在移动端测试自动化中,利用 AnyProxy Mock 数据可以方便地测试应用程序的埋点功能。AnyProxy 是一种流行的代理服务器工具,它可以帮助测试人员快速准确地模拟网络环境,例如模拟网络延迟、模拟网络错误等。在测试应用程序的埋点功能时,可以利用 AnyProxy Mock 数据来模拟应用程序在不同网络环境下的行为,例如模拟网络延迟时应用程序的响应时间、模拟网络错误时应用程序的错误处理等。
Mock 数据
以 TesterHome iOS 客户端为例,一个测试点是:在话题列表,很长的标题能不能正确展示。
如果组织分工上移动端团队是分离的,或者功能上这个列表是智能推荐,或者技术上测试环境治理水平不高接口总是不可用,测试和开发同学在测试这点时最常见的选择是通过代理工具将标题改长,观察 App 的展示效果,延后对服务端的依赖。
比如 TesterHome 客户端里,启动后首屏请求https://testerhome.com/api/v3/topics.json?limit=40&offset=0&type=last_actived
获取话题列表,把 title 改长再返回给客户端:
{
"topics": [{
"id": 12390,
"title": "职业这条不归路上!总监们帮你解惑",
"replies_count": 21,
"node_name": "活动沙龙",
"user": {
"id": 3903,
"abilities": {
"update": false,
}
},
"abilities": {
"update": false
}
}]
}
想在 UI 自动化时也使用这个方式,需要代理工具支持可编程的方式编写规则、和外部交互,比如 AnyProxy 。
替换标题的规则文件如下:
module.exports = {
*beforeSendResponse(requestDetail, responseDetail) {
// 这个请求响应 Code 可能是 304
if ((requestDetail.url.indexOf('https://testerhome.com/api/v3/topics.json?limit=40&offset=0&type=last_actived') === 0) && responseDetail.response.statusCode === 200) {
let newResponse = responseDetail.response
let jsonBody = JSON.parse(newResponse.body.toString())
jsonBody.topics[1].title = '很长很长的标题显示测试' + Date.now()
newResponse.body = JSON.stringify(jsonBody)
return {
response: newResponse
}
}
}
}
如果使用 Appium ,为了方便和 AnProxy 交互,可以选一个 JavaScript 实现的客户端。
在 AnyProxy 的规则文件里声明