前言
所谓工欲善其事,必先利其器。当我们遇到任务和挑战时候,作为工程师来说第一反应自然是造一个华丽的轮子,本文称之为测试 “兵器”。自古以来造轮子和复用轮子一直是大家津津乐道的话题,本文先从移动端测试的方向给大家呈现一张 “兵器谱”,帮助新老同学在工作中需要用到的 “兵器” 的时候能快速找到称手的那一把。
兵器谱总览
以上是我们日常业务测试中可能涉及到的(包括但不限于)十二个方面,真是不整理不知道,一整理吓一跳,没想到会有那么多方向需要去写,作者非常后悔上篇文章吹过的牛 X,感觉后面三年都要献给公众号事业了。
兵器细分
-
常见应用模式
- Native
- Hybird
- H5
- React Native
-
常用调试工具
- Android 平台
- adb
- ddms
- aapt
- monkey
- monkeyrunner
- emulator
- hierarchyviewer
- monitor
- UIAutomatorviewer
- iOS 平台
- atos
- xcode
- instruments
- codesign
- iExplorer
- xcrun
-
常见 UI 自动化框架
- Android 平台
- Instrumentation
- Appium
- Robotium
- Instrumentation
- Athrun
- Monkey
- MonkeyRunner
- UIautomator
- Selendroid
- Calabash-Android
- Espresso
- cafe
- Macaca
- Airtest
- iOS 平台
- UIautomation
- Frank
- Appium
- Monkeytalk
- Calabash-iOS
- iOS-driver
- XCUITesting
- TuneupJs
- YNM3K
-
常见的单测框架
- Android 平台
- Robolectric
- Mockito
- RxJava
- Instrumentation
- AndroidJUnitRunner
- Espresso
- iOS 平台
- XCTest
- GHUnit
- OCUnit
- OCMock
- OCMockito
- Expecta
- OCHamcrest
-
常用的抓包工具
- Fiddler
- Charles
- Tcpdump
- Wireshark
- BurpSuites
- 第三方 proxy server(如:Anyproxy、mitmproxy、browsermob-proxy)
-
弱网模拟
- Fiddler
- Charles
- ACT(Augmented Traffic Control by facebook)
- iOS developer mode
- 其他限速软件,比如各种随身 WIFI、路由器、网卡等
-
常用的专项测试工具
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
- 功耗测试仪,如安捷伦
-
静态扫描
- Android 平台
- 火线
- Findbugs
- Infer
- Sonar
- Lint
- P3C(阿里基于 PMD 开发)
- PMD
- CheckStyle
- 360 代码卫士(商业)
- Fortify(商业)
- Coverity(商业)
- iOS 平台
- OClint
- infer
- scan-build
- Clang Static Analyzer
-
代码覆盖率
- JaCoCo
- Cobertura
- Emma
- Code Coverage in Xcode(iOS)
-
常用的云测平台
- 免费开源
- 商业(限时免费)
- 腾讯 WeTest
- Testin
- 百度 MTC
- 阿里 MQC
- 腾讯 UTest
- 东软易测云
- TestBird
- 华为云
- Pefecto
- LessPainful
- TestDroid
-
持续集成
- Jenkins
- Travis CI
- Buildbot
- Strider
- Integrity
- GO
-
监控 SDK
- BlockCanary
- LeakCanary
- Bugly
- crashlytics
- 友盟
- 网易云捕
后话
罗列了那么多 “兵器”,相信一定有一些是大家用过的,有一些可能是第一次见,不知道具体的用途和作用,大家不用着急,反正我也不会给你们逐一介绍的,因为作者余生还有很多事要去做。
我会从里面挑选一些我们有实践经验的 “兵器”,和大家分享我们实践过程中的经验和教训。
由于本人认知有限,有很多不足和理解有误的地方,还请各位看官多多留言指点。
↙↙↙阅读原文可查看相关链接,并与作者交流