超好用的手机开源自动化测试工具分享

article/2025/10/7 16:30:00

随着消费者对移动应用使用的占比增加, APP测试越来越被重视! 在现已出现的开源移动自动化测试工具中,总结了几个最实用的,希望对大家有帮助:

一、Calabash(适用于Android和iOS)

Calabash-android是支持android的UI自动化测试框架,PC端使用了cucumber框架,通过http和json与模拟器和真机上安装的测试apk通信,测试apk调用robotium的方法来进行UI自动化测试,支持webview操作。

Calabash-android 是支持 android 的 UI 自动化测试框架,PC 端使用了 cucumber 框架,通过 http 和 json 与模拟器和真机上安装的测试 apk 通信,测试 apk 调用 Robotium 的方法来进行 UI 自动化测试,支持 webview 操作, 依靠Ruby代码的支持.

Calabash-android 架构图

在这里插入图片描述
1、Features

这里的 feature 就是 cucumber 的 feature,用来描述 user stories 。

2、Step Definitions

Calabash Android 事先已经定义了一些通用的 step。你可以根据自己的需求,定义更加复杂的步骤。

3、Your app

测试之前,你不必对你的应用修改。(这里其实是有问题,后面我们会说到。)

Instrumentation Test Server —— 这是一个应用,在运行测试的时候会被安装到设备中去。这个应用是基于 Android SDK 里的 ActivityInstrumentationTestCase2。它是 Calabash Android 框架的一部分。Robotium 就集成在这个应用里.

二、Appium(Android和iOS)

1、Appium 是什么?

Appium是一个开源的,适用于原生或混合移动应用( hybrid mobile apps )的自动化测试工具,Appium应用WebDriver: JSON wire protocol驱动安卓和iOS移动应用。

2、Appium的特点:

支持多平台(Android、iOS等)

支持多语言(python、java、ruby、js、c#等)

Appium是跨平台的,可以用在OSX,Windows以及Linux桌面系统上运行。

Appium选择了Client/Server的设计模式。只要client能够发送http请求给server,client用什么语言来实现都是可以的,这就是如何做到支持多语言的原因;

Appium扩展了WebDriver的协议,没有自己重新去实现一套。这样的好处是以前的WebDriver API能够直接被继承过来,以前的Selenium(WebDriver)各种语言的binding都可以拿来就用,省去了为每种语言开发一个client的工作量。

3、Appium的哲学:

不需要重新编译或者修改应用

不被一种语言或者框架约束

不重复造轮子

开源免费

Appium测试相当于黑盒测试。这个测试框架,一般用于测试UI逻辑的正确性,不能升入测试业务逻辑流程。

三、Robotium(Android )

Robotium是Android平台上类似于selenium的开源自动化测试框架,主要针对Android平台的应用进行黑盒自动化测试,它提供了模拟各种手势操作(点击、长按、滑动等)、查找和断言机制的API,能够对各种控件进行操作。有JUnit基础的开发者,还是非常容易上手的。

Robotium结合Android官方提供的测试框架达到对应用程序进行自动化的测试。另外,Robotium 4.0版本已经支持对WebView的操作。Robotium的核心类是Solo,通过Solo可以对控件进行各种操作. Robotium 对Activity,Dialog,Toast,Menu 都是支持的。

最明显的缺点有两个:

一是必须要和被测系统签名保持一致,

二是不能做任何跨进程的操作。

robotium 是 android 自带类 Instrumentation 的一个封装,方便测试人员直接调用封装好的接口,也就是说,实际上我们直接使用Instrumentation 也能够进行自动化测试,但robotium可以简化我们的测试步骤,我们只需要调用某个robotium的API,传几个参数,就等于我们在调用一部分的Instrumentation帮我们实现测试。

四、Frank(iOS)

Frank 提供了针对iOS平台的功能测试能力,可以模拟用户的操作对应用程序进行黑盒测试,并且使用Cucumber编写测试用例,使测试用例如同自然语言一样描述功能需求,让测试以“可执行的文档”的形式成为业务客户与交付团队之间的桥梁。

Frank 是 iOS 开发环境下一款实现自动测试的工具,Xcode 环境下开发完成后,通过 Frank 实现结构化的测试用例,其底层语言为 Ruby,作为一款开源的 iOS 测试工具,在国外已经有广泛的应用。但是国内相关资料却比较少。其最大的优点是允许我们用熟悉的自然语言实现实际的操作逻辑。

它提供了针对 iOS 平台的功能测试能力,可以模拟用户的操作对应用程序进行黑盒测试,并且使用 Cucumber 编写测试用例,使测试用例如同自然语言一样描述功能需求,让测试以“可执行的文档”的形式成为业务客户与交付团队之间的桥梁。

优点:

测试场景是在 Cucumber 的帮助下,用可理解的英语句子写的,还有活跃的社区支持,以及不断扩大中的库。

缺点:

对手势的支持有限,所以在设备上运行测试有点难。

五、UIAutomator(Android)

uiautomator是Android官方推出的安卓应用界面自动化测试工具,是理想的针对APK进行自动化功能回归测试的利器。能够根据文本、控件id、坐标进行点击、长按、滑动、查找等操作,实现与人一致的手动操作逻辑,根据测试用例使用python编码后根据指定命令操作,检查预期结果,进行测试。最终通过单元测试执行用例脚本生成相应报告

Android SDK提供下述工具来支持自动化的功能界面测试:

1、uiautomatorviewer:

扫描、分析待测应用的UI组件的图像工具。

2、uiautomator:

包含创建定制功能界面测试API和自动化运行测试用例的引擎的JAVA类库。

3、Uiautomator常用API了解

以下是uiautomator最基本最常用到的三个类,这里只是简单地介绍这三个类的作用,后续本人还会写相关随笔详细说明。

1)UiDevice:

