概述 App自动化测试有很多种方案,有的甚至是支持多平台的,比如:airtest,Appium。 AirTest https://airtest.netease.com/ AirTest是网易开源的App自动化测试框架,同时支持iOS和Android。 使用AirTest实现自动化测试,需要熟悉Python语言,有一定的编程基础。 Appium https://appium.io/ Appium是一个支持多种编程语言,同时也支持多平台的App自动化测试框架。 使用跟Selenium一样的资源定位方式。 【参考】 https://www.cnblogs.com/shiwanghualuo/p/12756311.html Android端自动化脚本工具:Auto.js和Appium
App自动化测试方案 1.1 概述 什么是App自动化?为什么要做App自动化? App自动化是指给 Android或iOS上的软件应用程序做的自动化测试。 App测试自动化的目的如下: 执行自动化测试只会发现很少的bug。 执行自动化冒烟测试或回归测试是用来验证系统状态,而不是找出更多bug。 App源码权限控制,iOS上测试需要源码。实际测试只需SVN下载权限,而不需要上传权限。防止改动SVN上的源码。 1.3 软硬件需求 自动化测试的软硬件需求如下。 (3)持续集成环境Jenkins,定时自动构建和执行测试任务 多台机器上并行App自动化,测试机型适配。 测试结果报告展示,自动邮件展示。 Appium自动化测试一个App的基本过程如下: 基于Appium自动化测试框架,我们要进行的是连接电脑、连接手机、解锁、安装App、卸载App、启动App、元素定位、元素的操作、屏幕的操作、页面等待、
App的布局结构图片从上面这张图中可以看到最左侧是应用的页面的展示,中间部分展示了这个页面的树形结构的 XML 代码。
面对新的测试场景,尤其是手机自动化测试,从技术上看,其难度和挑战不低于传统软件的自动化测试。新入行的同仁需要认真对待,转行App测试的同事需要积极转变心态,手机载体里面还是大有乾坤的。 但是在App的开发节奏中,这种快速迭代、小巧灵活的软件形式,让App测试超乎以前所有的软件形式而存在。大家普遍认为,要做好App测试,必须要进行App自动化测试。 但是App自动化测试又在快速迭代的软件开发周期中显得捉襟见肘,难度非常大,不仅考验着自动化测试手段,还考验着自动化测试的管理。 根据笔者的相关经验以及和App专业测试人员的交流,App的难点大概有以下4个方面: " App的兼容性测试; " App的稳定性测试; " App的功耗测试; " App的自动化测试。 我们可以深入地分析一下,在更大层面上,这些测试之所以让广大App测试同行感觉头疼,本质上是因为App自动化测试手段的不成熟。
同理,我们也可以把其他App定期产生的推送消息当作一种高级别事件,拿到测试场景中来进行设计。当然,当App自动化测试的环境初始化时,一定要阻止这些事件响应的发生,应该在手机的相关设置里将其屏蔽掉。 关于这部分测试,使用自动化测试手段才能化繁为简,并且取得比手工测试更准确、更客观的测试结果。自动化测试手段能够编写同一时钟下的相关操作,以确保测试的及时性和准确性。 当然,不管是多久,对于一款App最少要测试24小时的稳定性,即使是这样,进行24小时连续不间断的手工测试也很难做到,如果要进行N×24小时的稳定性测试,那必须借助自动化手段来完成。 所以自动化测试手段在手机和App的稳定性测试中是一个必选途径。 2.3 兼容性测试 兼容性测试本身比较复杂,实施难度也很大,历来都被测试界公认为"又脏又累"的工作。 常见的性能测试评估指标有CPU占用率、内存占用率、上下行流量测试、耗时、流畅度、电量。 具体App的性能自动化测试不是本书的重点,想深入了解相关内容请读者参阅相关专业书籍。
移动应用测试十大要领: 选择系统平台 选择测试设备的品牌 注意行业和设备区分 关注Android的更新 不要忘记老设备 灵活使用Web分析工具 注意区分地区、运营商和网络技术 掌握智能手机的屏幕分辨率分布情况 关注平板电脑的发展 尽量规避BYOD(自带设备办公)模式的风险 10款移动应用测试框架 Appium (iOS/Android) Calabash (iOS/Android) KIF (iOS) Robolectric (Android) Flip Test (iOS) Gitorious (iOS) Frank (iOS) Kiwi (iOS) App Grader (Android) Cedar (iOS) 从同时支持 Android / iOS这个条件来看, 只有Appium和Calabash能胜任, 但Appium作为后起之秀比Calabash要更为优秀一些 Appium支持更多编程语言; Appium不要求重新编译应用(App Linux 三个系统平台, 但只要在Mac上能同时支持Android / iOS测试, windows和linux上只能支持Android测试 所以我们使用Mac来搭建测试环境
开发移动应用,最耗时耗力的就是手动测试APP的每个功能点或修复bug。有人就会提议App的业务逻辑可以使用nUnit或xUnit测试单元来辅助完成。那用户界面要如何测试? 今天,本文主要介绍如何使用Xamarin提供的UITest来测试app界面。 ? 这些代码需要在App的最终版注释掉。 ("App Launches"); 5: app.Tap("ButtonLogin"); 6: app.Screenshot("When I tap Login"); 7: 通过本篇文章能够让我们实现APP的用户界面的完美自动化测试!这样可以省时省力,高效提升测试效率!
1、获取要测试的app包名和activity名称 启动要测试的app应用后,打开命令行窗口,输入一下命令即可获取到: adb shell dumpsys window w |findstr \/ |findstr
App自动化测试|Appium介绍图片Appium简介Appium是一个开源工具,用于自动化iOS手机、Android手机和Windows桌面平台上的原生、移动Web和混合应用。 如腾讯新闻、淘宝app等。Appium是跨平台的:它允许你用同样的API对多平台(iOS、Android、Windows)写测试。做到在iOS、Android和Windows测试套件之间复用代码。 Appium的理念Appium旨在满足移动端自动化需求的理念,概述为以下四个原则:不应该为了自动化而重新编译你的应用或以任何方式修改它不应该被限制在特定的语言或框架上来编写运行测试移动端自动化框架不应该在自动化接口方面重造轮子移动端自动化框架应该开源 web接口服务,使用Node.js实现Appium-Desktop:Appium Desktop是一款适用于Mac,Windows和Linux的开源应用程序,它以美观而灵活的用户界面为您提供Appium自动化服务器的强大功能 AppiumClient因为Appium是一个C/S结构,有了服务端的肯定还有客户端,Appium Client 就是客户端,它会给服务端 Appium Server 发送请求会话来执行自动化任务。
元素定位方法介绍及应用Appium方法定位原生app元素通过appium inspector工具,可以获取元素的相关信息;在appium中提供了一系列的元素定位API,通过在这些API中输入指定的元素信息 真机的系统版本号 'deviceName':'MuMu', # 填写安卓虚拟机/真机的设备名称 'appPackage':'com.sky.jisuanji', # 填写被测app 包名 'appActivity':'.JisuanjizixieActivity', # 填写被测app的入口 'udid':'127.0.0.1:7555', # 填写通过命令行 adb devices 查看到的udid 'noReset':True, # 重置APP 'unicodeKeyboard':True, # 支持中文输入 android.widget.Button[ends-with(@resource-id,"btn8")]').click()# 2、动态元素 第一次打开 text="id_9" 第二次打开text="id_10
.getAttribute("class")); // 打印输出页面源码 System.out.println(driver.getPageSource());}...上面的代码创建了一个测试方法
uiautomator方法定位原生app元素appium在android端是调用其底层的UIAutomator2自动化测试框架去驱动自动化,在定位元素的时候,可以借助UIAutomator2的语法来实现定位
本文节选自霍格沃兹测试开发学社内部教材 客户端的页面通过 XML 来实现 UI 的布局,页面的 UI 布局作为一个树形结构,而树叶被定义为节点。 App的布局结构 从上面这张图中可以看到最左侧是应用的页面的展示,中间部分展示了这个页面的树形结构的 XML 代码。
.getAttribute("class")); // 打印输出页面源码 System.out.println(driver.getPageSource());}...上面的代码创建了一个测试方法
.getAttribute("class")); // 打印输出页面源码 System.out.println(driver.getPageSource());}...上面的代码创建了一个测试方法
dest = img.getSubimage(p.x, p.y, rect.width, rect.height);ImageIO.write(dest, "png",screenShot);} 由于自动化测试是无人值守的 Assert.fail("没有找到控件");}} 11.16 显示等待方法 在自动化测试的过程中,很多窗体内的数据,需要等待一会儿,才能加载完数据,才能出现一些元素,Driver才能操作这些元素 11.17 在编程中处理adb命令 在对App进行性能测试时,如获取CPU信息的命令为adb shell dumpsys cpuinfo packagename。 11.19 区分RemoteWebDriver、AppiumDriver、AndroidDriver和iOSDriver 在Appium自动化测试中,可能有些初学者会对创建什么类型的驱动产生困惑,本节将介绍各个驱动类型的区别 如代码清单11-34所示,根据Desired Capability中设置的automationName自动化测试引擎的值,针对移动原生应用(Native App),分别使用"@ AndroidFindBy
App的布局结构从上面这张图中可以看到最左侧是应用的页面的展示,中间部分展示了这个页面的树形结构的 XML 代码。
简介 移动APP的UI自动化测试长久以来一直是一个难点,难点在于UI的”变”, 变化导致自动化用例的大量维护。从分层测试的角度,自动化测试应该逐层进行。 最大量实现自动化测试的应该是单元测试,最容易实现也最容易在早期发现问题;其次是接口级测试,以验证逻辑为目的进行自动化,由于接口的相对稳定,自动化测试成本相对也可以接受;自动化成本最大的便是UI级自动化测试 10、Cafe http://cafe.baidu.com/#panel1 Cafe是百度出品的一个基于Robotium的测试框架,它提供了跨进程的测试解决方案。 如自动化测试中有跨APP操作,可以结合UiAutomator实现。 支持BDD的自动化框架比较少,可以在calabash和RoboSpock及Jbehave之间选择。 “app inspector”—Symbiote,可以用它来获得运行中app的详细信息,便于开发者将来进行测试回顾。
简介 移动APP的UI自动化测试长久以来一直是一个难点,难点在于UI的”变”, 变化导致自动化用例的大量维护。从分层测试的角度,自动化测试应该逐层进行。 最大量实现自动化测试的应该是单元测试,最容易实现也最容易在早期发现问题;其次是接口级测试,以验证逻辑为目的进行自动化,由于接口的相对稳定,自动化测试成本相对也可以接受;自动化成本最大的便是UI级自动化测试 本文通过分析几种自动化框架的异同,使测试人员在选择自动化框架时有所参考。 ? Android自动化框架 1. 10. Cafe http://cafe.baidu.com/#panel1 Cafe是百度出品的一个基于Robotium的测试框架,它提供了跨进程的测试解决方案。 11. 如自动化测试中有跨APP操作,可以结合UiAutomator实现。 支持BDD的自动化框架比较少,可以在calabash 和 RoboSpock及Jbehave之间选择。
因此开发了一套基于uiautomator2+python UI自动化工具,可以实现在电脑端控制手机demo开始收音+播放待测音频+保存识别结果的APP自动化效果测试工具。 2. uiautomator2安装及介绍 uiautomator2是一个自动化测试开源工具,仅支持Android平台的原生应用测试。 脚本来实现app的自动化测试。 ,与selenium 和 unittest 的 Web UI自动化测试框架相类似,基于Android系统有屏设备的自动化测试解决方案,支持对被测设备的模拟点击、截图、获取返回结果等功能。 可用于所有Android带屏设备的APP测试。