非入侵式UI的自动化测试

今天给大家引入一种非入侵式UI的自动化测试方法,是想让大家在写手头脚本的同时也能看到其他的玉石

针对做自动话测试的工程师来说,当拿到测试对象的时候,第一时间会去想这个系统/软件有没有一些built-in的测试方法。比如针对Android来说,我们根据android的发展历史可以枚举出很多

  • 基于API的自动化测试

    • 根据测试的功能模块,会去调用一些sdk写一些APP来测试这些功能是否工作。比如,针对Video的测试,会去写个简单的app (或者调用系统intent)来打开指定媒体文件;根据TCD的说明,设置参数。这样的测试更多的比较适用于集成或者开发时候的测试,用于简单的验证功能的可用性。缺点是 无法模拟用户的行为,会漏掉很多用户场景。
  • 基于UI的自动化测试
    • 举例来说,如果针对android,Google本身已经提供了很多测试方法。一路走来,Google提供了Monkey, Monkeyrunner, InstrumentationTest, Robotium(instrumentation test的变种,三方), uiautomator. 其中UI automator已经是功能非常强大的模拟人行为的自动化方法。笔者所在的部门从android出世就紧跟google的步伐频繁更换各种测试工具(很折腾)。当测试针对跑起来的时候,有些时候是发现问题很难定位。比如Activity的instrumentation测试,它跑起来的时候和被测试app是在同一个进程中的,这本身是一种HOOK的机制,针对比较复杂的错误来说,往往不容易说清楚是app的问题还是脚本本身的问题。包括uiautomator, 因为这本身是一种入侵式的测试。

说这些是为了引入标题的意义,下面这个测试方法就是非入侵(non-intrustive),自动化的过程是真的模拟人的行为的。是芬兰的一批人开发的,关键的技术是用摄像头实时地拍出当前手机的画面,然后用图像识别技术来找出目标图标,然后用机械手指去点击,这是测试界的机器人了。

这里可以看到是这个测试装置是如何工作的,很酷,好处在这里就不用文字多说了. Optofidelity

______但是______

  • 太贵了,小公司很难有钱是买这个高级货
  • 当系统(APP) UI变化的时候,照样会遇到script需要去更新维护的场景
时间: 2024-08-04 12:12:00

非入侵式UI的自动化测试的相关文章

非入侵式JavaScript

非入侵式JavaScript针对哪些情况: 1.并不是每个人的浏览器都支持JavaScript.需要让每个人都能看到全部内容,并且无须在浏览器中执行代码 就能使用该应用. 2.一些运行方式非常奇怪的浏览器.比如视觉受损的人会使用屏幕阅读器,一些手机用户无法使用含有 JavaScript的站点. 3.JavaScript在不同的平台上运行方式不同,IE是造成这一问题的罪魁祸首.需要根据不用的浏览器编写不同 的事件处理代码. 4.这些事件处理器都会引用全局命名空间中的函数.如果想把其他类库集成进来,

go语言学习笔记---非入侵式接口设计探究

关键词:非入侵式 首先我们要知道什么是入侵式接口, 比如定义了接口 Person接口:Fight(),Play(),Zhimaoyi(),Zuofan()方法 Women接口:Zhimaoyi(), Zuofan()方法 Man接口:Fight(),Play()方法 classPerson类实现了Person接口的所有方法 在传统的oo编程语言中,为了得到一个Man的对象,至少要写一个classMan类去实现Man接口,为了得到一个Women的对象又不得不写一个classWomen类去实现Wom

支付宝开源非侵入式 Android 自动化测试工具 Soloπ

