目录
(2) Espresso(Google 官方,适用于 Android)
(3) XCUITest(Apple 官方,适用于 iOS)
(5) Android Profiler(Google 官方)
(6) Xcode Instruments(Apple 官方)
(7) Firebase Performance Monitoring
(11) Firebase Test Lab(Google 官方,云端测试)
(13) BrowserStack App Live(云端真机测试)
(14) Firebase Crashlytics(Google 官方)
移动端应用(App)测试工具可分为多个类别,包括功能测试、性能测试、压力测试、UI自动化测试、兼容性测试等。以下是各类别的主流工具:
1.功能测试工具(UI自动化测试)
用于验证 App 是否按照需求正确工作,适用于回归测试、界面交互测试等。
(1) Appium(跨平台,开源)
Appium 是一个强大的开源跨平台移动应用自动化测试工具,它允许开发者使用多种编程语言编写测试脚本,并在 iOS、Android 和 Windows 平台上运行这些脚本。
-
支持 Android 和 iOS 应用自动化测试
-
兼容 Selenium,支持多种编程语言(Java、Python、JS 等)
-
适用于 UI 自动化测试、回归测试
-
官网:Redirecting
以下是 Appium 的使用教程,帮助快速入门:
1)环境搭建
-
安装Node.js:
-
Appium 基于 Node.js,因此需要先安装 Node.js。可以从 Node.js 官网下载并安装最新版本。
-
-
安装Appium Server:
-
通过npm 安装Appium Server:
-
npm install -g appium
-
-
-
安装Java JDK:
-
Appium 需要 Java 环境,请确保已安装 Java JDK。
-
-
安装Android SDK(Android 测试):
-
如果进行 Android 测试,需要安装 Android SDK 并配置环境变量。
-
-
安装Xcode(iOS 测试):
-
如果进行 iOS 测试,需要安装 Xcode。
-
-
安装Appium Inspector:
-
Appium Inspector 是一个 GUI 工具,用于检查应用程序的 UI 元素。可以从Appium的Github下载。
-
-
安装Python 客户端库(或其他语言):
-
根据选择的编程语言,安装相应的 Appium 客户端库。例如,使用 Python 时,可以通过 pip 安装:
-
pip install Appium-Python-Client
-
-
2)启动Appium Server
-
在终端中运行
appium
命令,启动 Appium Server。
3)编写测试脚本
-
设置Desired Capabilities:
-
Desired Capabilities 是一个 JSON 对象,用于指定测试设备的配置信息。
-
以下是一个Android 测试的Python 示例:
-
from appium import webdriver
desired_caps = {
'platformName': 'Android',
'platformVersion': 'Your_Android_Version',
'deviceName': 'Your_Device_Name',
'appPackage': 'Your_App_Package',
'appActivity': 'Your_App_Activity'
}
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
-
查找UI 元素:
-
可以使用 Appium Inspector 或其他工具查找应用程序的 UI 元素,并获取其定位信息(如 id、xpath)。
-
-
执行操作:
-
使用 Appium 提供的 API,执行各种操作,如点击、输入文本、滑动等。
-
以下是一些示例:
-
# 点击元素
element = driver.find_element_by_id('element_id')
element.click()
# 输入文本
input_element = driver.find_element_by_xpath('xpath_expression')
input_element.send_keys('text_to_input')
# 滑动屏幕
driver.swipe(start_x, start_y, end_x, end_y)
-
验证结果:
-
使用断言来验证测试结果是否符合预期。
-
4)运行测试脚本
-
运行编写的测试脚本,Appium 将在指定的设备上执行测试。
5)常用工具
-
Appium 检查器:
-
用于检查应用程序的 UI 元素,获取定位信息。
-
-
adb(Android调试桥):
-
用于与 Android 设备进行交互,如安装应用、查看日志等。
-
-
Xcode 工具:
-
用于ios的性能分析。
-
注意事项:
-
确保设备已连接并处于调试模式。
-
根据测试平台(Android 或iOS)配置相应的环境。
-
使用 Appium Inspector 查找 UI 元素时,注意选择合适的定位策略。
-
测试脚本应具有良好的可读性和可维护性。
(2) Espresso(Google 官方,适用于 Android)
Espresso 是Google 官方提供的Android UI 自动化测试框架,它旨在帮助开发者编写可靠的UI 测试。
-
Android 官方自动化测试框架,与 Android Studio 深度集成
-
适用于 UI 测试,支持同步执行
-
适用于 Android 原生应用
以下是 Espresso 的使用教程,帮助快速入门:
1)环境搭建
-
Android Studio:
-
建议使用最新版本的 Android Studio,因为它集成了 Espresso 所需的工具和库。
-
-
添加Espresso 依赖项:
-
在应用模块的
build.gradle
文件中,添加 Espresso 依赖项:
-
dependencies {
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
androidTestImplementation 'androidx.test:runner:1.5.2'
androidTestImplementation 'androidx.test:rules:1.5.0'
}
-
设置插桩测试运行程序:
-
在同一
build.gradle
文件的android.defaultConfig
中,添加以下代码:
-
android {
defaultConfig {
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
}
2)编写测试用例
-
创建测试类:
-
在
src/androidTest/java/
目录下,创建一个新的测试类。
-
-
使用
@RunWith
和@Rule
注解:-
在测试类上添加
@RunWith(AndroidJUnit4.class)
注解,并使用ActivityScenarioRule
创建一个 Activity 测试规则。 -
以下是一个示例:
-
import androidx.test.ext.junit.rules.ActivityScenarioRule;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import org.junit.Rule;
import org.junit.runner.RunWith;@RunWith(AndroidJUnit4.class)
public class ExampleInstrumentedTest {@Rule
public ActivityScenarioRule<MainActivity> activityRule =new ActivityScenarioRule<>(MainActivity.class);
}
-
编写测试方法:
-
使用
@Test
注解创建测试方法。 -
使用 Espresso 的 API 来查找 UI 元素、执行操作和验证结果。
-
以下是一些常用的Espresso API:
-
onView()
:查找UI 元素。 -
withText()
、withId()
:匹配 UI 元素。 -
perform()
:执行操作,如click()
、typeText()
。 -
check()
:验证结果,如matches(isDisplayed())
。
-
-
以下是一个简单的示例:
-
import static androidx.test.espresso.Espresso.onView;
import static androidx.test.espresso.action.ViewActions.click;
import static androidx.test.espresso.assertion.ViewAssertions.matches;
import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed;
import static androidx.test.espresso.matcher.ViewMatchers.withText;
import org.junit.Test;
public class ExampleInstrumentedTest {
//... activityRule
@Test
public void testTextDisplay() {
onView(withText("Hello")).check(matches(isDisplayed()));
}
@Test
public void testButtonClick() {
onView(withId(R.id.button)).perform(click());
}
}
3)运行测试用例
-
在 Android Studio 中,右键单击测试类或测试方法,选择 "Run"。
-
Android Studio 将在连接的设备或模拟器上运行测试用例。
4)常用技巧
-
使用Espresso Recorder:
-
Android Studio 提供了 Espresso Recorder 工具,可以自动生成 Espresso 测试代码。
-
-
使用Idling Resources:
-
如果应用有异步操作,可以使用 Idling Resources 来同步测试。
-
-
使用RecyclerViewActions:
-
Espresso 提供了
RecyclerViewActions
类,用于测试RecyclerView
控件。
-
5)注意事项
-
Espresso 专注于测试单个应用程序的UI,因此它不适合跨应用程序的测试。
-
Espresso 的同步机制可以有效地解决异步操作导致的测试问题,但这也意味着测试可能会比较慢。
-
编写Espresso测试时,需要注意代码的清晰性和可读性,以便于维护。
(3) XCUITest(Apple 官方,适用于 iOS)
XCUITest 是 Apple 官方提供的 iOS UI 自动化测试框架,它集成在 Xcode 中,允许开发者编写 UI 测试,模拟用户与 iOS 应用程序的交互,从而验证应用程序的 UI 功能是否符合预期。
-
iOS 官方 UI 自动化测试框架,与 Xcode 集成
-
适用于 iOS App 的 UI 交互测试
以下是 XCUITest 的使用教程,帮助快速入门:
1)环境搭建
-
Xcode:
-
XCUITest 集成在 Xcode 中,因此需要安装 Xcode。建议使用最新版本的 Xcode。
-
-
iOS 设备或模拟器:
-
可以在真实的iOS 设备或模拟器上运行XCUITest。
-
2)创建UI 测试目标
-
创建项目时:
-
创建新的 Xcode 项目时,选中 "Include Tests" 复选框,Xcode 将自动创建一个 UI 测试目标。
-
-
现有项目中:
-
在 Xcode 中,选择 "File" -> "New" -> "Target"。
-
在 "Testing" 部分,选择 "UI Testing Bundle",然后点击 "Next"。
-
配置测试目标,然后点击 "Finish"。
-
3)编写测试用例
-
创建测试类:
-
在 UI 测试目标中,Xcode 会自动创建一个测试类。也可以创建新的测试类。
-
-
编写测试方法:
-
使用
@objc func testExample()
格式编写测试方法。 -
使用
XCUIApplication()
创建应用程序实例。 -
使用
XCUIElement
类查找 UI 元素。 -
使用
XCUIElement
的方法执行操作,如tap()
、typeText()
。 -
使用
XCTAssert
系列断言验证结果。 -
以下是一个简单的示例:
-
import XCTest
class ExampleUITests: XCTestCase {
func testExample() throws {
let app = XCUIApplication()
app.launch()
let button = app.buttons["MyButton"]
button.tap()
let label = app.staticTexts["MyLabel"]
XCTAssertEqual(label.label, "Button Tapped")
}
}
4)运行测试用例
-
在Xcode 中:
-
点击 Xcode 顶部工具栏中的 "Product" -> "Test",或使用快捷键 Command + U。
-
Xcode 将在指定的设备或模拟器上运行测试用例。
-
-
测试报告:
-
Xcode 将在测试导航器中显示测试结果。
-
可以查看测试报告,了解测试用例的执行情况。
-
5)常用技巧
-
使用Xcode 的UI 测试记录器:
-
Xcode 提供了 UI 测试记录器,可以自动生成 XCUITest 代码。
-
-
使用辅助功能检查器:
-
Accessibility Inspector 可以帮助查找UI 元素的属性和层次结构。
-
-
使用断点和调试器:
-
可以使用Xcode 的断点和调试器调试XCUITest 代码。
-
6)注意事项
-
XCUITest 测试可能会比较慢,因此建议将其与其他类型的测试结合使用。
-
UI的更改会对测试脚本造成影响,所以维护成本相对较高。
-
测试运行需要应用支持辅助功能,所以需要在开发的时候,注意给UI元素添加辅助功能。
(4) UI Automator(适用于 Android)
UI Automator 是谷歌为Android 平台提供的UI 自动化测试框架,它允许开发者编写可以与Android 应用的用户界面交互的自动化测试。
-
Android 官方 UI 自动化测试框架
-
可测试跨应用操作(如后台切换)
-
官网:https://developer.android.com/training/testing/ui-automator
以下是 UI Automator 的使用教程,帮助快速入门:
1)环境搭建
-
Android开发工具包:
-
确保已安装 Android SDK,并且 SDK 工具版本至少为 API 21,SDK 平台版本至少为 API 16。
-
-
Android Studio:
-
建议使用最新版本的 Android Studio,因为它集成了 UI Automator 所需的工具和库。
-
2)UI Automator 查看器
-
启动UI Automator Viewer:
-
连接Android 设备或启动模拟器。
-
在终端中,导航到 Android SDK 工具目录,并运行
uiautomatorviewer
命令。
-
-
分析UI 元素:
-
使用UI Automator Viewer 捕获应用程序的UI 屏幕截图。
-
查看 UI 元素的属性,例如资源 ID、文本、内容描述等。
-
这些属性将用于编写测试用例。
-
3)编写测试用例
-
创建测试类:
-
在 Android Studio 中,在
src/androidTest/java/
目录下创建一个新的测试类。
-
-
添加UI Automator 依赖项:
-
在模块的
build.gradle
文件中,添加 UI Automator 依赖项:
-
dependencies {
androidTestImplementation 'androidx.test.uiautomator:uiautomator:2.2.0'
}
-
编写测试方法:
-
使用
UiDevice
类获取设备实例。 -
使用
UiSelector
类查找UI 元素。 -
使用
UiObject2
类执行操作,如click()
、setText()
。 -
使用断言验证结果。
-
以下是一个简单的示例:
-
import androidx.test.platform.app.InstrumentationRegistry;
import androidx.test.uiautomator.UiDevice;
import androidx.test.uiautomator.UiObject2;
import androidx.test.uiautomator.By;
import org.junit.Test;
import static org.junit.Assert.assertEquals;public class ExampleUiAutomatorTest {@Testpublic void testButtonClick() {
UiDevice device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
UiObject2 button = device.findObject(By.res("com.example.myapp:id/my_button"));
button.click();
UiObject2 textView = device.findObject(By.res("com.example.myapp:id/my_text_view"));
assertEquals("Button Clicked", textView.getText());
}
}
4)运行测试用例
-
在Android Studio 中:
-
右键单击测试类或测试方法,选择 "Run"。
-
Android Studio 将在连接的设备或模拟器上运行测试用例。
-
-
使用命令行:
-
可以使用
adb shell am instrument
命令从命令行运行测试。
-
5)常用技巧
-
使用
By
类:-
By
类提供了多种查找 UI 元素的方法,例如By.res()
、By.text()
、By.desc()
。
-
-
使用
UiScrollable
类:-
UiScrollable
类用于操作可滚动的 UI 元素,例如ListView
和RecyclerView
。
-
-
使用
UiDevice
类:-
UiDevice
类提供了设备级别的操作,例如旋转屏幕、按下硬件按钮。
-
6)注意事项
-
UI Automator 能够跨应用边界进行测试,这使得它可以测试系统级别的操作。
-
UI Automator 利用 Android 的可访问性服务来识别和操作 UI 元素。
-
UI Automator 非常适合进行黑盒测试。
2.性能测试工具(流畅度、耗电、CPU、内存)
用于评估 App 在不同设备上的性能表现,如帧率、内存占用、CPU 使用率等。
(5) Android Profiler(Google 官方)
Android Profiler 是 Android Studio 中内置的性能分析工具,它能够帮助开发者深入了解应用程序的性能表现,从而优化应用。
-
适用于 Android 开发者,集成于 Android Studio
-
监控 CPU、内存、网络流量、电池消耗等
以下是 Android Profiler 的详细使用教程:
-
打开Android Profiler
-
在 Android Studio 中,打开项目。
-
在底部工具栏中,找到并点击 "Profiler" 选项卡。
-
如果 Profiler 未显示,请选择 "View" -> "Tool Windows" -> "Profiler"。
-
连接设备和选择应用进程
-
确保 Android 设备已连接到计算机,或者模拟器已启动。
-
在 Profiler 窗口的顶部,选择要分析的设备和应用进程。
-
Profiler 的主要功能模块
Android Profiler 主要包含以下几个功能模块:
-
CPU Profiler(CPU 分析器):
-
监控应用程序的CPU 使用情况。
-
识别CPU 消耗过高的代码区域。
-
分析线程活动和方法调用。
-
-
Memory Profiler(内存分析器):
-
跟踪应用程序的内存使用情况。
-
检测内存泄漏和内存分配情况。
-
查看堆转储(Heap Dump)。
-
-
Network Profiler(网络分析器):
-
监控应用程序的网络活动。
-
分析网络请求和响应。
-
查看数据传输情况。
-
-
Energy Profiler(能耗分析器):
-
测量应用程序对设备电池消耗的影响。
-
提供对耗能操作的深入了解。
-
-
GPU Profiler(GPU分析器):
-
允许分析图形渲染性能。
-
提供GPU活动,帧渲染时间,和GPU内存使用情况的可视化表示。
-
-
各模块的使用方法
-
CPU配置文件:
-
选择"CPU" 模块。
-
点击"Record" 按钮开始记录CPU 使用情况。
-
在应用程序中执行要分析的操作。
-
点击"Stop" 按钮停止记录。
-
分析时间线和火焰图,找出 CPU 消耗过高的代码。
-
-
内存分析器:
-
选择"Memory" 模块。
-
查看内存使用情况的时间线。
-
点击"Dump Java heap" 按钮捕获堆转储。
-
分析堆转储,找出内存泄漏和内存分配问题。
-
-
网络分析器:
-
选择 "Network" 模块。
-
查看网络请求和响应的时间线。
-
分析请求的详细信息,例如请求头、响应头和数据。
-
找出网络请求的性能瓶颈。
-
-
能源分析器:
-
选择 "Energy"模块。
-
查看应用程序的耗电情况。
-
分析哪些操作消耗了最多的电量。
-
-
GPU 分析器:
-
在Android Studio Dolphin 和更高版本中可用。
-
选择"GPU"模块。
-
分析图形渲染性能。
-
-
常用技巧
-
使用系统跟踪(System Trace):
-
系统跟踪可以提供更详细的CPU 使用情况和系统调用信息。
-
-
捕获堆转储(Heap Dump):
-
堆转储可以帮助找出内存泄漏和内存分配问题。
-
-
分析网络请求:
-
分析网络请求的详细信息,可以帮助找出网络请求的性能瓶颈。
-
-
使用过滤功能:
-
使用过滤功能,可以帮助快速找到要分析的数据。
-
-
注意事项
-
在分析性能时,建议在真实的设备上进行测试,因为模拟器的性能可能与真实设备有所不同。
-
性能分析可能会影响应用程序的性能,因此建议在测试环境中进行。
-
熟练掌握Android Profiler的各个模块,能够更好的帮助开发者进行应用的优化。
(6) Xcode Instruments(Apple 官方)
Xcode Instruments 是 Apple 官方提供的强大的性能分析和调试工具,它集成在 Xcode 开发环境中,专门用于分析和优化 iOS、macOS 以及 watchOS 等 Apple 平台上的应用程序性能。
-
适用于 iOS 应用的性能分析
-
监控 CPU、内存、耗电、帧率等
以下是 Xcode Instruments 的使用教程,帮助快速入门:
1)打开Xcode Instruments
-
通过Xcode 打开:
-
在 Xcode 中,选择 "Xcode" -> "Open Developer Tool" -> "Instruments"。
-
或者,也可以直接在 Spotlight 搜索 "Instruments" 并打开它。
-
-
选择模板:
-
打开 Instruments 后,将看到一个模板选择窗口。
-
Instruments 提供了多种预设模板,例如:
-
Time Profiler: 分析 CPU 使用情况。
-
Leaks: 检测内存泄漏。
-
Energy Log: 分析应用程序的能耗。
-
Allocations: 分析内存分配情况。
-
-
选择适合需求的模板。
-
2)选择目标设备和应用
-
在 Instruments 窗口的顶部,选择要分析的设备(物理设备或模拟器)。
-
选择要分析的应用程序。
3)开始记录
-
点击 Instruments 窗口左上角的 "Record" 按钮(红色圆圈),开始记录性能数据。
-
在应用程序中执行要分析的操作。
-
点击"Stop" 按钮(红色方块)停止记录。
4)分析数据
-
Instruments 将在时间线上显示记录的性能数据。
-
可以缩放和滚动时间线,查看详细的性能指标。
-
使用 Instruments 提供的各种工具和视图,分析性能数据,找出性能瓶颈。
-
不同的模版有不同的数据分析方式。
-
时间概况:
-
查看火焰图,找出 CPU 消耗过高的函数。
-
分析线程活动,找出线程争用问题。
-
-
泄漏:
-
查看内存泄漏的详细信息。
-
分析内存泄漏的调用栈,找出内存泄漏的根源。
-
-
分配:
-
查看内存分配情况。
-
分析内存分配的调用栈,找出过度内存分配的问题。
-
-
5)常用技巧
-
使用过滤功能:
-
使用 Instruments 提供的过滤功能,可以帮助快速找到要分析的数据。
-
-
使用标记和注释:
-
在时间线上添加标记和注释,可以帮助记录重要的事件和发现。
-
-
使用Instruments 命令行工具:
-
Instruments 提供了命令行工具,可以用于自动化性能分析。
-
-
符号化:
-
确保你的dSYM文件是正确的,这样instruments才能正确的符号化。
-
(7) Firebase Performance Monitoring
Firebase Performance Monitoring 是一款强大的性能监控工具,它可以帮助开发者深入了解应用程序的性能表现,从而优化应用。
-
Google 提供的云端监控工具
-
适用于实时监测 App 的性能(网络请求、UI 响应等)
以下是 Firebase Performance Monitoring 的使用教程,帮助快速入门:
1)使用步骤
-
1.1 添加Firebase SDK
-
首先,需要在应用程序中添加 Firebase Performance Monitoring SDK。
-
安卓:
-
在项目级
build.gradle
文件中,添加 Google 服务插件:-
classpath 'com.google.gms:google-services:4.3.15'
(请注意版本号,以firebase官方最新版本为准)
-
-
在应用级
build.gradle
文件中,添加 Firebase Performance Monitoring 依赖项:-
implementation 'com.google.firebase:firebase-perf:20.3.2'
(请注意版本号,以firebase官方最新版本为准) -
apply plugin: 'com.google.gms.google-services'
-
apply plugin: 'com.google.firebase.perf'
-
-
-
苹果系统:
-
使用CocoaPods 或Swift Package Manager 安装Firebase Performance Monitoring SDK。
-
-
网站:
-
通过 npm 或者 script 标签,引入firebase Performance Monitoring SDK.
-
-
-
1.2 启用Performance Monitoring
-
在 Firebase 控制台中,选择项目,然后选择 "Performance" 选项卡。
-
点击"启用Performance Monitoring" 按钮。
-
-
1.3 生成性能事件
-
运行应用程序,执行一些操作,例如启动应用、发送网络请求等,以生成性能事件。
-
**注意:**Performance Monitoring SDK 在本地对事件进行批处理,然后定期将事件发送到 Firebase。
-
-
1.4 分析性能数据
-
在 Firebase 控制台的 "Performance" 选项卡中,查看性能数据报告。
-
分析图表和报告,找出性能瓶颈,并进行优化。
-
-
1.5 自定义代码跟踪
-
如果需要监控应用程序中特定代码块的性能,可以使用 Firebase Performance Monitoring 提供的 API 进行自定义代码跟踪。
-
Android 示例:
import com.google.firebase.perf.FirebasePerformance; import com.google.firebase.perf.metrics.Trace; Trace myTrace = FirebasePerformance.getInstance().newTrace("my_trace"); myTrace.start();// 执行要监控的代码 myTrace.stop();
-
iOS 示例:
import FirebasePerformancelet trace = Performance.startTrace(name: "my_trace")// 执行要监控的代码 trace.stop()
-
-
1.6 网络请求监控
-
Firebase Performance Monitoring 能够自动监控应用程序的网络请求。
-
可以在 Firebase 控制台中查看网络请求的详细信息,例如请求 URL、响应时间、数据传输量等。
-
2)注意事项
-
确保 Firebase 配置文件(
google-services.json
或GoogleService-Info.plist
)已正确添加到应用程序中。 -
性能数据可能需要一段时间才能在Firebase 控制台中显示。
-
在分析性能数据时,建议在真实的设备上进行测试,因为模拟器的性能可能与真实设备有所不同。
-
firebase Performance Monitoring 也支持web端。
3.压力测试工具(高并发、负载测试)
用于模拟大量用户并发访问,测试后端接口和服务器的承载能力。
(8) Apache JMeter(开源,广泛使用)
Apache JMeter 是一款非常流行的开源性能测试工具,广泛应用于Web 应用、API、数据库等多种场景的压力测试和性能测试。
-
适用于 App 后端 API 负载测试
-
可模拟高并发用户访问服务器
1)安装与配置
-
安装Java:
-
JMeter 基于 Java 开发,因此需要先安装 Java JDK。
-
-
下载JMeter:
-
从Apache JMeter 官网下载最新版本的JMeter。
-
-
解压和运行:
-
将下载的压缩包解压到指定目录。
-
在 JMeter 的
bin
目录下,运行jmeter.bat
(Windows)或jmeter.sh
(Linux/macOS)。
-
2)基本使用步骤
-
2.1 创建测试计划
-
启动 JMeter 后,默认会创建一个测试计划。
-
可以右键单击 "测试计划",添加线程组、取样器、监听器等元素。
-
-
2.2 添加线程组
-
线程组用于模拟并发用户。
-
在线程组中,可以设置线程数、Ramp-Up 时间(启动间隔)和循环次数。
-
-
2.3 添加取样器
-
取样器用于发送请求。
-
常用的取样器有:
-
HTTP 请求:用于测试Web 应用和API。
-
JDBC 请求:用于测试数据库。
-
FTP 请求:用于测试FTP 服务器。
-
-
以HTTP请求为例,需要配置如下信息:
-
服务器名称或IP。
-
端口号。
-
请求方法(GET、POST 等)。
-
路径。
-
请求参数。
-
-
-
2.4 添加监听器
-
监听器用于查看测试结果。
-
常用的监听器有:
-
查看结果树:查看每个请求的详细信息。
-
聚合报告:查看整体的性能指标,如响应时间、吞吐量、错误率。
-
图形结果:以图形方式显示响应时间。
-
-
-
2.5 运行测试
-
点击工具栏中的 "启动" 按钮,运行测试计划。
-
在监听器中查看测试结果。
-
-
2.6 分析报告
-
分析测试报告,找出系统的性能瓶颈。
-
根据分析结果,优化系统。
-
3)常用技巧
-
使用变量和函数:
-
JMeter 支持使用变量和函数,可以实现更灵活的测试场景。
-
-
使用定时器:
-
定时器可以控制请求的发送频率,模拟真实用户的行为。
-
-
使用断言:
-
断言用于验证响应结果是否符合预期。
-
-
使用CSV 数据集配置:
-
用来从csv文件中读取测试数据,实现数据参数化。
-
-
分布式测试:
-
JMeter 支持分布式测试,可以在多台机器上运行测试,模拟更大规模的并发用户。
-
(9) Locust(Python 编写,可扩展)
Locust 是一款使用Python 编写的开源负载测试工具,它以其可扩展性和易用性而闻名。
-
适用于 App 的后端接口压力测试
-
支持分布式测试,可模拟大规模并发请求
以下是 Locust 的详细使用教程:
1)主要特点
-
Python 编写:
-
使用 Python 编写测试脚本,具有高度的灵活性和可扩展性。
-
-
基于用户行为:
-
模拟真实用户行为,通过定义虚拟用户(“蝗虫”)的行为模式,来模拟并发请求。
-
-
分布式测试:
-
支持分布式测试,可以轻松地在多台机器上运行测试,模拟大规模并发用户。
-
-
Web 用户界面:
-
提供直观的 Web 用户界面,用于实时监控测试结果。
-
2)安装Locust
-
使用pip 安装:
-
在命令行中运行以下命令:
-
pip install locust
-
-
3)编写Locustfile
-
创建测试脚本:
-
创建一个 Python 文件(通常命名为
locustfile.py
),编写测试脚本。 -
使用
HttpUser
类定义虚拟用户,使用@task
装饰器定义用户行为。 -
以下是一个简单的例子:
-
from locust import HttpUser, task, betweenclass QuickstartUser(HttpUser):
wait_time = between(1, 2)
@taskdef hello_world(self):
self.client.get("/hello")
@taskdef view_items(self):
self.client.get("/items")
4)运行Locust
-
启动Locust:
-
在命令行中,导航到包含
locustfile.py
的目录,并运行以下命令:-
locust
-
-
可以通过参数-f 指定locustfile的文件名。
-
可以通过参数-H 指定要测试的主机。
-
-
访问Web 界面:
-
Locust 将在默认端口8089 上启动Web 界面。
-
在浏览器中访问
http://localhost:8089
。
-
-
配置测试:
-
在 Web 界面中,设置要模拟的用户数和每秒启动的用户数。
-
-
开始测试:
-
点击"Start swarming" 按钮开始测试。
-
-
查看结果:
-
在 Web 界面中,查看测试结果,包括请求数、失败数、响应时间等。
-
5)常用技巧
-
使用TaskSet:
-
TaskSet
类用于定义一组相关的任务,可以更好地组织测试代码。
-
-
使用wait_time:
-
wait_time
属性用于设置虚拟用户在执行任务之间的等待时间。
-
-
分布式测试:
-
Locust 支持分布式测试,可以在多台机器上运行测试,模拟更大规模的并发用户。
-
-
使用events:
-
Locust 提供事件系统,让用户可以订阅测试期间的不同事件。
-
(10) k6(适用于 DevOps,现代化工具)
k6 是一款现代化的开源负载测试工具,特别适用于DevOps 环境。它以其开发者友好性、高性能和可扩展性而受到广泛欢迎。
-
适用于 API 和 WebSocket 负载测试
-
可与 CI/CD 集成,适合自动化测试
以下是 k6 的详细使用教程:
1)主要特点
-
JavaScript 编写:
-
使用 ES6 JavaScript 编写测试脚本,易于学习和使用。
-
-
基于Go 语言:
-
底层使用 Go 语言实现,具有高性能和低资源消耗。
-
-
开发者友好:
-
提供清晰的命令行界面和丰富的API。
-
-
自动化和CI/CD 集成:
-
易于集成到 CI/CD 流程中,实现自动化性能测试。
-
-
多种协议支持:
-
支持 HTTP/1.1、HTTP/2、WebSocket、gRPC 等多种协议。
-
-
丰富的指标输出:
-
提供详细的性能指标,包括响应时间、吞吐量、错误率等。
-
-
可扩展性:
-
支持使用扩展(xks)扩展k6的功能。
-
2)安装k6
-
官方安装指南:
-
访问 k6 官网,按照官方指南安装适合操作系统的版本。
-
通常可以使用包管理器(如 Homebrew、apt、yum)或直接下载二进制文件进行安装。
-
3)编写k6 测试脚本
-
创建JavaScript 文件:
-
创建一个 JavaScript 文件(例如
script.js
),编写测试脚本。
-
-
导入模块:
-
使用
import
语句导入 k6 模块。
-
-
定义测试场景:
-
使用
export default function () { ... }
定义默认函数,编写测试逻辑。 -
使用 k6 提供的 API 发送 HTTP 请求、WebSocket 连接等。
-
-
设置虚拟用户和迭代次数:
-
使用
export let options = { ... }
设置测试选项,例如虚拟用户数(vus)、迭代次数(iterations)、持续时间(duration)等。
-
-
添加检查和阈值:
-
使用
check()
函数添加检查点,验证响应结果。 -
使用
thresholds
选项设置阈值,定义测试通过的标准。
-
-
一个简单的例子:
import http from 'k6/http';import { check, sleep } from 'k6';
export let options = {vus: 10,duration: '30s',thresholds: {http_req_duration: ['p(95)<500'], // 95% 的请求响应时间应小于 500ms
},
};export default function () {let res = http.get('https://test.k6.io');
check(res, {'status is 200': (r) => r.status === 200,
});
sleep(1);
}
4)运行k6 测试
-
在命令行中运行:
-
导航到包含
script.js
的目录,并运行以下命令:-
k6 run script.js
-
-
-
查看测试结果:
-
k6 将在命令行中输出测试结果,包括性能指标和检查结果。
-
5)常用技巧
-
使用环境变量:
-
可以使用环境变量配置 k6 测试,例如设置 API 密钥、数据库连接字符串等。
-
-
使用数据参数化:
-
可以使用 CSV 文件或 JSON 文件提供测试数据,实现数据参数化。
-
-
使用分布式测试:
-
k6 Cloud 支持分布式测试,可以在多台机器上运行测试,模拟更大规模的并发用户。
-
-
与CI/CD 集成:
-
可以将 k6 集成到 CI/CD 流程中,实现自动化性能测试。
-
-
使用k6 cloud:
-
k6 cloud 提供更加强大的,性能测试功能。
-
4.兼容性测试工具(多设备适配)
用于检查 App 在不同品牌、系统版本、屏幕分辨率等设备上的兼容性。
(11) Firebase Test Lab(Google 官方,云端测试)
Firebase Test Lab 是 Google 官方提供的强大的云端设备测试服务,它允许开发者在真实的 Android 和 iOS 设备上测试他们的应用程序。
-
运行于真实 Android/iOS 设备上,可自动执行测试
-
适用于设备兼容性测试
以下是 Firebase Test Lab 的使用教程:
主要功能
-
真实设备测试:
-
Firebase Test Lab 提供了一系列真实的物理设备和虚拟设备,覆盖了各种Android 和iOS 版本、屏幕尺寸和硬件配置。
-
-
自动化测试:
-
支持 Robo 测试(自动抓取测试)、Instrumentation 测试(Android)、XCTest(iOS)和游戏循环测试。
-
-
测试报告:
-
提供详细的测试报告,包括崩溃日志、屏幕截图、视频录制和性能指标。
-
-
CI/CD 集成:
-
Firebase Test Lab 可以和持续集成(CI) 系统配合使用。
-
使用步骤
1)准备测试
-
准备应用:
-
确保Android 或iOS 应用程序已构建并打包。
-
对于 Android,需要准备 APK 文件。
-
对于ios,需要准备相应的ipa文件。
-
-
选择测试类型:
-
确定要运行的测试类型:Robo 测试、Instrumentation 测试、XCTest 或游戏循环测试。
-
2)在Firebase 控制台中运行测试
-
登录Firebase 控制台:
-
访问Firebase 控制台并选择项目。
-
-
导航到Test Lab:
-
在左侧菜单中,选择“Test Lab”。
-
-
上传应用:
-
点击“运行首次测试”或“运行测试”。
-
上传应用程序APK 或IPA 文件。
-
-
配置测试:
-
选择要测试的设备、操作系统版本、屏幕方向和语言区域。
-
根据选择的测试类型,配置相应的测试选项。
-
-
运行测试:
-
点击“开始测试”按钮。
-
3)查看测试结果
-
测试报告:
-
测试完成后,可以在 Firebase 控制台中查看详细的测试报告。
-
报告包含崩溃日志、屏幕截图、视频录制和性能指标。
-
-
分析结果:
-
分析测试报告,找出应用程序中的问题。
-
根据分析结果,修复问题并优化应用程序。
-
测试类型简介
-
Robo 测试:
-
自动浏览应用程序的用户界面,检测崩溃和异常,无需编写测试代码。
-
-
Instrumentation 测试(Android):
-
允许编写自定义的仪器化测试,用于执行详细的功能测试。
-
-
XCTest(iOS):
-
允许编写针对ios的ui测试。
-
-
游戏循环测试:
-
专门用于游戏测试,模拟游戏玩家的操作,确保游戏的稳定性和性能。
-
重要提示
-
Firebase 命令行:
-
可以使用Firebase 命令行工具(CLI) 从命令行运行测试。
-
-
CI/CD 集成:
-
Firebase Test Lab 可以与持续集成/持续交付 (CI/CD) 系统集成,实现自动化测试。
-
-
设备选择:
-
选择覆盖目标用户群的设备和操作系统版本,以确保全面的测试覆盖。
-
(12) Sauce Labs(云端跨设备测试)
Sauce Labs 是一款强大的云端跨设备测试平台,它允许开发者在各种真实的浏览器、操作系统和移动设备上测试他们的 Web 和移动应用程序。
-
提供 云端 iOS & Android 设备,支持自动化测试
-
适用于跨设备、跨平台兼容性测试
以下是 Sauce Labs 的使用教程:
1)主要功能
-
跨浏览器测试:
-
在各种浏览器版本和操作系统上测试Web 应用程序。
-
-
移动应用测试:
-
在真实的Android 和iOS 设备上测试移动应用程序。
-
-
自动化测试:
-
支持 Selenium、Appium 和其他自动化测试框架。
-
-
实时测试:
-
通过交互式会话进行手动测试。
-
-
CI/CD 集成:
-
与流行的持续集成/持续交付(CI/CD) 工具集成。
-
2)使用步骤
2.1注册和登录
-
访问Sauce Labs 网站并注册一个帐户。
-
登录到Sauce Labs 帐户。
2.2配置测试
-
选择测试类型:
-
选择要运行的测试类型:Web 自动化测试、移动自动化测试或实时测试。
-
-
配置测试环境:
-
选择要测试的浏览器、操作系统或设备。
-
配置其他测试选项,例如屏幕分辨率、语言和时区。
-
-
上传应用(移动应用测试):
-
如果要测试移动应用程序,请上传 APK 或 IPA 文件。
-
2.3 运行测试
-
自动化测试:
-
使用选择的自动化测试框架(例如Selenium 或Appium)编写测试脚本。
-
配置测试脚本以连接到Sauce Labs。
-
运行测试脚本。
-
-
实时测试:
-
启动一个实时会话。
-
通过交互式会话手动测试应用程序。
-
2.4查看测试结果
-
测试报告:
-
Sauce Labs 提供详细的测试报告,包括视频录制、屏幕截图和日志。
-
分析测试报告,找出应用程序中的问题。
-
-
仪表板:
-
使用Sauce Labs 仪表板查看测试结果的摘要。
-
(13) BrowserStack App Live(云端真机测试)
BrowserStack App Live 是一款强大的云端真机测试平台,它允许开发者在真实的Android 和iOS 设备上进行交互式的手动测试。
-
适用于多品牌、多系统、多分辨率的 App 测试
-
支持手动测试和自动化测试(Appium、Espresso、XCUITest)
-
官网:Interactive Mobile App Testing on 2000+ iOS & Android Devices | BrowserStack
以下是 BrowserStack App Live 的使用教程:
1)主要功能和优势
-
真实的设备云:
-
BrowserStack App Live 提供了一个庞大的真实设备云,包含了各种Android 和iOS 设备,覆盖了不同的操作系统版本和硬件配置。
-
开发者可以在真实的设备上进行测试,确保应用程序在各种设备上的兼容性和稳定性。
-
-
交互式手动测试:
-
App Live 允许开发者通过浏览器远程访问真实的设备,并进行交互式的手动测试。
-
开发者可以像使用真实的设备一样操作应用程序,检测应用程序的功能和用户体验。
-
-
实时调试:
-
App Live 提供了实时调试工具,开发者可以查看设备的日志、网络请求和性能指标,快速定位和解决问题。
-
-
易于集成:
-
App Live 可以与各种开发工具和测试框架集成,方便开发者在开发流程中集成测试。
-
-
提高测试覆盖率:
-
通过使用云端的真实设备,可以很方便的测试到大量的不同型号的设备,极大的提高了测试的覆盖率。
-
-
节省测试成本:
-
无需购买和维护大量的物理设备,节省硬件成本和人力成本。
-
2)使用步骤
2.1注册和登录
-
访问BrowserStack 网站并注册一个帐户。
-
登录到BrowserStack 帐户。
2.2上传应用
-
在 BrowserStack App Live 的仪表板上,上传应用程序构建(APK 或 IPA 文件)。
2.3选择设备和操作系统
-
选择要测试的Android 或iOS 设备以及操作系统版本。
2.4启动测试会话
-
点击“启动”按钮,启动一个测试会话。
-
将通过浏览器远程访问所选的真实设备。
2.5进行手动测试
-
像使用真实的设备一样操作应用程序,测试其功能和用户体验。
-
使用 BrowserStack 提供的调试工具,查看设备的日志、网络请求和性能指标。
2.6查看测试结果
-
在测试会话期间,可以记录问题和错误。
-
测试完成后,可以查看测试会话的记录和日志。
3)重要提示
-
网络条件:
-
BrowserStack 允许模拟不同的网络条件,例如慢速网络或丢包,以测试应用程序在不同网络环境下的表现。
-
-
本地测试:
-
如果要测试本地或防火墙后面的应用程序,可以使用 BrowserStack Local 建立安全隧道。
-
-
集成:
-
BrowserStack App Live 可以与各种开发工具和测试框架集成,例如 Jenkins 和 Jira。
-
5.崩溃分析 & Bug 监测工具
用于检测 App 崩溃日志、Bug 反馈,帮助开发者快速定位问题。
(14) Firebase Crashlytics(Google 官方)
Firebase Crashlytics 是 Google 官方提供的实时崩溃报告工具,它可以帮助开发者追踪、优先处理并修复影响应用质量的稳定性问题。
-
提供实时崩溃监测和详细错误日志
-
支持Android & iOS
以下是 Firebase Crashlytics 的使用教程:
1)主要功能和优势:
-
实时崩溃报告:
-
Crashlytics 能够实时收集应用崩溃信息,并立即在Firebase 控制台中显示。
-
-
智能崩溃分组:
-
它能够智能地将相似的崩溃事件分组,帮助开发者快速识别和定位问题。
-
-
详细的崩溃报告:
-
提供详细的崩溃日志、设备信息、操作系统版本等,帮助开发者深入了解崩溃原因。
-
-
用户影响分析:
-
显示崩溃对用户的影响程度,帮助开发者优先处理影响范围广的问题。
-
-
自定义事件和日志:
-
开发者可以自定义事件和日志,记录应用运行时的关键信息,帮助诊断问题。
-
-
与Firebase 集成:
-
Crashlytics 与Firebase 控制台和其他Firebase 服务集成,方便开发者在开发流程中集成崩溃报告。
-
-
跨平台支持:
-
Crashlytics 支持Android、iOS、Flutter 和Unity。
-
2)主要应用场景:
-
应用稳定性监控:
-
实时监控应用的崩溃情况,及时发现和解决问题。
-
-
问题诊断和修复:
-
通过详细的崩溃报告,快速定位崩溃原因,并进行修复。
-
-
发布前测试:
-
在应用发布前,使用Crashlytics 进行测试,确保应用的稳定性。
-
-
用户体验优化:
-
通过分析崩溃数据,优化应用的用户体验。
-
3)如何使用:
-
添加到应用:
-
首先,需要在Android 或iOS 应用程序中添加Firebase Crashlytics SDK。
-
安卓:
-
在项目级
build.gradle
文件中,添加 Google 服务插件。 -
在应用级
build.gradle
文件中,添加 Firebase Crashlytics 依赖项,并应用 Firebase Crashlytics Gradle 插件。
-
-
苹果系统:
-
使用CocoaPods 或Swift Package Manager 安装Firebase Crashlytics SDK。
-
-
-
查看崩溃报告:
-
在Firebase 控制台中,选择项目,然后选择"Crashlytics" 选项卡。
-
在此,可以查看崩溃报告、分析崩溃数据和管理崩溃问题。
-
-
分析报告:
-
分析报告,找出应用程序中的问题。
-
根据分析结果,修复问题并优化应用程序。
-
(15) BugSnag(企业级 Bug 监控)
BugSnag 是一款企业级的Bug 监控工具,它可以帮助开发者实时追踪、诊断和修复应用程序中的错误。
-
适用于 App 异常监控、错误跟踪
-
可集成 Slack、JIRA 等工具
-
官网:App Monitoring, Error Tracking & Real User Monitoring | Insight Hub
BugSnag 是一款企业级的 Bug 监控工具,它可以帮助开发者实时追踪、诊断和修复应用程序中的错误。以下是 BugSnag 的使用教程:
1)主要功能和优势:
-
实时错误监控:
-
BugSnag 能够实时捕获应用程序中的错误,并立即发送通知。
-
-
详细的错误报告:
-
提供详细的错误日志、设备信息、操作系统版本等,帮助开发者深入了解错误原因。
-
-
智能错误分组:
-
自动将相似的错误分组,方便开发者快速识别和处理常见问题。
-
-
用户影响分析:
-
显示错误对用户的影响程度,帮助开发者优先处理影响范围广的问题。
-
-
性能监控:
-
除了错误监控,BugSnag还提供性能监控,可以追踪应用程序的性能问题。
-
-
跨平台支持:
-
支持多种平台和语言,包括 Android、iOS、JavaScript、Python、Ruby 等。
-
-
CI/CD 集成:
-
BugSnag 可以和持续集成/持续交付(CI/CD) 系统配合使用。
-
2)主要应用场景:
-
应用程序稳定性监控:
-
实时监控应用程序的错误情况,及时发现和解决问题。
-
-
问题诊断和修复:
-
通过详细的错误报告,快速定位错误原因,并进行修复。
-
-
发布前测试:
-
在应用程序发布前,使用 BugSnag 进行测试,确保应用程序的稳定性。
-
-
用户体验优化:
-
通过分析错误数据,优化应用程序的用户体验。
-
3)如何使用:
-
注册和设置:
-
在BugSnag 官网注册一个账号。
-
创建一个新的项目,并获取 API Key。
-
-
集成SDK:
-
根据应用程序平台和语言,选择相应的 BugSnag SDK 进行集成。
-
将API Key 添加到SDK 配置中。
-
-
查看错误报告:
-
登录 BugSnag 控制台,查看错误报告。
-
分析错误日志、设备信息和用户影响等数据。
-
-
分析报告:
-
利用控制台提供的分析工具,找出应用程序中的问题。
-
根据分析结果,修复问题并优化应用程序。
-
-
CI/CD集成:
-
BugSnag可以和CI/CD工具集成,以便在发布应用之前,进行错误的检查。
-
(16) Sentry(开源错误监测工具)
Sentry 是一款强大的开源错误监测工具,它可以帮助开发者实时追踪、诊断和修复应用程序中的错误。
-
支持实时崩溃监测,可查看详细的堆栈信息
-
适用于 Web、Android、iOS
-
官网:Application Performance Monitoring & Error Tracking Software | Sentry
以下是Sentry 的使用教程:
1)主要功能和优势:
-
实时错误监控:
-
Sentry 能够实时捕获应用程序中的错误,并立即发送通知。
-
-
详细的错误报告:
-
提供详细的错误日志、设备信息、操作系统版本等,帮助开发者深入了解错误原因。
-
-
智能错误分组:
-
自动将相似的错误分组,方便开发者快速识别和处理常见问题。
-
-
性能监控:
-
Sentry 还提供性能监控,可以追踪应用程序的性能问题。
-
-
跨平台支持:
-
支持多种平台和语言,包括 JavaScript、Python,红宝石,Java、安卓,iOS 等。
-
-
开源:
-
Sentry 是开源的,用户可以选择使用 Sentry 提供的云服务,也可以选择自己搭建 Sentry 服务。
-
-
CI/CD 集成:
-
Sentry 可以和持续集成/持续交付 (CI/CD) 系统配合使用。
-
2)主要应用场景:
-
应用程序稳定性监控:
-
实时监控应用程序的错误情况,及时发现和解决问题。
-
-
问题诊断和修复:
-
通过详细的错误报告,快速定位错误原因,并进行修复。
-
-
发布前测试:
-
在应用程序发布前,使用 Sentry 进行测试,确保应用程序的稳定性。
-
-
用户体验优化:
-
通过分析错误数据,优化应用程序的用户体验。
-
3)如何使用:
-
注册和设置:
-
在 Sentry 官网注册一个账号。
-
创建一个新的项目,并获取 DSN(Data Source Name)。
-
-
集成SDK:
-
根据应用程序平台和语言,选择相应的 Sentry SDK 进行集成。
-
将 DSN 添加到 SDK 配置中。
-
-
查看错误报告:
-
登录 Sentry 控制台,查看错误报告。
-
分析错误日志、设备信息和用户影响等数据。
-
-
分析报告:
-
利用控制台提供的分析工具,找出应用程序中的问题。
-
根据分析结果,修复问题并优化应用程序。
-
-
CI/CD集成:
-
Sentry可以和CI/CD工具集成,以便在发布应用之前,进行错误的检查。
-
选择建议
测试类型 | 推荐工具 |
功能测试(UI 自动化) | Appium、Espresso、XCUITest、UI Automator |
性能测试(流畅度、CPU、内存、耗电) | Android Profiler、Xcode Instruments、Firebase Performance Monitoring |
压力测试(高并发、服务器负载) | JMeter、Locust、k6 |
兼容性测试(跨设备) | Firebase Test Lab、Sauce Labs、BrowserStack |
崩溃分析 & Bug 监测 | Firebase Crashlytics、Sentry、BugSnag |
扩展阅读:
Python自动化测试框架开发指南:从模块封装到持续交付的高效实践 | Python自动化测试框架开发指南:从模块封装到持续交付的高效实践-优快云博客 |
开发者必备:【物联网设备】蓝牙微信小程序测试工具(自开发) | 开发者必备:【物联网设备】蓝牙微信小程序测试工具(自开发)-优快云博客 |
5步打造完善的物联网IoT测试体系 | 5步打造完善的物联网IoT测试体系_物联网测试方案-优快云博客 |
物联网设备性能测试工具:快速定位性能瓶颈 | https://blog.youkuaiyun.com/moton2017/article/details/146154373 |
App测试工具全解析:从自动化到性能优化的完整方案 | https://blog.youkuaiyun.com/moton2017/article/details/146157475 |