自动化测试/CI测试iOS精品文章-单元测试自动化测试

ios自动化测试(xcode自带的UI测试)

2016-10-27  本文已影响6553人  wangyu2488

一.使用前景
一般app开发完成后,打出ipa包,供测试mm下载安装测试。测试mm会打开app进行各种按键切换手势动作(其实主要就是UI交互操作),很是繁琐,尤其是回归测试,会做很多重复的工作。
为了减轻测试mm的压力,苹果在ios9后,引入和UI测试相关API。开发就可以比把较固定的和通用的测试用例做成UI测试用例,一键运行所有用例,极大的减轻了测试mm的工作压力。
运行用例效果图如下(红×就是用例不通过的):


Paste_Image.png

二.给工程添加UI测试模块
ios9后,XCTEST框架增加了UI测试相关的API(UI测试) <语言是oc或swift语言>
1.新建的时候选择如下模块


Paste_Image.png

2.如果新建的时候完了,也可以如下方法添加(添加target)


Paste_Image.png
3.创建好后默认代码解释
Paste_Image.png
4.命名规范 ui测试用例要以test开头命名
-(void)testExample1
{
    XCUIApplication *app = [[XCUIApplication alloc] init];
    [app.buttons[@"自选"] tap];
    XCUIElement *textField = [app.textFields elementBoundByIndex:0];
    XCTAssert(textField.exists);
    [textField tap];
    [textField typeText:@"500"];
    [app.buttons[@"计算"] tap];
    //添加自己的测试代码(断言)
    XCUIElement *lbl = app.staticTexts[@"计算结果=45"];
    XCTAssert(lbl.exists);
}

三.具体编码过程
一般先用脚本录制工具(UI Recording)进行简单逻辑的代码生成,之后在对代码进行修改,添加断言或循环操作之类的
1.脚本录制工具(UI Recording)


Paste_Image.png

录制脚本源码(默认应该会有错误)


Paste_Image.png

2.修改脚本


Paste_Image.png

四.代码编写和修改

  1. 头文件相关类


    Paste_Image.png

    2.UI测试常用的API(理解子元素和后代元素的层次关系)

//所有后代元素
-(XCUIElementQuery*)descendantsMatchingType:(XCUIElementType)type;
//直接子元素
-(XCUIElementQuery*)childrenMatchingType:(XCUIElementType)type;
//模拟文本框输入
-(void)typeText:(NSString*)text;
//模拟单机
-(void)tap;

3.常用场景
3.1判读是否含有指静态文本

XCUIApplication* app = [[XCUIApplicationalloc] init];
//获得当前界面中的表视图
XCUIElement* tableView = [app.tableselementBoundByIndex:0];
XCUIElement* cell1 = [tableView.cells elementBoundByIndex:0];
//法1 推荐使用
XCTAssert(cell1.staticTexts[@"Welcome"].exists);
//法2 
XCTAssert([[cell1 descendantsMatchingType:XCUIElementTypeStaticText] objectForKeyedSubscript:@"Welcome"].exists);

3.2点击导航栏上的回退按钮

XCUIApplication* app = [[XCUIApplication alloc] init];
//点击添加“增加”按钮,跳转到增加界面
[app.navigationBars[@"导航栏"].buttons[@"back"] tap];

4.使用的时候注意点
4.1.如果是xib可以用苹果的辅助功能


Paste_Image.png
XCUIElement *textField = app.textFields[@"revenueTxt"];

因为我用的是代码生成的,用的是如下方法替代

XCUIElement *textField = [app.textFields elementBoundByIndex:0];

五.具体使用例子
1.数据库(查增删)UI测试用例
源代码下载:https://pan.baidu.com/s/1c1EtCcg
2.简单效果图

Paste_Image.png
3.注意UI用例测试如果不是很独立,相互之间有联系,出现红x不一定代表代码逻辑有问题,有时候可能是很多用例有先后顺序,需要具体评估(造点数据,在重新运行下用例就可以)

如果您发现本文对你有所帮助,如果您认为其他人也可能受益,请把它分享出去。

上一篇下一篇

猜你喜欢

热点阅读