一、自动化比较适合的场景
1、稳定迭代;
2、回归阶段;回归上一版功能,对新功能不适用。
3、研发驱动的底层代码重构;
- 不适合case:无网、支付、需要数据准备的case
二、Appium简介
Appium是目前最为强大的自动化测试框架,支持IOS 与Android。
- IOS: 苹果公司的 UIAutomation。
- Android 4.2+: Google公司的 UiAutomator。
- Android 2.3+: Google公司的 Instrumentation. (Instrumentation 的支持是通过绑定另外一个独立的Selendroid项目来实现的)。
C/S 架构
Appium的核心是一个遵守REST设计风格的web 服务器,它接受客户端的连接,接收客户端的命令,在手机设备上执行命令,然后通过HTTP的响应收集命令执行的结果。
支持多语言
三、case编写思路
过程抽象: 定位-------操作-------等待---------校验---------定位
定位方式
1、文案
2、id
3、xpath
4、类名
5、属性
6、组合
PS:元素信息通过UIAutomator Viewer工具查看:
操作
1、点击;2、输入;3、滑动;
等待、判断页面元素出现或者消失:
1、 sleep
2、 View或文案显示
3、 View或文案消失
校验
按需求~文案显示或消失,View显示或消失,Dialog消失或消失,Toast等等
四、操作步骤
1、JDK、Android、eclipse、appium 等环境安装
2、启动appium server端
3、run,举例说明~~
/**
* example用例
*/
@Test
public void test_000_example() {
Gotocate(1);
Sleep(2000);
//文案
driver.findElementByAndroidUIAutomator("new UiSelector().text(\"餐饮\")").click();
Sleep(2000);
driver.findElementById("com.baidu.lbs.waimai:id/back").click();
Sleep(2000);
//id
driver.findElementById("com.baidu.lbs.waimai:id/left_container").click();
Sleep(2000);
driver.findElementById("com.baidu.lbs.waimai:id/actionbar_left").click();
Sleep(1000);
//xpath
driver.findElementByXPath("//android.widget.LinearLayout/android.widget.LinearLayout[1]/android.widget.RelativeLayout[2]").click();
Sleep(2000);
driver.findElementById("com.baidu.lbs.waimai:id/back").click();
Sleep(2000);
//类名--推荐在View数量小的页面使用
//滑动--下拉
int width = driver.manage().window().getSize().width;
int height = driver.manage().window().getSize().height;
for(int i = 0; i < 10; i++)
{
driver.swipe(width / 2, height * 3 / 4, width / 2, height / 4, 1000);
}
// WaitForStringShow("餐饮");
// WaitForViewShow("com.baidu.lbs.waimai:id/left_container");
// WaitForViewHide("com.baidu.lbs.waimai:id/left_container");
}
五、失败case问题定位
三种可能:1、bug—>提icafe;2、脚本问题->Fix;3、工具问题->寻求其他方式解决;4、环境准备问题(无网、手机无电、有弹窗、目标app后台未杀死等等)
- 定位问题方式:
1、查看失败case截图
2、定位代码行,查看出错原因(函数级)
3、结合功能,确定出错点
特例:crash,无结果收集,需手工复现