APP测试技术:ADB——安卓手机测试一座神奇的“桥”
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;"><strong style="color: blue;"><span style="color: green;">前言:</span></strong></p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;"><span style="color: green;">近年移动互联网好比IT界的一条浩瀚银河,安卓手机测试可谓其中最璀璨的一颗明珠,这里有一座你不得不熟悉的桥--ADB</span></p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;"><span style="color: green;">曾见过不少相关的文章或培训,不乏空谈多,实战少;期望大,效果差。也见过很多测试同仁,预成大牛,却不得其法。今日我们秉承单点极致的精神。聚焦实用的技能,也思考下测试这条路,该如何走的深远。</span></p>
<div style="text-align: left; margin-bottom: 10px;"><img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/d5b9953ca54e4b87bfdcb643a113a271~noop.image?_iz=58558&from=article.pc_detail&x-expires=1679818949&x-signature=xMTA1Qi5%2FPluKiZZ3gyKAdMc8Xc%3D" style="width: 100%; margin-bottom: 20px;"></div>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;"><span style="color: green;">安卓测试,乃如今移动测试领域中举足轻重的部分,相信也有不少同仁奋战在这片战场。工作中听闻最多的几个关键词"性能","自动化","稳定性"……掌握这些测试技能,或可成为高级测试工程师。也达到很多同仁眼中的成功,至少是成就感。那么这条路远嘛?难嘛?我说,不远,也不难,你和成功其实只隔一座桥--ADB。</span></p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;"><span style="color: green;">ADB,或许很多人并不陌生,何谓ADB,简言之:"adb的全称为Android Debug Bridge"就是起到调试桥的作用。最基本的安装,环境变量配置,相信大家也能查到诸多资料,而一些入门级的介绍更是犹如滔滔江水,连绵不绝。相信如下几个场景,或者命令大家都尝试过:</span></p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;"><span style="color: green;">1)安装一个安卓APP: adb install</span></p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;"><span style="color: green;">2)卸载一个安卓APP: adb uninstall</span></p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;"><span style="color: green;">3)查看设备连接: adb devices</span></p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;"><span style="color: green;">4)推送/拉去一个文件: adb push/pull</span></p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;"><span style="color: green;">5)重启手机: adb reboot</span></p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;"><span style="color: green;">入门级命令十多个,相信大家看到这里很亲切。不错!这也是常考的一些笔试题。</span></p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;"><span style="color: green;">但是问题来了,又有多少人,到此就浅尝辄止了?!恐怕也是犹如黄河泛滥吧……</span></p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;"><span style="color: green;">ADB 是一个非常实用的工具,尤其是对我们测试人员。什么才是进阶实践呢?您是否基于 ADB 做过“性能测试”,“自动化测试”,“稳定性测试”?姑且让我们从这三个场景看看这座桥(ADB)有多少神奇的潜力。</span></p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;"><span style="color: green;">注:</span></p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;"><span style="color: green;">1. 以下截图中代码,都来真实测试项目中的代码片段,必要地方我会加以解释。</span></p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;"><span style="color: green;">2. h 是 Java 封装的一个类,主要作用是把 adb 命令发送到控制台执行。</span></p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;"><span style="color: green;">很多高级语言都有相似方法,比如 php,或者 python</span></p>
<div style="text-align: left; margin-bottom: 10px;"><img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/be6c6e031b8942918cdc9fb12073546e~noop.image?_iz=58558&from=article.pc_detail&x-expires=1679818949&x-signature=GClMFqnM%2FFXWfQanQ9AiUeRtxHs%3D" style="width: 100%; margin-bottom: 20px;"></div>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">一、性能测试场景</p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">安卓测试中,启动速度,安装包大小,内存占用,CPU 占用,耗电等是我们公认的重要性能指标。通过这座桥,这些都能实现。</p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">例 1:测试 app 的启动速度:</p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">【项目实战代码】:</p>
<div style="text-align: left; margin-bottom: 10px;"><img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/39383fe76ac146baa433f305f93904d8~noop.image?_iz=58558&from=article.pc_detail&x-expires=1679818949&x-signature=w8I7%2Ff6I40o%2FnCzevq2fiykqqSY%3D" style="width: 100%; margin-bottom: 20px;"></div>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">【核心命令】:</p>
<div style="text-align: left; margin-bottom: 10px;"><img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/f446d3e30589485691955e784e1f963e~noop.image?_iz=58558&from=article.pc_detail&x-expires=1679818949&x-signature=8zq2LM3tKRSX%2BPbrAdJwwZYDEto%3D" style="width: 100%; margin-bottom: 20px;"></div>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">【效果分析】:</p>
<div style="text-align: left; margin-bottom: 10px;"><img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/2ee02a87a9744285926bbd80c4276425~noop.image?_iz=58558&from=article.pc_detail&x-expires=1679818949&x-signature=kqDYqzST4UIXN6DU8Yk5TQGyCsc%3D" style="width: 100%; margin-bottom: 20px;"></div>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">其中的 ThisTime,和 TotalTime 就是我们关注的启动时间,单位是毫秒。</p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">知道这个,结合你已经掌握的安装卸载命令,再加上任何一门高级编程语言的基本语法就可以完成贵公司 app 启动速度专项测试。</p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">提供思路如下(赶快动手试试吧):</p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">1) 设置安装包路径,如果有实力可以脚本完成定期去 FTP 服务器拉去最新可用安装包。</p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">2) 安装</p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">3) 启动并记录时间</p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">4) 解析结果并入数据库。</p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">5) 完成分析数据,横向对比,量化的把控启动速度的变化趋势。</p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">例 2:获取 app,安装后大小:</p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">【项目实战代码】</p>
<div style="text-align: left; margin-bottom: 10px;"><img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/98df52f4a959434e91d458e2e0545074~noop.image?_iz=58558&from=article.pc_detail&x-expires=1679818949&x-signature=H6EXb2SGW%2BCHcwYeRsyQhYESX64%3D" style="width: 100%; margin-bottom: 20px;"></div>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">【核心命令】:</p>
<div style="text-align: left; margin-bottom: 10px;"><img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/78cd1433ca454ef4a801342c3e8f03e1~noop.image?_iz=58558&from=article.pc_detail&x-expires=1679818949&x-signature=w8eB%2FibZdDiXhYRgYZM8311xlRM%3D" style="width: 100%; margin-bottom: 20px;"></div>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">【效果分析】</p>
<div style="text-align: left; margin-bottom: 10px;"><img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/8f9273370d85470b82426f6c52f2b605~noop.image?_iz=58558&from=article.pc_detail&x-expires=1679818949&x-signature=BKXlRVLO6mYBjdC5BBuo2DCsY0k%3D" style="width: 100%; margin-bottom: 20px;"></div>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">其中 system 后面就是大小(单位是 B)顺便连安装时间也有了^_^。</p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">租后面无疑是包名字,想针对具体的应用来看,自然也是可以的。</p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">很简单,也很神奇。应用场景,你懂得。</p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">例 3:内存的获取:</p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">【项目实战代码】</p>
<div style="text-align: left; margin-bottom: 10px;"><img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/4ddcd309ee284274b1500a14a3eeec17~noop.image?_iz=58558&from=article.pc_detail&x-expires=1679818949&x-signature=igQ0eLPao4TJfdtyVlfAsgY51Og%3D" style="width: 100%; margin-bottom: 20px;"></div>
<div style="text-align: left; margin-bottom: 10px;"><img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/874aea087fbd4ecbb5bb5eee36da0ac2~noop.image?_iz=58558&from=article.pc_detail&x-expires=1679818949&x-signature=UX3qR1JrhwPLoHPp5SmQVWX%2B8IY%3D" style="width: 100%; margin-bottom: 20px;"></div>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">【核心命令】:</p>
<div style="text-align: left; margin-bottom: 10px;"><img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/c397f2ee083f4cd79b26fa68c6f614df~noop.image?_iz=58558&from=article.pc_detail&x-expires=1679818949&x-signature=l%2B13BxIQDIC5tSmHBJwvuItCK4Y%3D" style="width: 100%; margin-bottom: 20px;"></div>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">【效果分析】</p>
<div style="text-align: left; margin-bottom: 10px;"><img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/a0eff45f3fa74f75b0798ecf0947be8f~noop.image?_iz=58558&from=article.pc_detail&x-expires=1679818949&x-signature=9QXARLao44jdyEr4LUn%2B5Ca%2Bw0M%3D" style="width: 100%; margin-bottom: 20px;"></div>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">远比你想想的要详细,惊呆了,有木有。其中前两项是我们要获取的总内存,和剩余内存,至于其他,按需获取。</p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">【核心命令】:</p>
<div style="text-align: left; margin-bottom: 10px;"><img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/e718eab2ec27404d9c9d706fa4f38ee2~noop.image?_iz=58558&from=article.pc_detail&x-expires=1679818949&x-signature=Xs3F9Xo9Gfal5i9p05bqh8SqwMI%3D" style="width: 100%; margin-bottom: 20px;"></div>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">【效果分析】</p>
<div style="text-align: left; margin-bottom: 10px;"><img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/7032e8f2b0bb42829c319b3b0d315038~noop.image?_iz=58558&from=article.pc_detail&x-expires=1679818949&x-signature=KcGGcMwB6k%2FHFxuJzO58dd5KfbM%3D" style="width: 100%; margin-bottom: 20px;"></div>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">不难看出吧 58753KB,就是猎豹清理大师当前的内存占用。</p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">至于您想获取哪个应用,多久获取一次?合适获取。可以自己定义。总之内存这个常提到性能指标就通过一座“桥”实现了。</p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">例 4:电量测试</p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">【项目实战代码】</p>
<div style="text-align: left; margin-bottom: 10px;"><img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/83db9cf8a29a4c93ba9381578724ce6d~noop.image?_iz=58558&from=article.pc_detail&x-expires=1679818949&x-signature=Jw9Kg5zI7OZmKjLmFXuhB1VwF6M%3D" style="width: 100%; margin-bottom: 20px;"></div>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">【核心命令】:</p>
<div style="text-align: left; margin-bottom: 10px;"><img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/5bebeec706dd4017865cc280971acde7~noop.image?_iz=58558&from=article.pc_detail&x-expires=1679818949&x-signature=UdrTvLOMZde41AebwuCV%2Fvl9bIQ%3D" style="width: 100%; margin-bottom: 20px;"></div>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">【效果分析】</p>
<div style="text-align: left; margin-bottom: 10px;"><img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/4fa74cc293044b91b19b5a4f1aa8e4f4~noop.image?_iz=58558&from=article.pc_detail&x-expires=1679818949&x-signature=nqxOn3g2t6dSUhbUVOh2WALmrLI%3D" style="width: 100%; margin-bottom: 20px;"></div>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">不难看出,很容易解析到,我们要的电量,电压,温度。除此之外,你甚至会发现,连充电方式,电池的健康程度,电池类型等都有。</p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">想新到此,您已对 ADB 这座桥有了新的认知。</p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">其实远远不仅如此。让我们继续领略一二。</p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">二、功能自动化测试场景</p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">一提到安卓安卓手机的自动化测试。恐怕就会想到,monkeyrunner,robotium,Athrun 等一系列的框架。其实根据项目的情况选择合适的测试技术也是一项很有学问的事情。在此不展开讨论。</p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">说个具体场景。要检验猎豹清理大师的建议清理效果(该删除的文件被删除)</p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">核心步骤:</p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">1) 安装,启动,跳过协议页,规避弹窗:</p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">adb install(安装)</p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">adb shell am start(启动)</p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">adb shell input keyevent 4(点击 back 键)</p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">2) 进入垃圾清理,等待扫描完成,点击清理</p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">adb shell input tap X Y(点击某点,横坐标 X,纵坐 Y 标)</p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">3) 检查手机文件系统,完成效果比对。</p>
<div style="text-align: left; margin-bottom: 10px;"><img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/d85c51bb38f74e129be2539877375aee~noop.image?_iz=58558&from=article.pc_detail&x-expires=1679818949&x-signature=w4cy%2BZKxUdyLQ2WJyXJ1YCeaP2g%3D" style="width: 100%; margin-bottom: 20px;"></div>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">这无疑是一个典型的自动化测试场景。 核心的 ADB 命令如上,大家可以小试牛刀。</p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">三、基本稳定性测试场景</p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">提到稳定性,大家第一时间想到,monkey。不错,确实有一条命令:</p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">adb shell monkey –n XX (包名) 1000(伪随机时事件数)</p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">这无疑算是一种稳定性测试方法,但是常用的同学也不难发现它的缺点!</p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">>随机性强,不容易复现。</p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">>盲目性大,很容易点到别的应用。</p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">>可控性差,运行很久未必重点测试预期的模块。</p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">今天我们有这样一个测试场景,测试手机主要的模块,能正正常进入,并且没有崩溃。</p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">核心点有三个:</p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">1) 驱动手机进入指定模块;</p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">ADB 的坐标点击,你懂得,就不赘述</p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">2) 获取当前系统最上层的 ActivITy 名称。</p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">【项目实战代码】</p>
<div style="text-align: left; margin-bottom: 10px;"><img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/61f7aecf5d0744d0981f8572ac011a64~noop.image?_iz=58558&from=article.pc_detail&x-expires=1679818949&x-signature=KPOVKI%2F4QG%2FvHp6xGHBf65F4FKg%3D" style="width: 100%; margin-bottom: 20px;"></div>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">【核心命令】:</p>
<div style="text-align: left; margin-bottom: 10px;"><img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/7741744daf924945bb51c7a3d624dffe~noop.image?_iz=58558&from=article.pc_detail&x-expires=1679818949&x-signature=chcuU4IqC%2BfKhzJUZR%2FqfXRf7iE%3D" style="width: 100%; margin-bottom: 20px;"></div>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">【效果分析】</p>
<div style="text-align: left; margin-bottom: 10px;"><img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/90338544f4da416ca468f66b3c13517b~noop.image?_iz=58558&from=article.pc_detail&x-expires=1679818949&x-signature=TuR7AqbZBB5e0YLM84damCA8kW4%3D" style="width: 100%; margin-bottom: 20px;"></div>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">3) 结果比实际最上层 ActivITy 名称,和预期比较,判断稳定性,记录结果。</p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">字符串比较,留给大家自己发挥。</p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">至此,我们多少重新认识了下,似曾相识的 ADB。其实安卓测试,认真的走过这座“桥”漠然回首的时候,你会发现,自己经找到晋身高级测试工程师的门路了。当然由于时间和字数的限制。今日只能带大家走马观花的领略下,这座神器的“桥”。工作中如果有疑难的测试场景,不妨想起 ADB,或许一些问题就迎刃而解,修行在个人,希望大家一起更上一层楼。</p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">最后再次如何在测试这条路上走的更深,更远。虽说命题有些宽泛,但是有些方法论可以参考</p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">>在某个领域钻的够深,你就是专家。</p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">>简单的事情做出新意,你就是大牛。</p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">>茫然的领域探出条道路,你就是领袖。</p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;">和大家共勉。</p>
<h1 style="text-align: left; margin-bottom: 10px;">最后:</h1>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;"><strong style="color: blue;"><span style="color: green;">1)关注+私信回复:“测试”</span></strong>,可以免费领取一份10G软件测试工程师面试宝典文档资料。</p>
<p style="font-size: 18px; line-height: 40px; text-align: left; margin-bottom: 30px;"><strong style="color: blue;"><span style="color: green;">2)关注+私信回复:"入群" </span></strong>就可以邀请你进入软件测试群学习交流~~</p>
页:
[1]