先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip1024b (备注软件测试)
正文
与屏幕上的应用交互,UI自动化测试需要能唯一识别它们。在这个教程中,可以使用应用的text
、content-desc
或者class
字段来唯一的区分。
从上图可以看到Apps图标没有text
字段,但有content-desc
。记下它的值,后面将用到这个值。
拿起Android设备,触摸Apps图标,进入设备安装的所有应用界面。使用 UI Automater Viewe 获取另外一张屏幕截图。因为要写一个计算器应用的测试,点击计算器图标查看详细界面。
这次content-desc
是空的,但是text
的值为Calculator,同样记住这个值。
如果你的Android设备运行不同的主界面或者不同的Android版本,界面和显示的细节会有所不同。这意味着后续代码中需要做一些修改,以匹配你的操作系统。
4、准备测试环境
返回到Android Studio,给setUp
方法中添加代码。如同其名字,setUp
方法是用来准备测试环境的。换句话说,这个方法是在真正测试之前指定具体需要执行什么动作的。
现在需要写代码来模拟刚才在Android设备上执行的几个动作: 1、按home键进入主界面 2、按Apps图标进入应用界面 3、点击计算器图标启动它
在你的类中声明类型为UiDevice
的变量device
。它代表你的Android设备,后续使用它来模拟用户行为。
1 private UiDevice device;
在setUp
方法中,通过调用UiDevice.getInstance method
来初始化device
,传递Instrumentation
实例,如下所示:
1 device = UiDevice.getInstance(getInstrumentation());
模拟点击设备home键,需要调用pressHome
方法。
1 device.pressHome();
接下来,需要模拟点击Apps图标的动作。不能立即做这个动作,因为Android设备需要一个反应时间来加载界面。如果在屏幕显示出来之前执行这个动作就会引起运行时异常。
等待一些事情发生时,需要调用UiDevice
实例的wait
方法。等待Apps图标显示到屏幕,使用Until.hasObject
方法。
识别Apps图标需要使用By.desc
方法并传递值为Apps的参数。你还需要指定最长等待时间,单位为毫秒。此处设置为3000。 至此形成如下代码段:
1 // Wait for the Apps icon to show up on the screen
2 device.wait(Until.hasObject(By.desc(“Apps”)), 3000);
要获取Apps图标的引用,需要使用findObject
方法。一旦有了Apps图标的引用,就可以调用click
方法来模拟点击动作了。
1 UiObject2 appsButton = device.findObject(By.desc(“Apps”));
2 appsButton.click();
和前面一样,我们需要等待一些时间,保证计算器图标显示到屏幕上。在之前的步骤中,我们看到可以通过text
字段唯一的识别计算器图标。我们调用By.text
方法来找到图标,传递参数为Calculator
。
1 // Wait for the Calculator icon to show up on the screen
2 device.wait(Until.hasObject(By.text(“Calculator”)), 3000);
5、检查计算器UI
在你的Android设备上启动计算器应用,使用 UI Automater Viewer 来查看显示。获取到一个截屏后,点击不同的按钮来观察使用何值可以唯一的区分它们。
在本次测试用例中,使用计算器计算 9+9= 的值并确认结果是否为 18。这意味着你需要知道怎么区分按键 9、+ 和 =。
在我的设备上,如下是我收集到的信息:
- 数字按键匹配
text
值 - + 和 = 使用
content-desc
值,分别对应 plus 和 equals - 返回值显示在
EditText
控件中
如果你使用不同版本的计算器应用,请注意这些值有可能不一样。
6、创建测试类
在前面几步操作中,你已经学会了使用findObject
方法通过By.text
或者By.desc
来获取屏幕上不同对象的引用。还学会了通过click
方法来模拟点击对象的动作。下面的代码使用这些方法来模拟 9+9=。添加这些到类CalculatorTester
的方法testAdd
中。
01 // Wait till the Calculator’s buttons are on the screen
02 device.wait(Until.hasObject(By.text(“9”)), 3000);
03
04 // Select the button for 9
05 UiObject2 buttonNine = device.findObject(By.text(“9”));
06 buttonNine.click();
07
08 // Select the button for +
09 UiObject2 buttonPlus = device.findObject(By.desc(“plus”));
10 buttonPlus.click();
11
12 // Press 9 again as we are calculating 9+9
13 buttonNine.click();
14
15 // Select the button for =
16 UiObject2 buttonEquals = device.findObject(By.desc(“equals”));
17 buttonEquals.click();
现在就等待运行结果。此处不能使用Until.hasObject
,因为包含计算结果的EditText
已经显示在屏幕上了。取而代之,我们使用waitForIdle
方法来等待计算完成。同样,最长等待时间是3000毫秒。
1 device.waitForIdle(3000);
使用findObject
和By.clazz methods
方法获取EditText
对象的引用。一旦有了此引用,就可以调用getText
方法来确定计算结果是否正确。
1 UiObject2 resultText = device.findObject(By.clazz(“android.widget.EditText”));
2 String result = resultText.getText();
最后,使用assertTrue
来检验范围值是否为18。
1 assertTrue(result.equals(“18”));
测试到此结束。
6、执行测试
执行测试,需要在Android Studio的工具栏中选择CalculatorTester
,点击它右方的play按钮。
一旦编译结束,测试就成功运行完整。当测试运行时,在你的Android设备上就会看到UI自动化运行界面。
总结
此篇教程是教如何使用UI自动化测试模块和 UI Automater Viewer 来创建用户界面测试。你也看到了使用Android Studio执行测试是如此简单。虽然我们测试了一个相对简单的应用,但可以将从中学到的概念用到几乎所有Android应用的测试中。
还有不足之处欢迎指教点评,需要交流学习可简信沟通。
最后祝大家早日成为一名优秀的高级工程师。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)
[外链图片转存中…(img-NVQYYdPB-1713447617274)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!