ios UIAutomation 测试

转载 出处Taobao QA Team,原文地址:http://qa.taobao.com/?p=13737

 

无线客户端的发展很快,特别针对是android和ios两款无线操作系统的客户端应用,相应的测试工具也应运而生,这里主要给大家介绍一些针对iPhone App的自动化测试工具。

         首先,我们把这些测试框架分为三大类:接口测试工具、注入式UI测试工具、录放式UI测试工具。

        一、接口测试工具,主要在iphone SDK提供的单元测试框架的基础上,完成代码的接口功能测试。

                 这类工具用的比较多的是SDK本身提供的test unit,以及google的google-toolbox-for-mac工具。google的GTM工具是在test unit上做了一层封装,可以简单、快速的完成测试脚本编写,提供完善的测试日志和报告,并提供部分简单的UI测试功能。

                 详细的文档可以参考这里:http://code.google.com/p/google-toolbox-for-mac/wiki/iPhoneUnitTesting

         二、注入式UI测试工具,可以完成对被测应用的UI功能测试,需要在源代码中加入一些必须的测试代码。优点是可以模拟用户的操作,测试被测应用的相关功能,可以覆盖比较全的应用功能。缺点是因为在源代码中插入了必须的测试代码,而这些应用发布时需要去除,引入了被测应用和发布应用不一致的风险。

                  UISpec,提供了用例运行前的准备和运行的恢复功能,UIQuery功能,以及较为完善的校验功能,但该工具的使用比较复杂,脚本的编写也很繁琐,虽然对UI可以query,但无法方便、清晰、直观的查看应用控件的属性。

                  详细的文档可以参考这里:http://code.google.com/p/uispec/wiki/Documentation

                  Bromine,脚本编写简单,对控件的操作,完全模拟touch事件实现,但控件的定位通过对控件重画,并插入定位需要的信息,xpath的描述串也稍显复杂,校验功能相对较弱。

                  详细的文档可以参考这里:http://code.google.com/p/bromine/

         三、录放式UI测试工具,主要通过录制用户的操作行为,通过回放来完成对被测应用的功能测试,这类工具对UI的功能测试相对是比较弱的。

                  比较常用的有Instrument、FoneMonke 。

                  Instrument,是iOS提供的主要用于分析应用的性能和用户行为的工具,利用它可以完成对被测应用的简单的UI测试。

                  FoneMonke,是国外提供的一个开源的,免费的录制/回放工具。网站:http://www.gorillalogic.com/fonemonkey

          以上是了解的一些针对iPhone App的自动化测试工具,大家感兴趣的可以了解了解,欢迎交流、学习!

加上一个ios SDK自带的功能:用脚本编程+control tag+intrument 工具

http://developer.apple.com/library/ios/#documentation/DeveloperTools/Reference/UIAutomationRef/_index.html

The main thing is to tag all your UI controls in Interface Builder with names, by setting the Accessability label to a unique value for the view.




Once these are all set and you've rebuilt your application for debug, you need to write a Javascript file that runs your application and tests to make sure that everything is running as expected.  Here's a sample file, followed by some commentary.

var view = UIATarget.localTarget().frontMostApp().mainWindow().elements()[2];
var textfields = view.textFields();
if (textfields.length != 2) {
    UIALogger.logFail("Wrong number of text fields");
} else {
    UIALogger.logPass("Right number of text fields");
}
var passwordfields = view.secureTextFields();
if (passwordfields.length != 1) {
    UIALogger.logFail("Wrong number of password fields");
} else {
    UIALogger.logPass("Right number of password fields");
}
textfields["username"].setValue("tturner");
passwordfields[0].setValue("tod");
view.buttons()["logon"].tap();
var errorVal = view.staticTexts()["error"].value();
if (errorVal != "Invalid User Name or Password") {
    UIALogger.logFail("Did Not Get Invalid Username Error: " + errorVal);
} else {
    UIALogger.logPass("Username Error Detected");
}



 

你可能感兴趣的:(ios,UI,测试,application,工具,测试工具)