耗时一个星期整理的APP自动化测试工具大全

在本篇文章中,将给大家推荐14款日常工作中经常用到的测试开发工具神器,涵盖了自动化测试、APP性能测试、稳定性测试、抓包工具等。

一、UI自动化测试工具

1. uiautomator2

openatx开源的ui自动化工具,支持Android和iOS。主要面向的编程语言是Python,API设计简洁易用,在开源社区也是很受欢迎。

安装:

pip install --upgrade --pre uiautomator2# Or you can install directly from github sourcegit clone https://github.com/openatx/uiautomator2pip install -e uiautomator2

2. Appium

基于Node.js的一款非常成熟的APP UI自动化工具,支持多种语言开发,在测试圈非常流行,可以说是APP UI自动化领域的标杆产品。如果你不知道Appium,都不好意思说自己干测试这行。

3. ATX-Test

基于uiautomator2和unittest封装的一个UI自动化测试框架。项目作者已经把框架设计、可配置化、底层设备连接、日志模块、报告模块都做好了,使用者只需要编写PageObject和脚本逻辑即可,大大提高了uiautomator2的易用性。不仅如此,该项目现在还支持Monkey运行。

4. Airtest

网易开源的一个ui自动化测试工具,通过图像识别和UI控件检索技术,使得游戏测试简单快捷。支持Android、iOS、Windows、Unity、Cocos2dx、白鹭引擎、微信小程序,上手简单,游戏测试的朋友可以体验体验。

5. ATXServer2

支持Android和iOS的移动设备管理平台。可以通过web界面,察看测试手机的状态,可以做到远程操控手机,对于测试兼容性具有较大帮助。部署方便,支持docker-compose部署。

6. STF

远程移动设备管理平台,支持Android、iOS真机管理,功能非常强大。

7. Appetizer

使用十分方便。可以进行APP UI自动化测试,也可以支持APP稳定性测试,提供GUI界面操作,易用性极强,满足日常UI自动化需要。可惜只有部分组件开源。

二、APP稳定性测试工具

8. UICrawler

基于Appium的App UI遍历 & Monkey 工具,支持iOS和Android

9. Maxim

号称是智能monkey,用过的人都觉得真香。支持原生monkey、遍历控件、黑白名单等功能,而且也封装了更加易解析的日志文件。有了它之后,已经可以不需要再用原生monkey了。

10. AppCrawler

一个基于自动遍历的app爬虫工具. 支持android和iOS, 支持真机和模拟器. 最大的特点是灵活性. 可通过配置来设定遍历的规则。

三、APP性能测试工具

11. SoloPi

SoloPi是一个无线化、非侵入式的Android自动化工具,公测版拥有录制回放、性能测试、一机多控三项主要功能,能为测试开发人员节省宝贵时间(官方介绍)。一般用于APP的性能测试比较多。

12. GT

腾讯开源的APP的随身调试平台,可对APP进行快速的性能测试(CPU、内存、流量、电量、帧率/流畅度等等)、开发日志的查看、Crash日志查看、网络数据包的抓取、APP内部参数的调试、真机代码耗时统计等。

利用 GT,仅凭一部手机,无需连接电脑,即可对 APP 进行快速的性能测试(CPU、内存、流量、电量、帧率/流畅度等等)、开发日志的查看、Crash 日志查看、网络数据包的抓取、APP 内部参数的调试、真机代码耗时统计等。如果您觉得 GT 提供的功能还不够满足您的需要,您还可以利用 GT 提供的基础 API 自行开发有特殊功能的 GT 插件,帮助您解决更加复杂的 APP 调试问题。

GT 支持 iOS 和 Android 两个手机平台,其中:

iOS 版是一个 Framework 包,必须嵌入 APP 工程,编译出带 GT 的 APP 才能使用;iPhone 和 iPad 应用都能支持。Android 版由一个可直接安装的 GT 控制台 APP 和 GT SDK 组成,GT 控制台可以独立安装使用,SDK 需嵌入被调测的应用、并利用 GT 控制台进行信息展示和参数修改。

四、抓包工具

13. AnyProxy