用于获取设备的各种状态。

获取设备信息:屏幕分辨率、选装状态、亮灭屏…

操作:按键、坐标操作、滑动、拖拽、截图…

监听器功能

2)UiSelector:

通过组件的各种属性与节点关系定位组件。

涉及到的android基础:Android常用组件、Android组件的属性

3)UiObject:

代表一个组件对象,对象有许多模拟实际操作手机的方法和属性。

文本的编辑, 手势操作, 获取子类,判断对象是否存在

六、Katalon

KatalonStudio是一个能提供一整套功能来实现Web,API和Mobile的全自动测试解决方案的自动化测试平台。

KatalonStudio构建于开源Selenium和Appium框架之上,通过减少学习和集成这些框架以满足。

自动化测试需求所需的工作量和专业知识,使团队能够快速开始测试自动化。

Katalonstudio是一个非常好的工具,特别是对于那些有最少编程或开发背景的人。

如果你问我,在没有开发背景的情况下如何开始自动化测试。那么,使用像 Katalon studio 这样的工具是一个很好的开始。

最后感谢每一个认真阅读我文章的人,下面这个网盘链接也是我费了几天时间整理的非常全面的,希望也能帮助到有需要的你!

在这里插入图片描述

这些资料,对于想转行做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助……

如果你不想一个人野蛮生长,找不到系统的资料,问题得不到帮助,坚持几天便放弃的感受的话,可以点击下方小卡片加入我们群,大家可以一起讨论交流,里面会有各种软件测试资料和技术交流。

敲字不易,如果此文章对你有帮助的话,点个赞收个藏来个关注,给作者一个鼓励。也方便你下次能够快速查找。

自学推荐B站视频:

零基础转行软件测试:38天自学完软件测试,拿到了字节的测试岗offer,堪称B站最好的视频!

自动化测试进阶:已上岸华为,涨薪20K,2022最适合自学的python自动化测试教程,自己花16800买的,无偿分享

在这里插入图片描述


http://chatgpt.dhexx.cn/article/nqYqkrCQ.shtml

相关文章

几款Android 应用自动化测试工具

简述: 本文介绍几款流行的 Android应用自动化测试工具。 Monkey测试:随机测试,压力测试,运行在模拟器或实际设备中。 MonkeyRunner测试:操作简单,可录制测试脚本,可视化操作,主要生成…

2021年四大流行Android手机自动化测试工具,全在这里了

Android 自动化测试的工具非常多,但是目前主流使用的就那几个,我会详细说明他们各自的情况,你可以根据自己的需要决定使用哪款工具。 Appium Appium 是目前最主流的移动测试自动化框架,不仅支持 Android 应用,而且适…

2022年四大流行Android手机自动化测试工具,全在这里了

Android 自动化测试的工具非常多,但是目前主流使用的就那几个,我会详细说明他们各自的情况,你可以根据自己的需要决定使用哪款工具。 Appium Appium 是目前最主流的移动测试自动化框架,不仅支持 Android 应用,而且适…

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

一、Android手机自动化测试工具,常用的有这7中: 1、首推Appium: 推荐理由:功能非常强大的移动端自动化测试框架,还免费 下载链接:Appium: Mobile App Automation Made Awesome. Appium是一种被广泛使用的…

什么是过滤器?拦截器和过滤器有何区别?

