
传统的录屏方式不仅操作繁琐,还可能因为设备性能的限制导致画面质量不佳,甚至无法捕捉关键细节。对于测试工程师来说,这种方式显然无法满足高效、精准的测试需求。尤其是在长时间压测或高并发场景下,如何实时观察 UI 表现并记录异常现场,成为了一个亟待解决的难题。
那有没有一种投屏神器,既能保证测试数据真实,又能让你实时观察 UI 表现,同时还能兼顾便捷性和稳定性?这就是今天要聊的主角——scrcpy。
scrcpy 是由 Genymobile 开发的开源 Android 投屏工具,以轻巧、跨平台和零侵入的特点赢得了测试工程师的青睐。scrcpy 不仅解决了传统方法的痛点,还为性能测试带来了全新的可能性。它的零侵入设计让测试数据更加真实可靠,高帧率和低延迟的特性让 UI 细节一览无余。更重要的是,它支持录屏、截图、无线投屏等多种功能,适合各种复杂的测试场景。无论是短时间的功能验证,还是长时间的稳定性压测,scrcpy 都能轻松胜任。
如果你还在为性能测试中的画面质量和操作效率发愁,不妨试试 scrcpy。它不仅是一个投屏工具,更是测试工程师的得力助手,让你的测试工作更加高效和专业。
scrcpy 是什么
scrcpy(screen copy)是 Genymobile 开发的开源 Android 投屏工具,最大的特点就是轻巧、跨平台、无侵入。它通过 ADB 调用手机自带的视频编解码器实现投屏,不需要 Root,也不必安装任何第三方 APK,对性能几乎零影响。
它支持 Windows、macOS、Linux,而且安装极其简单。比如在 Mac 上,只需要一条命令:
brew install scrcpy # 安装 scrcpy,FunTester 推荐连上 USB,打开开发者模式的 USB 调试,然后运行:
scrcpy # 一键启动,FunTester 提示:默认即可投屏就能在电脑屏幕上看到手机实时画面了,延迟低至 35–70ms,最高支持 120fps,流畅得堪比本地操作。
scrcpy 的技术原理
scrcpy 的核心原理是通过 ADB 调用手机的 H.264 硬件编码器,将屏幕内容实时编码成视频流,并通过 USB 或 Wi-Fi 传输到电脑端进行解码和显示。由于直接利用了手机的硬件能力,避免了额外的资源消耗,因此性能损耗极低。
scrcpy 的技术原理可以概括为:手机端通过 H.264 硬件编码器生成高帧率、高分辨率的视频流,并通过 ADB 通道传输到电脑端。USB 连接时带宽更高,延迟更低,确保画面流畅。电脑端利用 ffmpeg 或其他解码器实时解码视频流并显示画面。这种设计充分利用了手机的硬件能力,避免额外资源消耗,既高效又稳定,适合性能要求较高的测试场景。这种设计不仅高效,还能保证画面质量和流畅度,适合对性能要求较高的场景。
为什么性能测试离不开 scrcpy
设想一个典型场景:你需要对一款电商 App 进行长时间的高并发稳定性测试,比如连续压测 12 小时。测试过程中,你关注的核心问题包括:在接口高压下,App 的 UI 是否会出现卡顿或掉帧;当异常发生时,是否能够快速捕获现场画面以便后续分析;在远程协作中,如何让团队成员实时查看测试表现;以及在无人值守的情况下,手机是否能够长时间稳定运行而不受干扰。scrcpy 的高帧率低延迟、录屏与截图功能、无线投屏能力以及长时间稳定运行的特性,完美解决了这些痛点,让测试工作更加高效和专业。
以前的测试方式通常需要拍摄视频或安装第三方 App,不仅操作繁琐,还可能影响性能数据的真实性。而 scrcpy 几乎解决了这些痛点。它采用零侵入设计,无需安装额外应用,确保测试数据更加可靠。高帧率和低延迟(35–70ms)让 UI 细节实时呈现,掉帧和卡顿问题一目了然。更重要的是,scrcpy 支持录屏与截图功能,只需一行命令即可完成压测过程的全程录像,方便后续回放和分享。这种高效、稳定的工具不仅提升了测试效率,还为性能测试提供了更专业的解决方案。
scrcpy --record bug_scene.mp4 # FunTester 提示:保存崩溃现场视频长时间稳定运行:支持关闭屏幕节能,避免误触,适合长时间无人值守的 Monkey 压测。
scrcpy --turn-screen-off # FunTester 提示:关闭屏幕仍可投屏无线投屏远程协作:只需一次 USB 配对,在局域网内即可无线投屏,结合视频会议工具,方便异地协作。 具体步骤如下:
adb tcpip 5555,让设备进入无线调试模式。adb shell ip route 获取),然后执行 adb connect <设备IP>。scrcpy 即可无线投屏。自动化友好:支持命令行参数,与 adb、Monkey、UIAutomator 配合得天衣无缝。比如:
#!/bin/bash
# FunTester 自动化示例:压测并录屏
adb shell monkey --pct-touch 50 -p com.demo.app 5000 &
scrcpy --record monkey_test.mp4 --turn-screen-off实际应用场景
UI 性能测试:实时观察 App 的 UI 响应,捕捉掉帧和卡顿问题,确保用户体验流畅。在高并发场景下,scrcpy 的高帧率投屏功能能够快速定位 UI 异常,避免遗漏关键细节。同时,它支持长时间压测,持续监控 UI 表现,帮助发现潜在性能瓶颈。
崩溃现场记录:通过 scrcpy 的录屏功能,可以保存 Bug 发生时的画面,便于后续分析和问题复现。支持高分辨率录制,确保画面清晰,方便团队成员查看异常细节。结合截图功能,快速记录关键时刻的 UI 状态,显著提升问题定位效率。
远程协作:scrcpy 的无线投屏功能结合视频会议工具,让团队成员可以实时查看测试进展,提升沟通效率。在远程协作中,通过实时画面分享,团队成员能够快速讨论和解决问题,减少沟通成本,适合异地协作场景。
自动化测试:scrcpy 支持与 Monkey 或 UIAutomator 配合,执行自动化测试并录制测试过程,便于回放和分析。通过命令行参数,轻松集成到现有测试框架中,提升自动化测试效率。录屏功能结合日志数据,全面分析测试结果,帮助发现潜在问题。
高级玩法,解锁更多姿势
多设备并行:指定设备序列号可同时打开多个窗口,适合多机并行压测。
scrcpy -s emulator-5554 &
scrcpy -s emulator-5556 & # FunTester 提示:同时投屏多台设备调节分辨率与码率:降低资源占用,长时间录制更稳定。
scrcpy --max-size 1024 --bit-rate 2M # FunTester 推荐:降低带宽只读模式:只观察不控制,进一步降低资源消耗。
scrcpy --no-control # FunTester 提示:纯观测模式无线投屏:通过 Wi-Fi 实现无线投屏,适合需要灵活操作的场景。
adb tcpip 5555
adb connect <设备 IP>
scrcpy实战建议
在进行无线投屏之前,务必确保手机和电脑处于同一局域网内,并且 Wi-Fi 信号稳定。这不仅能够保证投屏画面的流畅性,还能减少因网络波动导致的延迟问题。尤其是在远程协作场景中,稳定的网络环境是高效沟通的基础,建议优先选择 5GHz Wi-Fi 网络以获得更好的传输效果。
此外,在性能测试过程中,建议同时收集 adb logcat 日志和性能监控数据,与录制的视频画面结合分析。这种多维度的数据收集方式能够帮助测试工程师快速定位问题,尤其是在高并发场景下,日志与视频的结合能够清晰展现异常发生的时间点及其影响范围,从而提升问题排查效率。
对于长时间压测场景,合理控制投屏的分辨率和码率至关重要。通过降低分辨率和码率,可以显著减少资源占用,确保设备在长时间运行中保持稳定。同时,使用 USB 连接时,建议优先选择高质量的数据线,以确保传输的稳定性和可靠性,避免因数据线质量问题导致画面卡顿或连接中断。