阿里开源的抓包工具,基于Node.js可进行二次开发,使用场景:app爬虫、接口数据分析等。

14. mitmproxy

基于Python的抓包工具,对于pythoner更加友好,主要作用是对抓包数据进行采集供后续分析。

1.常见应用模式

    Native

    Hybird

    H5

    React Native

2.常用调试工具

    Android平台

     adb

    ddms

    aapt

    monkey

    monkeyrunner

    emulator

    hierarchyviewer

    monitor

    UIAutomatorviewer

    iOS平台

    atos

    xcode

    instruments

    codesign

    iExplorer

    xcrun

3.常见UI自动化框架

    Android平台

    Instrumentation

    Appium

    Robotium

    Instrumentation

    Athrun

    Monkey

    MonkeyRunner

    UIautomator

    Selendroid

    Calabash-Android

    Espresso

    cafe

    Macaca


    iOS平台

    UIautomation

    Frank

    Appium

    Monkeytalk

    Calabash-iOS

    iOS-driver

    XCUITesting

    TuneupJs

    YNM3K

4.常见的单测框架

    Android平台

    Robolectric

    Mockito

    RxJava

    Instrumentation

    AndroidJUnitRunner

    Espresso


    iOS平台

    XCTest

    GHUnit

    OCUnit

    OCMock

    OCMockito

    Expecta

    OCHamcrest

5.常用的抓包工具

    Fiddler

    Charles

    Tcpdump

    Wireshark

    BurpSuites

    第三方proxy server(如:Anyproxy、mitmproxy、browsermob-proxy)

6.弱网模拟

    Fiddler

    Charles

    ACT(Augmented Traffic Control by facebook)

    iOS developer mode

    其他限速软件,比如各种随身WIFI、路由器、网卡等

7.常用的专项测试工具

    Android平台

    集成工具

    GT(腾讯开源)

    易测(淘宝不开源)

    emmagee(网易开源)

    iTest(科大讯飞不开源)


    CPU

    DDMS

    Monitor

    TraceView

    ADB Shell

        /proc/stat && /proc/%pid%/stat

        Top

        dumpsys cpuinfo

     Android API


    内存

    MAT

    DDMS(or Monitor)

    Android Studio Monitor

    Allocation Tracker

    LeakCanary

    ADB shell

      dumpsysmeminfo %package_name% && dumpsys     

       meminfo %pid%

       top

    procrank

    Android API

    Memory Leaks(iOS)


    流量

    Tcpdump

    ADB shell

        /proc/uid_stat/uid/tcp_send(上传流量)

        /proc/uid_stat/uid/tcp_rcv(下载流量)

    Wireshark

    Fiddler

    Charles

    Android API(版本限制)


    FPS

    ADB shell

       service call SurfaceFlinger 1013(需要root)

        dumpsys SurfaceFlinger

       dumpsys gfxinfo %packagename%(版本限制)

    Android开发者模式-GPU呈现模式分析

    高速摄像头


    启动时间

    冷启动定义(无数据首次启动APP)

    热启动定义(BACK退出APP后启动APP)

    Logcat(Android 4.4+)

    am start -W [packageName]/[packageName.MainActivity]


    功耗(电量)

    Android平台

    dumpsys batterystats(版本限制)

    反编译获取power_profile.xml查看

    Battery Historian Tool(版本限制)

    Android API


    iOS平台

    开发者选项->logging ->start recording + Instrument


    功耗测试仪,如安捷伦

8.静态扫描

    Android平台

    火线

    Findbugs

    Infer

    Sonar

    Lint

    P3C(阿里基于PMD开发)

    PMD

    CheckStyle

    360代码卫士(商业)

    Fortify(商业)

    Coverity(商业)


    iOS平台

    OClint

    infer

    scan-build

    Clang Static Analyzer

9.代码覆盖率

    JaCoCo

    Cobertura

    Emma

    Code Coverage in Xcode(iOS)

10.常用的云测平台

    免费开源

    STF


    商业(限时免费)

    Testin

    百度MTC

    阿里MQC

    腾讯UTest

    东软易测云

    腾讯WeTest

    TestBird

    华为云

    Pefecto

    LessPainful

    TestDroid