过滤器(Filter) servlet过滤器作用: 1.对不符合要求的请求进行拦截,使之不能到达servlet 2.抽取公共的代码,对共同的业务进行抽离,对请求的数据进行加工 (例如设置编码格式、记录日志信息、鉴别用户是否登录等&#x…

面试官:谈谈过滤器和拦截器的区别?

点击关注公众号,Java干货及时送达👇 来源:blog.csdn.net/qq_42924666/article/details/109563400 一、拦截器和过滤器的区别二、拦截器和过滤器的代码实现三、总结 1、什么是Filter及其作用介绍2、Filter API介绍3、Filter链与Filter生命周期…

springboot(13)拦截器和过滤器的区别

1. 解释拦截器和过滤器的概念 拦截器是一种拦截请求并在请求到达目标之前执行某些任务的机制。 过滤器是一种修改或拦截请求或响应的机制。通常,它们用于在特定的请求或响应被处理之前对其进行处理或修改。 2. 触发时机 过滤器和拦截器触发时机不一样&#xff0…

详解拦截器和过滤器的区别

拦截器和过滤器的区别 过滤器和拦截器的区别: ①拦截器是基于java的反射机制的,而过滤器是基于函数回调。  ②拦截器不依赖与servlet容器,过滤器依赖与servlet容器。  ③拦截器只能对action请求起作用,而过滤器则可以对几乎所…

SpringBoot 的拦截器和过滤器的区别和使用场景

Servlet 现在我们通常做 Java Web 开发都会用 SpringBoot ,但要知道 SpringBoot 只是用来简化开发的,在此之前,Springframework 只是一个粘合剂框架,用来整合各种 Java Web 技术的,SpringMvc 都是出现的比较晚的技术&…

拦截器和过滤器的区别是什么

过滤器 过滤器Filter是基于Servlet实现。Servlet的工作原理是拦截配置好的客户端请求,然后对Request和Response进行处理。Filter过滤器随着web应用的启动而启动,只初始化一次。 过滤器的配置比较简单,直接实现Filter 接口就可以了&#xff…

Spring拦截器和过滤器的区别

本文来说下Spring拦截器和过滤器的区别 文章目录 概述拦截器和过滤器介绍过滤器 (Filter)拦截器 (Interceptor)主要区别 拦截器和过滤器的区别实现原理不同使用范围不同触发时机不同拦截的请求范围不同注入Bean情况不同控制执行顺序不同 本文小结 概述 拦截器和过滤器 filter和…

springboot拦截器和过滤器的区别与使用

拦截器与过滤器的区别 spring的拦截器与servlet的filter有相似之处,比如二者都是AOP编程思想的体现,都能实现权限检查、日志记录等,不同的是: 适用范围不同:filter是servlet规范规定的,只能用于web程序中…

Springboot--拦截器、过滤器 区别,作用,实现方法

Springboot–拦截器、过滤器 拦截器和过滤器的区别 拦截器不依赖于servlet容器,这是springMVC自带的,过滤器依赖于servlet容器拦截器是基于java的反射机制,过滤器是基于函数的回调拦截器只能对action请求起作用,而过滤器可以对几…

Spring Boot拦截器与过滤器的区别

Spring Boot拦截器与过滤器的区别 在使用Spring Boot开发Web应用程序时,您可能需要在处理请求之前或之后执行某些操作。这些操作可以包括身份验证、日志记录、性能监测等。在这种情况下,您可以使用两种不同的机制:拦截器和过滤器。本文将介绍…

Springboot过滤器和拦截器的区别

上两篇文章我们介绍了过滤器Filter和拦截器Intercepter,其功能都是对请求进行拦截并对请求过滤,本篇文章就介绍一下两者的区别 1. 过滤器和拦截器的区别 过滤器和拦截器触发时机不一样,过滤器是在请求进入容器后,但请求进入serv…

关于拦截器与过滤器使用场景、拦截器与过滤器的区别整理

拦截器与过滤器的区别总结&#xff1a; 过滤器在web.xml中配置&#xff1a; &#xff08;1&#xff09;因为一开始在过滤器中映射的url-pattern填写路径是*.action。所有的action要经过它的过滤。<url-pattern>*.action</url-pattern> &#xff08;2&#xff09;…

彻底搞清拦截器和过滤器的区别

一、引言 本来想记录一下关于用户登陆和登陆之后的权限管理、菜单管理的问题&#xff0c;想到解决这个问题用到Interceptor&#xff0c;但想到了Interceptor&#xff0c;就想到了Filter&#xff0c;于是就想说一下它们的执行顺序和区别。关于Interceptor解决权限和菜单管理的问…

Spring拦截器和过滤器的区别及详解

拦截器和filter的功能都是拦截&#xff0c;filter是在servlet前执行的&#xff0c;拦截器拦截的是Spring MVC定义的概念。过滤器中包含拦截器&#xff0c;发送一个请求&#xff0c;先进行过滤器处理&#xff0c;看程序是否受理该请求。过滤器放过后&#xff0c;程序中的拦截器再…

拦截器与过滤器的区别

文章目录 一、二者理解过滤器&#xff08;Filter&#xff09;拦截器&#xff08;Interceptor&#xff09; 二、拦截器与过滤器的区别区别&#xff1a; 三、拦截器与过滤器的触发时机拦截器与过滤器触发时机不一样 四、使用场景五、图解 一、二者理解 过滤器&#xff08;Filter…

拦截器和过滤器的区别

1、实现原理不同 过滤器和拦截器底层实现方式大不相同&#xff0c;过滤器 是基于函数回调的&#xff0c;拦截器 则是基于Java的反射机制&#xff08;动态代理&#xff09;实现的。 2、使用范围不同 我们看到过滤器 实现的是 javax.servlet.Filter 接口&#xff0c;而这个接口是…