Soloπ(SoloPi)是支付宝开源的一个无线化.非侵入式的Android自动化测试工具,公测版拥有录制回放.性能测试.一机多控三项主要功能,能为测试开发人员节省宝贵时间. 本文是SoloPi团队关于项目的深度解读, 作者:乔瑞凯,蚂蚁金服高级无线开发工程师 前言 近年来,随着移动互联网的蓬勃发展,移动测试技术也取得了长足的进步,从早期基于测试脚本的单机自动化,到录制回放.图像识别.云测平台等测试技术贴合实际业务需求深度应用和创新,测试效率从而一次又一次被提升. 本文主要介绍支付宝在移动端上实

BlockCanary 一个轻量的,非侵入式的性能监控组件(阿里)

开发者博客: BlockCanary — 轻松找出Android App界面卡顿元凶 开源代码:moduth/blockcanary BlockCanary对主线程操作进行了完全透明的监控,并能输出有效的信息,帮助开发分析.定位到问题所在,迅速优化应用.其特点有: 非侵入式,简单的两行就打开监控,不需要到处打点,破坏代码优雅性. 精准,输出的信息可以帮助定位到问题所在(精确到行),不需要像Logcat一样,慢慢去找. 目前包括了核心监控输出文件,以及UI显示卡顿信息功能.仅支持Android端.

Java NIO实现非阻塞式socket通信

博主知识水平有限,只能提供一个个人的狭隘的理解,如果有新人读到这儿,建议看一下其他教程或者API,如果不明白,再来看一下:如果有dalao读到这儿,希望能指出理解中的问题~谢谢 Java提供了用于网络通信的socket和serversocket包,然而实现方式是阻塞式的,同一时间点上只能进行一个连接,这会带来不好的体验.当然了,我们也可以通过不断创建线程的方式管理连接,但线程多了的话反而会降低效率.于是Java推出了非阻塞式IO--channel.并且channel提供关于网络通信的相关chan

Java基础:非阻塞式IO

转载请注明出处:jiq?钦's technical Blog 引言 JDK1.4中引入了NIO,即New IO,目的在于提高IO速度.特别注意JavaNIO不完全是非阻塞式IO(No-Blocking IO),因为其中部分通道(如FileChannel)只能运行在阻塞模式下,而其他的通道可以在阻塞式和非阻塞式之间进行选择. 尽管这样,我们还是习惯将Java NIO看作是非阻塞式IO,而前面介绍的面向流(字节/字符)的IO类库则是非阻塞的,详细来看,两者区别如下: IO NIO 面向流(Strea

报错:非介入式客户端验证规则中的验证类型名称必须唯一。下列验证类型出现重复

当在ASP.NET MVC中,针对一个Model进行添加操作的时候,报如下错误: [InvalidOperationException: 非介入式客户端验证规则中的验证类型名称必须唯一.下列验证类型出现重复: range] 原因是第三方验证程序集和MVC固有验证发生名称的冲突. 解决办法:在Model中属性上注释掉第三方程序集提供的验证特性.

UI层自动化测试介绍

UI指的是用户可以用肉眼可以看到的页面. UI层自动化测试的原理.不论是web端还是移动端,原理都是一样的,就是基于页面元素的识别和定位来进行模拟用户行为. 首先识别到某个元素,比如一个按钮,然后定义一个动作,比如点击,这样就通过代码模拟完成了一次按钮的点击,代替了人工去点击.如果后期再加入数据驱动和Page Object思想就基本形成了一个UI层自动化测试框架了 UI层自动化测试的适用范围:不建议做大规模的应用,主要几个原因: 1.UI变化频繁,计划根本赶不上变化 2.初期见效太慢 3.前端开

Android:Service的非绑定式的创建和生命周期

Android的Service若使用非绑定式的创建,则创建后将无法再与它取得联系,即无法传递消息参数等: 所以如果希望创建后仍然与其存在联系,那么可以参考我的前几篇博客<Android:Service的绑定和解绑定,Service与Activity通信>,其中讲到了Service的绑定和与Activity通信的相关内容(如题目o(^▽^)o). Service的非绑定式的创建非常的简单,和启动Activity差不多. 只需要调用startService()即可创建:而调用stopSercice