11.持续集成

    Jenkins

    Travis CI

    Buildbot

    Strider

    Integrity

    GO

12.监控SDK

    探针

    BlockCanary

    LeakCanary

    Bugly

    crashlytics

    友盟

    网易云捕

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/178699.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

js最新随机字符串,进制数随机字符串,更优秀的随机字符串方式,你绝对没用过的随机字符串方式,可控制位数!

js最新随机字符串,进制数随机字符串,更优秀的随机字符串方式,你绝对没用过的随机字符串方式,可控制位数! 函数封装和传参 首先我们,要封装这样一个函数,首先要确定,传入哪些参数。…

java springboot中使用 AOP监听方法执行周期

首先 我们在 pom.xml 中 dependencies标签中加入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId> </dependency>然后 我们随便创建一个类 编写代码如下 package com.ex…

一个基于.NET Core开源、跨平台的仓储管理系统

前言 今天给大家推荐一个基于.NET Core开源、跨平台的仓储管理系统&#xff0c;数据库支持MSSQL/MySQL&#xff1a;ZEQP.WMS。 仓储管理系统介绍 仓储管理系统&#xff08;Warehouse Management System&#xff0c;WMS&#xff09;是一种用于管理和控制仓库操作的软件系统&…

离散数学-集合论基础

3.1集合的基本概念 1&#xff09;集合及元素 2&#xff09;集合的表示 3&#xff09;集合的关系 4&#xff09;特殊集合 3.2集合的运算 并、交、差、对称差 3.3集合的划分与覆盖 3.4排斥包含管理 3.1集合的基本概念 1&#xff09;集合及元素 将某种具有同种属性的个体…

Appium自动化测试:sdk版本和手机版本不兼容你就这样做,分分钟解决问题

使用pythonappium执行自动化测试脚本提示报错 环境&#xff1a;python3.7以上&#xff0c;appium1.21.0&#xff1b;设备&#xff1a;华为max8真机 报错信息&#xff1a; android.intent.category.LAUNCHER -f 0x10200000 exited with code 4294967295; Stderr: Security ex…

双馈风机频率二次跌落,永磁风机一次调频火电水电光伏储能直流一次调频,虚拟惯性下垂控制,虚拟同步机VSG控制,二次调频也可继续深入研究

双馈风机(永磁同步风机)虚拟惯性控制下垂控制参与系统一次调频的Matlab/Simulink模型&#xff0c;调频结束后转速回复&#xff0c;造成频率二次跌落SFD。 系统为三机九节点模型&#xff08;可更换为四机两区域&#xff0c;十机39节点&#xff0c;IEEE39节点&#xff0c;IEEE11…

Docker | 自定义Docker镜像

✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a;Docker系列 ✨特色专栏&#xff1a; My…

微信小程序实现微信登录

文章目录 涉及到的微信官方文档login.wxml效果login.wxml login.js效果login.jsutil.js 后端&#xff08;使用django&#xff09;urls.pyviews.py 流程&#xff1a; 1. wx.getUserProfile() 会调出获取用户微信的页面 2. 当用户点击“允许”后&#xff0c;wx.login() 带着code去…

vue实现海康H5视频插件播放视频的实例,实现取流失败了之后重新获取新的流播放视频

vue实现海康H5视频插件播放视频的实例&#xff0c;实现取流失败了之后重新获取新的流播放视频 h5player是一个基于HTML5的流式网络视频播放器&#xff0c;无需安装浏览器插件即可通过websocket协议向媒体服务取流播放多种格式的音视频流。 首先去海康开发平台&#xff0c;把插…

CopyOnWriteArrayList源码解析

CopyOnWriteArrayList源码解析 文章目录 CopyOnWriteArrayList源码解析一、CopyOnWriteArrayList二、总结 一、CopyOnWriteArrayList 在 JUC 中&#xff0c;对于 ArrayList 的线程安全用法&#xff0c;比较推崇于使用 CopyOnWriteArrayList &#xff0c;那么CopyOnWriteArrayL…

