上篇主要讲了一些基础知识,这篇主要讲讲用例编写的一些规范的和Cucumber
的一些知识.
Native 控件的适配
iOS工程这里不需要大改什么就可以支持自动化测试了,只需要在你想要操作的控件上加一个标记就OK。
_codeInputview.accessibilityLabel = @"请输入兑换码";
在iOS里面90%
的控件都是可以直接设置accessibilityLabel
属性,但是有些控件就没有,像常见的UICollectionViewCell
就没有,这样就需要我们自己实现了,具体实现看我下面示例(见文章末尾)。
目录结构
Features
这里的feature
文件就是Cucumber
自带的通过自然语言来编写的用例文件,也就是最终的测试用例代码文件,可以英文,也可以汉语等其它语言(日,韩,意)。Cucumber
其中的一个亮点就是可以直接使用我们测试写的TC,这个也省了好多功夫。
注意:
1.每一个feature文件中编写的步骤,都需要在Step Definitions文件中通过Ruby定义
2.文件命名规范:必须以英文命名,若是单个单词:XXX.feature; 多个单词:XXX_XXX.feature
Step Definitions
本文件夹中包含了Calabash-ios事先已经定义的一些通用的step。用户可根据自己的需求,定义更加复杂的步骤。
步骤定义的其实就是向代码段-步-步定义框架中填入代码的过程。用代码来描述你期望的,该步骤应该执行的动作。
Step
分为二种:Predefined steps
和 Custom steps
.
Predefined steps
:( 截屏
,Touch
,Tap
,Input
,Switches
,Map
,Swipes
,Pinch
,Scrolling
,Assertions
)
- 不能被翻译我们自己项目中的语言
- 功能有限
- 速度慢
Custom steps:
在Cucumber
中,一个步骤定义包括2个方面:一个正则表达式(匹配的步骤中文本)和一个Ruby 代码块。
用例编写
Sample用例:
功能: 登录
作为一名盒马的用户
我想使用淘宝账号和密码来登录
这样我就能使用盒马应用程序了
场景: 成功登录
假如我运行了盒马但是没有登录
当我使用淘宝账号"aty889"和密码"taobao1234"登录盒马
那么我会看到"我的"
并且我会看到"生鲜分类"
并且我会看到"首页"
场景大纲: 登录失败
假如我运行了盒马但是没有登录
当我点击"登录"
而且我清空了"淘宝账号/手机号码"
同时我在"淘宝账号/手机号码"中输入了"<用户名>"
并且我在"密码"中输入了"<密码>"
并且我点击"登录"
那么我会看到警告"<警告消息>"
例子:
| 用户名 | 密码 | 警告消息 |
| | | 请输入用户名 |
标准格式:
#encoding:utf-8
#language:zh-CN
功能: //描述测试功能点
作为….. //缩进两格,描述时注意要有前提条件(作为),
我….. 主语(我)、和目的(这样)
这样…..
场景: //测试案例名称
…..
…..
场景大纲: //测试案例名称
假如….. //测试案例内容
当我…..
而且….
例子: //缩进两格
| 用户名 | 密码 | 警告消息 |
| 13760128952 | | 密码不能为空 |
| | 222222 | 用户名不能为空 |
| 13760128952 | | 密码不能为空 |
常用关键字:
| 关键字 | 描述 |
| ------------ | ------------- | ------------ |
| feature | 功能 |
| background |背景 |
|scenario| 场景、剧本 |
|scenario_outline| 场景大纲、剧本大纲|
|examples| 例子|
|given| 假如、假设、假定|
|when| 当|
|then| 那么|
|and| 而且、并且、同时|
|but| 但是|
|given(code)|假如、假设、假定|
|when(code)| 当|
|then(code)|那么|
|and(code)| 而且、并且、同时|
|but(code)| 但是|
步骤定义
完整的步骤定义是一个函数:
正则表达式作为函数名
匹配值为参数
以测试人员输入的代码作为内容
注意:
1. 所有匹配值(即参数),都是以字符串的形式传递
2. 步骤定义完成后运行cucumber,cucumber会找到步骤定义,并按照其代码去执行
用例执行与报告生成
案例执行,终端:
cucumber features/login.feature:9:16
cucumber features
: 文件地址
login.feature
: 文件名称
9:16
: 案例首行和尾行+1
报告生成(HTML格式):
cucumber –format html –out test-report.html
界面可用性标签查询
对于界面上一些图标、文字,测试人员需要确认这些元素在代码中的可用性标签内容,如:界面上的返回按钮,在代码中的标签是否是“返回”
查询命令:
calabash-ios console->query(“view marked: ‘XXXXXX’”)
XXXXXX
: 可用性标签名称
查询全部:
query(“*”)
测试工程师的要求
-
能看懂代码,可以给控件设置
accessibilityLabel
属性 -
会Ruby基础
-
能看的懂错误
对测试人员要求就这么简单,So easy !
当然最好还是需要一个全栈工程师.
参考文档:
-
[Ruby](http:// ruby-China.org)
附件:
UICollectionViewCell
添加 accessibilityLabel
属性
UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"userIdentifier" forIndexPath:indexPath];
[cell setIsAccessibilityElement:YES];
在UICollectionViewCell
的子类中重写下面的方法
- (BOOL)isAccessibilityElement{
return YES;
}
- (NSString *)accessibilityLabel {
return self.labelTitle.text;
}
- (UIAccessibilityTraits)accessibilityTraits {
return UIAccessibilityTraitStaticText;
}
- (void)accessibilityElementDidBecomeFocused{
UICollectionView *collectionView = (UICollectionView *)self.superview;
[collectionView scrollToItemAtIndexPath:[collectionView indexPathForCell:self] atScrollPosition:UICollectionViewScrollPositionCenteredHorizontally|UICollectionViewScrollPositionCenteredVertically animated:NO];
UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, self);
}
这样UICollectionViewCell
也就有了 accessibilityLabel
属性了。
网友评论