- 文献综述(或调研报告):
文献综述
前言
在移动端的日常测试工作当中经常会遇到这种情况,每出一个新的版本都需要对原有的功能以及界面进行检查,跑一些用例来确保功能的正常运行。这之中就涉及到UI的测试。我们需要对每一个页面进行确认,对优先级较高的用例进行遍历确保APP的正常运行。但这是个滚雪球的过程,测试人员的工作量将不断的增长。并且在UI测试的过程中,人工测试需要人们更加地仔细,这使得整个项目测试的压力更大。于是自动化测试应运而生,而作为全球销量领先的iphone,iOS的自动化测试也是人们研究的一大热门。
现在比较热门的也是比较常用的iOS UI自动化测试的框架有XCTest,Appium,KIF以及AirTest。我回归iOS APP UI测试的主要流程,以打包后自动保障主要流程没有阻塞为目的,使用UITesting来实现iOS UI自动化。
课题研究的国内外发展历程及现状
为了解决UI测试的问题,苹果公司也退出了两种自动化测试框架:UIAutomation框架以及iOS 9之后的XCTest测试框架。
UIAutomation框架
首先是UIAutomation框架。自iOS 4.0以来,苹果发布了一个名为UIAutomation的框架,可用于在真实设备和iPhone Simulator上执行自动化测试。苹果官方给出的三大初衷分别是:在睡觉的时候debug,实现重复的回归测试以及快速更新应用程序【1】。但是这个框架至今鲜为人知,也很少人在使用,主要原因还是在于这个框架非常的复杂。
UIAutomation是基于UIKit编写的,它的操作是基于触摸的,可以在iPhone,iPod touch和iPhone simulator中执行,集成在仪器中,这整个代码由JavaScript编写的,与iOS中的可访问性(Accessibility)有着非常密切的联系。对于具有可访问性的的控件,我们可以通过其标签获取或者是设置它的值从而实现相应的操作【2】。但是,正如上面所说的,UIAutomation强烈依赖于Accessibility,也就是说对于不支持Accessibility的控件,在这个框架里是不支持自动化测试的。
在UIAutomation中最常用的就是UIAElement。每一个可以访问的UIKit控件都可以由JavaScript对象UIAElement进行表示。一个App的主窗口包含许多控件,而这些控件组成了UIKit的层次结构,而与UIKit对应的是UIAElement层次结构。我们可以通过命令“logElementTree”来查询控件的层次结构,然后通过通过索引来指向你需要的控件对他进行操作【3】。
在UIAutomation中还包括了模拟用户行为的函数,实现了单击,双击,长按,滑动以及文本输入的功能。而为了提高测试的速度,我们可以使用命令行来进行操作。在自动化测试中处理警报一直是一个痛点,而在UIAutomation中这个问题得到了很好的解决。我们可以在项目中通过框架设置自动关闭任何UIAlertView,避免了由于跳出警报而导致的整个自动化测试的意外退出。
除上面提到的功能以外,UIAutomation框架还支持许多高级的功能,比如说截屏。在移动端测试中可以使用截图测试来捕捉一些页面,然后比对,观察是否与期望一致。该框架还可以启动本地主机上的任意脚本而不只局限于JavaScript,我们可以结合脚本与屏幕快照,实现更加强大的自动化测试。
作为一个自动化测试框架,iOS 4时期UIAutomation本身不是可自动化的,需要通过设备GUI应用程序调用。对于一个需要不断迭代的项目工程来说,这就意味着这个项目不能用作CI构建过程的一部分,并且不能对不同的版本进行脚本化的性能测试。一直到iOS 5时,苹果公司进行改进,支持命令行的执行,UIAutomation才演变成后来的模样【4】。
可即便如此,在实际使用的时候,配置起来还是非常繁琐的,并且该框架的编写十分复杂,编写的测试用例难以维护,故UIAutomation只延续到了iOS 8,在iOS 8之后,苹果公司就不再支持这个框架了。与此同时,苹果公司在iOS 9推出了一个全新的测试框架-XCTest。
以上是毕业论文文献综述,课题毕业论文、任务书、外文翻译、程序设计、图纸设计等资料可联系客服协助查找。