Vue2或者uniapp 中 使用 iframe 嵌入本地 HTML 页面 并 相互通信。

1.使用 iframe 嵌入本地 HTML 页面&#xff08;以pdfjs为例&#xff09; 在 public 文件夹下新建 static 文件夹&#xff0c;然后将 html 文件及相关引用拷贝到 static 文件夹下 uniapp在src下新建hybrid文件 vue 文件完整代码 <template><div class"wrap&q…

java+python农村集体产权管理系统php+vue

注册、登陆该系统根据操作权限的不同分为管理员和用户两种&#xff0c;新用户在登陆前要进行用户注册&#xff0c;注册完成后方可进行登陆。 本次设计的关键问题处理&#xff0c;主要有如下几点&#xff1a; (1&#xff09;本次开发&#xff0c;采用主流Thinkphp框架进行开发&a…

KernelSHAP vs TreeSHAP

Kernel SHAP和Tree SHAP都用于近似Shapley值。Tree SHAP要快得多。缺点是它只能用于基于树的算法&#xff0c;如随机森林和xgboost。另一方面&#xff0c;Kernel SHAP是模型不可知的(model agnostic)&#xff0c;这意味着它可以与任何机器学习算法一起使用。我们将比较这两种近…

如何把 Oracle 19C RAC+DG加入到ORACLE EM 13C监控

平时见ORACLE 19c rac single dg的部署很多了&#xff0c;ORACLE em 13c 的安装也很多了,但如何把手工部署的oracle 19c rac dg 添加到em 13c 中去&#xff0c;让EM13C 来实现对RACDG的监控&#xff0c;主要是DG的EM13C的监控&#xff0c;还没有看到&#xff0c;大部分都是直接…

2023极客大挑战-AGRT战队wp

目录 RE Shiftjmp 点击就送的逆向题 幸运数字 ​编辑 砍树 小黄鸭 flower-or-tea mySelf 是男人就来扎针 听说cpp很难&#xff1f; Easymath 寻找初音未来 Rainbow 浪漫至死不渝 ezandroid Pwn nc_pwntools password ret2text write1 ret2libc ezpwn wr…

力扣23. 合并 K 个升序链表(java,最小堆解法)

Problem: 23. 合并 K 个升序链表 文章目录 题目描述思路解题方法复杂度Code 题目描述 给你一个链表数组&#xff0c;每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中&#xff0c;返回合并后的链表。 思路 1.对于合并k个有序链表&#xff0c;我们较为容易想…

shiro整合redis

shiro整合redis 前言&#xff1a;shiro默认的session是存储在jvm内存中的&#xff0c;这样会导致java服务内存占用更大以及一旦服务器宕机或者版本迭代需要重启服务时&#xff0c;缓存中的数据不能恢复&#xff0c;导致用户需要重新登录认证&#xff0c;体验很差。因此利用第三…

JSON详细教程

&#x1f60a;JSON详细教程 &#x1f6a9;JSON简介☃️JSON语法规则&#x1f50a;JSON和JavaScript对象的区别 ☃️JSON数据类型字符串&#x1f50a;数字&#x1f50a;布尔值&#x1f50a;数组&#x1f50a;对象&#x1f50a;Null ☃️JSON对象&#x1f50a;访问JSON对象的值&a…

堆的应用(堆排序、Top-K问题)

文章目录 1 堆排序2 Top-K问题 1 堆排序 堆排序是一种基于二叉堆&#xff08;通常使用数组实现&#xff09;的排序算法。 它的基本思想是利用堆这种数据结构的性质&#xff0c;通过建立一个堆&#xff08;大堆或小堆&#xff09;&#xff0c;使得堆的根节点是所有节点中的最大值…

在线 SQL 模拟器SQL Fiddle使用简介

在线 SQL 模拟器SQL Fiddle使用简介 有时候&#xff0c;我们想去验证 SQL语句&#xff0c;却缺少数据库环境&#xff0c;那该怎么办呢&#xff1f; 这时候在线 SQL 模拟器就有了用武之地。SQL 模拟器免安装&#xff0c;可以在网页直接运行 SQL 。 SQL Fiddle 支持 MySQL、Orac…