android测试
文章平均质量分 67
breakloop
芸芸众生,你总得做点特别的事情。不是矫情,只是不想凑合罢了。
展开
-
JMeter Plugin安装
1.下载Plugins Manager下载Plugins Manager jar包,地址为https://jmeter-plugins.org/install/Install/。将jar包拷贝至%JMETER_HOME%\lib\ext目录下。启动JMeter。可以在Optional菜单下看到Plugins Manager。2.设置代理(Optional)若点击Plugins Manager,出现...原创 2018-03-29 11:40:38 · 1376 阅读 · 0 评论 -
Selenium,WebDriver,Selendroid,Appium的关系
自动化测试中框架较多,其中Selenium,WebDriver,Selendroid,Appium的关联性相对啰嗦。因此,从网上搜罗了些资料,稍做总结。不想长篇大论,也不想说理论代码,只为理清关系。一切都得从Selenium说起。2004年,ThoughtWorks的Jason Huggins发起了Selenium项目。Selenium共经历三个版本,2004年的1.0版,2006年的2.0版,2...原创 2018-03-09 11:29:17 · 3492 阅读 · 1 评论 -
UIAutomator2.0详解(UIDevice篇----获取控件)
UIDevice提供了3个获取控件的方法,和一个判断控件是否存在的方法。public UiObject findObject(UiSelector selector)public UiObject2 findObject(BySelector selector)public List<UiObject2> findObjects(BySelector selector)public boole原创 2017-11-27 23:43:35 · 14139 阅读 · 1 评论 -
UIAutomator2.0详解(UIDevice篇----Wait)
感觉拖了好久,今天将Wait接口的总结补上,顺便把SearchCondition也捎带结了。 直接上图。Wait方法含义:查看查询条件是否符合,若符合,则返回结果。若不符合,则继续等待,直至超时。 返回结果可能为UIObject2对象或者UIObject2对象列表,或者布尔类型。其中,传参SearchCondition是一个抽象类,若想获取其实体对象,需要调用Until工具类。 该类提供了4个原创 2017-11-27 17:55:56 · 9883 阅读 · 5 评论 -
UIAutomator2.0详解(By & BySelector & UIObject2 VS UISelector & UIObject)
BySelector,UISelector为UIAutomator中的查询条件类。UIDevice可以根据所指定的查询条件遍历到期望的控件对象,或者控件对象列表。By & BySelector其中BySelector比较特别,从源码看,其构造函数非public,无法手动创建,因此有了By工具类。By的33个静态方法都以BySelector为输出类型,覆盖BySelector所提供的36个方法。其实,原创 2017-11-25 17:10:12 · 9143 阅读 · 0 评论 -
UIAutomator2.0详解(UIDevice篇----performActionAndWait)
方法含义:执行action后,判断timeout时间内,是否出现Event。方法返回值:布尔型,若有Event发生,则返回true,否则返回false。EventCondition是一个抽象类,可用通过 android.support.test.uiautomator.Until中提供的两个静态方法,来获取实体对象。public static EventCondition<Boolean> ne原创 2017-11-22 00:44:17 · 4038 阅读 · 2 评论 -
UIAutomator2.0详解(UIDevice篇---- 序)
如果我们要对Android APP进行操作,那么设备对象UIDevice是我们必须要获取。通过设备对象UIDevice,进而获取操作控件对象UIObject。UIDevice继承于java.lang.Object。UIAutomator官方文档中,UIDevice中一共提供了62个接口方法(其中有3个,已被抛弃,不建议使用)。数量看似很多,但这些方法按照功能可细分为9类。我们也将分9个章节来总结各类原创 2017-11-18 15:26:47 · 3899 阅读 · 1 评论 -
UIAutomator2.0详解(UIDevice篇----UIWatcher)
UIWatcher,是UIAutomator的接口类,用于处理测试中出现的“意外打断”情况(若不对意外情况进行处理,将导致CASE Failed,影响测试结果)。例如电话打入,闹钟之类的界面插入。该类只有一个函数需要实现。public boolean checkForCondition();该方法的返回值为布尔类型。若为true,则表示该Watcher符合条件,被触发。否则,表示不符合条件,未被触发原创 2017-11-29 19:36:58 · 5999 阅读 · 1 评论 -
Robotium体验----白盒
什么是Robotium?先说一下发音。音标类似于 [rəʊbɒʃɪəm] ,可参照有道。Robotium是一款开源测试框架,官方定义为Android App的黑盒测试框架(官方示例为白盒),适用于native/hybrid app。由于开源,该框架源码可以从github上获取,地址为 https://github.com/RobotiumTech/robotium。 若需要文档,j...原创 2018-02-22 09:12:28 · 2837 阅读 · 0 评论 -
Robotium体验----黑盒&重签名
上篇我们使用了白盒示例,对Robotium进行了简单介绍。但需要提醒的是,Robotium的官方定位还是黑盒测试。那么,我们还是书归正传,看看如何使用Robotium进行黑盒测试。本节,将解决以下几个问题。(1)如何编写黑盒测试案例 (2)如何设置为同一进程 (3)如何进行重新签名创建测试对象在编写测试案例之前,我们先创建一个测试对象。工程名称定义为RobotiumTestOb...原创 2018-02-22 09:23:05 · 689 阅读 · 0 评论 -
JMeter生成报告
生成指令JMeter4.0提供了两种方式,皆为命令行指令。(1) jmeter –n –t <JMX filepath> -l <csv log path> -e –o <report folder path>该方式的输入,为JMX file path,另外两个参数(CSV log和report folder)皆为输出。需要注意的是,csv log不能在r...原创 2018-03-28 18:49:38 · 17197 阅读 · 0 评论 -
Hello JMeter
JMeter简介JMeter是Apache组织开发的基于java的压力测试工具。最初用于web应用测试,后来被扩展至其它领域。JMeter是使用多线程模拟用户群的方式,完成对应用的压力测试。在移动应用领域,压力测试分为两部分,APP端的压力测试和后台的压力测试。APP端的压力测试,通常使用Monkey/MonkeyRunner来进行,而对于后台的压力测试,JMeter是一个不错的选择。相比强大的L...原创 2018-03-27 19:52:44 · 871 阅读 · 0 评论 -
JMeter常用断言
Duriation Assertion用于判断响应时间是否符合要求,仅需要填入期望的上限即可,单位为ms。Size Assertion用于判断Response的Size是否符合要求。需要选择判断条件,和Size即可。Response Assertion用于判断Response是否符合期望值。从图中可以看到,操作比较简单,只需要选择想要比对的项目,比对方式,以及期望值即可。图例中,给出的是对Resp...原创 2018-03-29 17:44:06 · 3962 阅读 · 0 评论 -
Robotium体验----录屏(失败)& 放弃
Robotium除了架构简单的特点之外,录屏是其提供的又一利器,能将操作自动转化为代码,事半功倍。但在尝试过程中,各种碰壁,最终导致放弃使用Robotium框架的念头产生。网上各种教程,要么是基于 eclipse,要么是AS低版本,且年头久远,以致可参考的资料不多。无解之际,直接email其开发人员Renas Reda(renasreda@gmail.com,https://blog.jayway...原创 2018-02-22 15:37:56 · 1059 阅读 · 0 评论 -
Appium日记----开发环境搭建(Mac OS)
本文我们将焦点关注在,如何在mac上搭建appium开发环境。搭建Appium 开发环境,主要是appium server的安装。总的来说,有两种方式。(一)通过npm安装(二)通过下载Appium-Desktop安装通过npm安装1.安装brew.brew是MAC OS上的软件包管理工具,可用于软件的安装和卸载。该工具非MAC OS自带。需要通过Ruby进行安装。MAC OS自带Ruby(与ja...原创 2018-03-09 18:23:59 · 1872 阅读 · 0 评论 -
UIAutomator2.0详解(UIDevice篇----触屏操作1)
UIDevice中有20个方法,是关于触屏操作的,占方法总数的三分之一。数量看似很多,仔细分析一下,也就几类。(1)功能键型,7个,HOME,RECENT,BACK,DELETE,ENTER,MENU,SEARCH (2)开启固定界面型,2个,Notification,Quick Setting (3)方向型,5个,上下左右中 (4)单击、拖拽型,6个由于不想将博文变得冗长,该部分我们将分为两原创 2017-11-03 15:22:20 · 8178 阅读 · 0 评论 -
UIAutomator2.0详解(UIDevice篇----截屏)
UIDevice为截屏提供了两个接口方法。分别是:(1)public boolean takeScreenshot(File storePath) (2)public boolean takeScreenshot(File storePath, float scale, int quality)查看源码,可以发现方法(1)实质上是对方法(2)的调用,2,3传参分别为1.0和90。 scale为缩原创 2017-11-14 17:15:00 · 9393 阅读 · 3 评论 -
UIAutomator2.0详解(UIDevice篇----触屏操作2)
如前文所述,UIDevice有20个接口方法用于触屏操作。前文已记录了两个类型,功能键和开启固定界面,本文将记录按键型的7个接口方法。先列举一下本文涉及的方法。 (1)public boolean pressDPadLeft(),方向键,向左 (2)public boolean pressDPadRight(),方向键,向右 (3)public boolean pressDPadDown(),原创 2017-11-06 18:24:52 · 9674 阅读 · 0 评论 -
UI Automator Viewer的使用
uiautomatorviewer是android SDK自带的工具。通过截屏并分析XML布局文件的方式,为用户提供控件信息查看服务。该工具位于SDK目录下的tools\bin子目录下。可以看到,它是通过bat文件启动的。启动界面如下整个界面分四个区域: (1)工作栏区(上) 共有4个按钮。从左至右分别用于:打开已保存的布局,获取详细布局,获取简洁布局,保存布局。点击保存,将存储两个文件,一个是原创 2017-10-13 15:42:40 · 28699 阅读 · 5 评论 -
uiautomator简介
uiautomator适用于android黑盒测试,无需获得测试APP代码。该框架也是通过模拟用户操作,完成测试的。这是它与其他自动化测试框架的共性。但与monkey,monkeyrunner,instrumentation不同的是,uiautomator不再拘泥于控件坐标,而是通过控件属性(例如,控件的text),进行遍历,从而获取控件对象。我们将从以下几个方面,介绍uiautomator的使用。原创 2017-10-13 14:42:17 · 2636 阅读 · 0 评论 -
通过aapt获取packageName和Launch Activity
若使用uiautomator进行android APP的自动化测试,首要的一步是启动APP,而APP的Package Name和Launch Activity Name是启动的必要参数。在UI Automator View中,通过点击控件,从属性区可以查找到package name属性。但并无Activity的任何信息。Android SDK提供了辅助工具aapt,用于打包生成APK,查看APK信息原创 2017-10-17 22:15:13 · 6426 阅读 · 0 评论 -
Monkey详解(限制型指令篇)
(六)限制性指令Monkey通过两个参数来限制随机事件。 (1)-p:将随机事件限制在指定的package内。 若不使用-p参数,monkey则可以启动系统内所有Activity。原创 2017-08-22 23:01:23 · 2337 阅读 · 0 评论 -
Monkey详解(入门篇)
(一)什么是Monkey,Monkey的用途Monkey是android测试工具。它通过向模拟器或者手机,发送伪随机事件流,来测试程序的健壮性,实现压力测试。(二)Monkey在哪儿,如何运行Monkey位于设备的system\bin下。 直接输入adb shell monkey,或在adb shell之后再次输入monkey。都可触发monkey help.(三)Monkey的指令分类。Monk原创 2017-08-21 23:42:11 · 2909 阅读 · 0 评论 -
Monkey详解(脚本篇---Monkey API)
本篇我们将讲述常用的五个Monkey API。目的在于完成一个简单的测试脚本。(一)五个常用API(1)如何开启Activity 开启一个Activity需要两个参数:Package和ActivityLaunchActivity(com.breakloop.butterknifedemo,com.breakloop.butterknifedemo.MainActivity);(2)如何选择控件原创 2017-08-23 00:14:55 · 5726 阅读 · 0 评论 -
Monkey详解(脚本篇---获取坐标)
坐标是Monkey脚本的核心。原创 2017-08-24 18:43:10 · 5422 阅读 · 0 评论 -
adb总结(一)
(一)什么是adbadb,即Android Debug Bridge,是android SDK自带的命令行工具,位于android SDK的platform-tools目录下。用来连接设备,进行数据传输和DEBUG。(二)组件adb有三个组件,client,deamon,server. client,位于PC端,用户可以通过它来发送指令。 daemon,位于模拟设备/手机端,用于响应用户发来的指原创 2017-08-17 14:54:23 · 633 阅读 · 0 评论 -
UIAutomator2.0详解(UIDevice篇----触屏操作3)
本篇将记录触屏的最后4个方法,用于点击,拖拽和滑动。先列举一下方法 (1)public boolean click(int x, int y),点击 (2)public boolean swipe(int startX, int startY, int endX, int endY, int steps) ,滑动 (3)public boolean swipe(Point[] segments原创 2017-11-07 17:53:57 · 4992 阅读 · 1 评论 -
UIAutomator2.0详解(UIDevice篇----获取UIDevice对象)
UIAutomator2.0再UIDevice类中,提供了两个静态方法,用于获取UIDevice对象。(1)static UIDevice getInstance() (2)static UIDevice getInstance(Instrumentation instrumentation)方法(1)可以不用关注,官方已将该方法废弃。即,方法(2)是唯一获取UIDevice对象的方法。Instr原创 2017-10-31 00:42:40 · 6864 阅读 · 0 评论 -
UIAutomator2.0详解(UIDevice篇----Hierarchy)
UIDevice类提供了4个(实际只有3个)关于Hierarchy(布局层次关系)的接口。 先列举一下接口。(1)public void setCompressedLayoutHeirarchy(boolean compressed) (2)public void dumpWindowHierarchy(File dest) throws IOException (3)public void原创 2017-11-14 15:01:40 · 4680 阅读 · 0 评论 -
UIAutomator2.0详解(UIDevice篇----获取设备名称和Package名称)
UIDevice提供了4个方法来获取设备和Package名称。分别是(1)public String getCurrentActivityName ()用于获取当前Activity的Name,但官方文档中,注明该方法可信度不高,且被弃用。所以无需考虑。(2)public String getCurrentPackageName ()获取当前APP Package的Name,而非当前Activity所原创 2017-11-02 23:23:07 · 6735 阅读 · 0 评论 -
UIAutomator2.0详解(UIDevice篇----LastTraversedText质疑)(未解)
声明:本文只为记录质疑,最终未对方法的使用理解清楚。如有知道的同学,还望指点。 声明:本文只为记录质疑,最终未对方法的使用理解清楚。如有知道的同学,还望指点。 声明:本文只为记录质疑,最终未对方法的使用理解清楚。如有知道的同学,还望指点。UIDevice中提供了两个方法,用于获取/清除LastTraversedText,即上次遍历文本。public String getLastTraversed原创 2017-11-02 22:53:19 · 2568 阅读 · 0 评论 -
UIAutomator2.0详解(IDE View篇)
本篇将讲述,如何在Android Studio2.3.3中查看测试案例运行结果。直接上图。我们来分区域看View的布局。先看左边部分。 主窗口左边部分,又分成了四个区域。(1)红色区域:从上至下,分别为“运行”,“停止”,“保存布局”,“固定”,“关闭View”和“帮助”。(2)蓝色区域:为显示区域,分别显示运行过的测试案例,并在右边显示对应的运行时间。该运行时间,包括@Before和@After原创 2017-10-26 00:57:37 · 4390 阅读 · 0 评论 -
UIAutomator2.0详解(JUnit Annotation篇)
在入门篇,我们提到了UIAutomator2.0与1.0的不同。其中,2.0基于JUnit,使用Annotation声明测试案例,是一个重要的特点。本篇将通过实例来讲述几个常用Annotation的使用。原创 2017-10-25 00:21:51 · 3985 阅读 · 0 评论 -
UIAutomator2.0详解(入门篇)
看过很多博客,对于UIAutomator2.0的讲解,多是从API方面进行理论叙述,个人感觉不好理解,实战性差。因此,想从实战应用的角度,记录UIAutomator2.0的使用。本文为开篇,希望起个好头。(1)什么是UIAutomator?UIAutomator是android的自动化测试框架,可跨APP。与instrumentation框架不同,UIAutomator不需要测试对象源码,因此,为黑原创 2017-10-24 17:00:45 · 63298 阅读 · 10 评论 -
UIAutomator2.0详解(UIDevice篇----waitForWindowUpdate)
书接上文(waitForIdle),我们继续UIDevice的wait方式总结。本篇将着重讲说waitForWindowUpdate方法。public boolean waitForWindowUpdate(final String packageName, long timeout) 我们还以上文滑动的测试案例为实验对象。这里只是将相应的waitForIdle换成waitForWindowUpda原创 2017-11-08 19:52:02 · 5608 阅读 · 0 评论 -
UIAutomator2.0详解(UIDevice篇----waitForIdle)
UIDevice提供了5个方法用于等待。本文我们将一一讲解。 先来看一下,如果没有wait操作,我们的执行效果会是怎样。 我们以之前章节(触屏操作3)中的示例,去除wait后,看一下效果。修改后原创 2017-11-08 19:17:51 · 13313 阅读 · 0 评论 -
UIAutomator2.0详解(UIDevice篇----Screen操作)
UIAutomator2.0的UIDevice类共有62个方法,其中与屏幕相关的操作共有13个,占了总数的五分之一。本篇我们将依次介绍一下这些方法,并通过实例来使用这些方法。(1)public boolean isScreenOn() throws RemoteException 用于判断屏幕是否休眠(即是否亮屏),若未休眠则,返回true,否则返回false.(2)public void wak原创 2017-10-31 23:51:24 · 6905 阅读 · 2 评论 -
Monkey详解(事件型指令篇)
(七)事件型指令 事件类型指令可实现四个主要功能。(1)复现随机事件Monkey最大的特点就是伪随机。之所以加个“伪”字,是因为该随机事件可进行复现。 我们每次执行一组随机事件,系统都会给一个随机的ID,称之为seed。例如C:\Users\XXXX>adb shell monkey -p com.breakloop.butterknifedemo -v 100:Monkey: seed=15原创 2017-08-24 14:09:29 · 10394 阅读 · 0 评论