一.Android与IOS自动化的相同点与异同点
1.相同点
1.1 框架相同Appium+selenium;
1.2 使用JAVA语言;
2.异同点
2.1 Driver不一样;
2.2 平台不一样;
2.3 启动App的方法也不一样;
2.4 android用的是uiautomatorviewer定位元素,IOS用得Appium inspector
二. 框架模式
1.Android与IOS除设备配置,Driver不一样,object操作,Case,场景执行都相同。
2.框架采用的是Object Map+Keyword模式,将设备配置,Driver,调用driver方法,Object,Case,场景分离,
公共方法封装,通过实例化对像的方法调用对像,这样提高了测试框架的复用性和可维护性。
三. 框架合并方案
Android只能在Windows环境+真机执行脚本,IOS只能在Mac环境+真机执行脚本。
1.方案一一套代码Android与IOS分开执行
1.1 设备配置分开:难点IOS与Android调用设备异同;
1.2 Driver可以放一起,在方法与命名上区分开;
1.3 Android与IOS操作方法分开,各自调用各自的定位,其它方法;
1.4 CASE,场景,用例集,ant.xml配置Android与IOS分开;
1.5 object定位对像(Name,id,xpath,...),object操作(click,sendKey,getText,...)方法,object对像库数据分开;
1.6 与数据库交互SQL以属性方式存放到指定文件读取;
1.7 截图,滑屏,等公共方法合并为同一个方法,ios与Android分开实现;
2.方案二一套代码同时兼容Android与IOS
2.1 设备配置分开:难点IOS与Android调用设备异同;
2.2 Driver可以放一起,在方法与命名上区分开;
2.3 Android与IOS操作放在同一个方法,将driver标识参数放到配置文件,在方法中调用配置文件;
2.4 CASE,场景,用例集,ant.xml配置Android与IOS合并执行;
2.5 object定位对像(Name,id,xpath,...),object操作(click,sendKey,getText,...)方法,object对像库数据分开;
2.6 与数据库交互SQL以属性方式存放到指定文件读取;
2.7 截图,滑屏,等公共方法合并为同一个方法,IOS与Android部份方法合并实现;
四. 框架升级方案
1.object定位方法完善封装,ios与Android合并;
2.操作Object事件方法封装,注:Object定位公共方法+操作事件可能会考虑合并;
3.按照PageObject方式封装对像;
4.文本输入参数,SQL参数,Driver标识参数,版本标识参数放在同文件;。
5.类,方法,属性命名区分android与ios;
6.截图,报告将android与ios分开;
7.case,场景,用例集,构建配置按最终方案调整;
8.两个app功能交互;
五. 框架待解决问题
1.不同环境Driver处理,在那个环境就按那个环境方法写
2.两个app功能交互
1)windows环境同时跑两个app,实现交互;
2)分平台执行app1在windows上执行,app2在mac上执行;
3)若1)与2)解决不了只好分开执行,从数据库初始与销毁数据了;
3.版本控制
1)大版本重新创建工程;
2)小版本同时兼容上下两个版本;
3)版本改动小时,在判断时尽量使用兼容性较友好的方法;
注:有想法把版本换成数字型格式(例:265),方变比较;
4)在元素操作中修改,若同一功能多版本重复修改,只保留当前最新的两个版本。
4.平台+版本兼容
判断太多时可能会影响代码执行效率
5.进入某页面,提交,返回这三项需要判断1)是否成功进入指定页面,网络异常处理;
2)提交页面后是否跳转指定页面,若未成功跳转需做补救处理;
3)返回到指定页,或者报错需要退出到指定页,需要添加返回步数及成功判断;
6.IOSName元素定位失败问题
1)先将appium版本,降低一个版本再测试。
2)IOS貌似除了Name就是xpath,若页面变更,维护xpath地址可会较频繁。
7.完善公共方法,android层级定位方法;