×

安卓自动化测试框架

安卓自动化测试框架(如何选择Android自动化框架的几点拙见)

admin admin 发表于2023-09-16 08:17:59 浏览48 评论0

抢沙发发表评论

本文目录

如何选择Android自动化框架的几点拙见

首先由于我自己也是个新手,也是在学习各种框架然后给公司项目选定相应自动化框架,研究移动自动化测试框架也就近段时间而已,所以我只能从我自己今天为止的认知角度给各个框架抒发我自己的拙见,你看是否能从中接纳一二吧(对于我自己的话还需要再花一段时间去学习各个框架才能确定哪个/些是适合我们项目的了,也许到时我会写个正式的总结)。根据你的要求,应该不会考虑MonkeyRunner和Robotium,但我还是想跟你说下其实Robotium还是挺不错的,如果你没有考虑跨进程调用其他APP的话。至于MonkeyRunner我就不大推荐了,你可以看下我对金阳光老师的一个评论的回复《MonkenRunner通过HierarchyViewer定位控件的方法和建议》(文章最后我干脆也贴出来了)。至于Robotium,你对比下本人博客里面各个框架编写的Note的测试示例就可以看出来Robotium相对其他框架会简介很多,况且发展的比UIAutomator和Appium长久很多,所以也应该会更成熟,和Eclipse集成调试起来也很方便。比起后两者如果有不足的话我觉得就以下几点吧:1. 所有的操作抽象到一个Solo类里面,缺乏面向对象的编程思想,有时会让人不适应。如果你熟悉C语言等面向过程的语言思想的话应该没有问题。2. 获取控件的方法比较缺乏,大概就几种:通过Text,ID, ClassName,Index。没有后两者的多种多样3. 跨进程:因为底层使用Instrument框架,测试包和被测应用包打包在一起作为一个进程运行而线程间通过instrumentaiton进行通信,导致了逃不出这个进程设沙箱(sandbox)4. 做不了模拟键盘的测试(但同时这个也是Robotium非常巨大的优点,因为不像后两者那样需要调用键盘导致输入的各种各样的问题),因为Robotium输入读出其实是直接对控件的text属性进行操作没有通过键盘驱动的,你如果做过UI编程应该就明白我的意思了,因为记住你的测试代码和目标应用是打包在同一个进程中的,同一个进程中想访问另外一个线程的某个变量,运用相应的IPC(Interprocess Communication)机制当然是没有问题的了。然后到了你问的主题UIAutomator和Appium的对比,我个人是这样看的:1. UIAutomator是亲爹(google)生的,所以可以保证后续的开发维护力量,除非google倒闭(这里我有点不懂的是为什么google对Monkeyrunner的态度这么让人摸不着头脑,具体请看以上我说的对MonkeyRunner的评论)2. Appium虽然不是亲爹生的,但是干爹实力雄厚把它武装的无所不能(android,ios,firefox,browser通杀),单单以android来说,底层用得还是UIAutomator,所以只要它能及时跟上UIAutomator的更新,功能上面我不是很担心。3. 但是也这是Appium的这种架构:UIautomator/seledroid《-》Appium Server《-》Selenium/AppiumDriver《-》Test Case (《Appium架构框架图整理》

如何使用python做android的自动化测试

下面我们开始第一个简单的Android UI自动化测试

1.使用adb命令连接真机或模拟器 2.打开uiautomatorviewer工具 3.使用uiautomatorviewer工具获取应用的元素进行定位 4.简单介绍unittest框架的使用方法 5.使用Python编写猫宁考勤应用注册模块的自动化测试

1.使用adb命令连接真机或模拟器: 手机USB连接电脑,进入开发者模式;

cmd命令:adb devices ,查看手机是否连接

显示错误

这是因为adb的端口被占用,我们需要查看是什么应用占用了这个端口(5037为adb默认端口)

cmd命令 : netstat -aon|findstr “5037”

可以看到占用5037端口对应的程序的PID号为8388;

cmd命令 : tasklist|findstr “8388”

可以看出8388对应的程序为kadb.exe,说明该程序正在使用5037端口;

这时我们需要在任务管理器中结束kadb.exe进程,按快捷键“Ctrl+Shift+Esc”调出Windows任务管理器,找到“kadb.exe”,单击下方的结束进程即可!

我们再次运行cmd命令:adb devices

这一步成功后我们才能运行sdk自带的uiautomatorviewer; 我们需要用uiautomatorviewer工具来获取元素,用于定位。

cmd命令:uiautomatorviewer,打开uiautomatorviewer界面

或者找到sdk目录:sdk\tools中找到uiautomatorviewer.bat文件双击运行

2.打开uiautomatorviewer工具

我们可以根据text,resource-id,class等元素进行定位

3.使用uiautomatorviewer工具获取应用的元素进行定位

这里我使用python自带的IDLE进行编写测试脚本,打开python文件找到IDLE(python GUI)双击打开,如图:

4.简单介绍unittest框架的使用方法

有什么好的开源自动化测试框架可以推荐

主要看题主想要测试哪块:通用的:推荐:testng 是一个测试用例的管理的一个框架,可通用如果你是测web的 那么可以使用seleium如果测试Android 可以使用appium或者robotium如果测试接口,可以封装 httpClient

有没有一种手机自动化测试框架或工具可以实现被测手机不用连接电脑并且无需被测APK源码

当然有,你可以用Eclipse或者Android studio做一个拥有界面的apk就可以了只要apk拥有界面,进行控制测试的开始 和 结束 就行了,不需要连接电脑其实没有界面也是可以的,只是最开始执行的时候连一下电脑,用adb shell start am挂起class就行了编程的东西我还不是很懂,但是确实是可以的,我使用过两种不同的系统测试apk,不过都是公司自己方便测试自己研发的,其实也不算难,懂Android开发的估计给些时间,也能独立做出来

android自动化测试框架有哪些

1、Monkey是Android SDK自带的测试工具,在测试过程中会向系统发送伪随机的用户事件流,如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试,也有日志输出。实际上该工具只能做程序做一些压力测试,由于测试事件和数据都是随机的,不能自定义,所以有很大的局限性。2、MonkeyRunner也是Android SDK提供的测试工具。严格意义上来说MonkeyRunner其实是一个Api工具包,比Monkey强大,可以编写测试脚本来自定义数据、事件。缺点是脚本用Python来写,对测试人员来说要求较高,有比较大的学习成本。

Android 手机自动化测试工具有哪几种

1、Monkey是AndroidSDK自带的测试工具,在测试过程中会向系统发送伪随机的用户事件流,如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试,也有日志输出。实际上该工具只能做程序做一些压力测试,由于测试事件和数据都是随机的,不能自定义,所以有很大的局限性。2、MonkeyRunner也是AndroidSDK提供的测试工具。严格意义上来说MonkeyRunner其实是一个Api工具包,比Monkey强大,可以编写测试脚本来自定义数据、事件。缺点是脚本用Python来写,对测试人员来说要求较高,有比较大的学习成本。3、Instrumentation是早期Google提供的Android自动化测试工具类,虽然在那时候JUnit也可以对Android进行测试,但是Instrumentation允许你对应用程序做更为复杂的测试,甚至是框架层面的。通过Instrumentation你可以模拟按键按下、抬起、屏幕点击、滚动等事件。Instrumentation是通过将主程序和测试程序运行在同一个进程来实现这些功能,你可以把Instrumentation看成一个类似Activity或者Service并且不带界面的组件,在程序运行期间监控你的主程序。缺点是对测试人员来说编写代码能力要求较高,需要对Android相关知识有一定了解,还需要配置AndroidManifest.xml文件,不能跨多个App。4、UiAutomator也是Android提供的自动化测试框架,基本上支持所有的Android事件操作,对比Instrumentation它不需要测试人员了解代码实现细节(可以用UiAutomatorviewer抓去App页面上的控件属性而不看源码)。基于Java,测试代码结构简单、编写容易、学习成本,一次编译,所有设备或模拟器都能运行测试,能跨App(比如:很多App有选择相册、打开相机拍照,这就是跨App测试)。缺点是只支持SDK16(Android4.1)及以上,不支持HybirdApp、WebApp。5、TestWriter是上海博为峰结合多年为企业做测试服务的经验所研发的一款具有自主知识产权的自动化测试工具,跨Web、Android、iOS三大平台,为企业用户提供真正的低成本、高效率的自动化测试,引领软件测试自动化运用由技术层面向业务层面转变。用户可在TestWriter中通过统一图形化界面轻松创建测试计划,并驱动执行引擎完成自动化测试任务,有效降低了测试人员能力要求及脚本维护工作量,让自动化测试更简单,更专注于业务。1、完全零编码TestWriter引入对象库,支持对页面元素的智能分析,自动生成操作对象库,或通过简单的点击生成操作对象库;2、图形化界面通过图形化界面,对测试对象、测试步骤、用例等层层封装映射,清晰理清业务关系;业务变动、界面调整时仅需修改相应业务库内容;3、简单易操作支持分布式测试,通过拟定计划,自动匹配测试环境并分配执行机器,无需测试人员干预,轻松实现自动定期回归;4、结果更直观实时查看执行情况,自动记录测试结果,并对错误步骤进行问题分析及错误时UI截图。

如何在Android Studio使用Espresso框架自动化测试

1、build.gradle里,dependencies下增加androidTestCompile’com.jayway.android.robotium:robotium-solo:5.1’。如果缺少这个配置,则在测试代码里将无法用到robotium的包。2、我们项目的代码结构是老式的,所以需要重新设置test的地址,即在android.sourceSets下新增androidTest.setRoot(’tests’)。可以取tests外的其他名字,然后在跟build.gradle同级的地方建立这个文件夹,没有额外设置的话,测试代码的放置需要按照新式结构,即tests\java下。如果没有正确配置,则这个测试代码将不可见。除了代码改动外,如果要在AndroidStudio里面跑,则还需要额外配置:菜单Run-》EditConfiguration,在AndroidTests下新增条目,然后正确配置,就可以了:选择哪个Module,选择测试的范围(Module或Package等),选择TargetDevice。这个是配置的东西,没有法提交到Git。下面是个简单的例子,我们的app在测试的环境下会先弹出一个选环境的AlertDialog,所以需要clickOnText:/***CreatedbySamuelCaion5/20/14.*/publicclassMainActivityTestextendsActivityInstrumentationTestCase2{privateSolosolo;publicMainActivityTest(){super(LogoActivity.class);}@OverridepublicvoidsetUp()throwsException{super.setUp();solo=newSolo(getInstrumentation(),getActivity());}publicvoidtestNavigateToHomeScreen()throwsException{//chooseenvironmentsolo.waitForDialogToOpen();solo.clickOnText(“qa“);solo.clickOnButton(“OK“);//asserthomescreenfinishedloading.assertTrue(solo.waitForText(“Diapering“));}}