NewLLDebugTool
开发背景
-
在实际的 app 自动化测试中,通常是 UI 自动化、逻辑自动化(白盒测试)、压力测试(monkey)、Fuzzy 测试(mock)以及性能测试。但我们通常只做单一自动化测试,只关心单一测试的效果。例如,只关心性能测试的 CPU、内存和卡顿数据上报;只关心 monkey 测试能否遍历所有控件。很少将这些测试结合起来产生 1+1 > 2 的效果,例如 mock + 逻辑自动化、monkey + 性能测试、monkey + mock 等,都有可能产生神奇的化学反应。因此,有必要需要一个 SDK 将这些自动化方案集成。
-
在实际的 app 开发过程中,无论是开发还是测试,都会在 app 中添加一些小工具,例如日志上传、环境切换等。这些小工具在每个 app 中的用途都类似,因此也有必要需要一个 SDK 将这些通用的小工具集成在一起,进行沉淀,从而可以快速复用。
效果演示
功能模块
一、工具集:
- 【网络查看】 可以监控大部分网络请求,包括使用 URLSession、NSURLConnection 和 AFNetworking;
- 【Crash 查看】 可以捕获 Crash,保存 Crash 信息、原因和堆栈信息;
- 【app 信息查看】 可以监控 app 的内存、CPU 和 FPS,可以便捷地查看 app 的各种信息;
- 【沙盒】 提供了一个快速的方式来查看和操作沙盒文件,你可以更轻松地删除沙盒中的文件/文件夹,或通过 airDrop 来分享文件/文件夹。只要是 Apple 支持的文件格式,你都可以直接通过 NewLLDebugTool 预览;
- 【日志查看】 可以方便地查看日志。
二、自动化:
- 【iOS monkey】 支持算法配置、黑白名单配置、运行时间设置,可以便捷地对应用进行monkey测试(完成度100%);
- 【cocos monkey】 支持算法配置、黑白名单配置、运行时间设置,可以便捷地对应用进行monkey测试(完成度100%);
- 【逻辑自动化】 支持对应用进行逻辑自动化测试(100%);
- 【ui自动化】 支持对应用进行UI自动化(100%);
- 【Fuzzy测试】 已完成私有网络协议的mock(这部分暂不开源,内部产品使用),已完成http/https协议mock(完成度100%);
- 【性能测试】 可以监控应用的内存、CPU和FPS,待完成内存泄漏的监控(完成度50%);
- 【webview性能】 可以监控WebView的性能(完成度100%);
安装
CocoaPods 整合 NewLLDebugTool
。
Objective - C
- 将
pod 'NewLLDebugTool'
添加到Podfile中。如果只想在Debug模式下使用,则在Podfile中添加pod 'NewLLDebugTool' ,:configurations => ['Debug']
。- 在终端输入
pod install
进行整合。如果找不到NewLLDebugTool
或找不到最新版本,可以先运行pod repo update
,然后执行pod install
。- 在AppDelegate中添加头文件
#import "<NewLLDebugTool/LLDebug.h>"
。- 在
"application:(UIApplication * )application didFinishLaunchingWithOptions:(NSDictionary * )launchOptions"
中添加[[LLDebugTool sharedTool] startWorking]
如下所示:
#import "AppDelegate.h"
#import "LLDebug.h"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// The default color configuration is green background and white text color.
// Start working.
[[LLDebugTool sharedTool] startWorking];
// Write your project code here.
return YES;
}
更多使用
- 你可以下载并运行 NewLLDebugToolDemo 来发现NewLLDebugTool的更多使用方式。Demo是在XCode9.3,ios 11.3,cocoapods 1.5.0下运行的,如果有任何版本兼容问题,请告诉我。
相关工程
相关文档
- NewLLDebugTool——一款可以快速进行iOS自动化的工具
- NewLLDebugTool——http/https mock实现原理
- 新LL调试工具 —— iOS Monkey保活
- 新LL调试工具 —— 一个在IOS上可以脱机运行测试用例的自动化框架
- 新LL调试工具 —— 随身版Monkey支持脚本功能
联系
- 如果你需要帮助,请打开一个issue。
- 如果你想问一个普遍的问题,请打开一个issue。
- 如果你发现了一个bug,并能提供可靠的复制步骤,请打开一个issue。
- 如果你有一个功能请求,请打开一个issue。
- 如果你发现有什么不对或不喜欢的地方,就打开一个issue。
- 如果你有一些好主意或者一些需求,请发邮件至[email protected]给我。
- 如果你想贡献,提交一个pull request,请发邮件至[email protected]给我。
联系
- 可以发邮件至[email protected]
更新日志
2019-10-25(tag:1.3.6)
- 增加WKWebView和UIWebView的性能监控,可以查看webview的白屏时间和首屏时间
- Monkey心跳上报,可以查看Monkey的运行时间和手机运行Monkey的状态
- 增加Monkey脚本功能
- FMDB以源码的方式引入,消除 duplicate symbol(重复符号) 的问题
2019-9-28(tag:1.3.5)
- 通过白名单增加monkey驻留页面的功能,即如果当前控件树包含白名单控件,会优先点击白名单里面的控件
- 添加文件日志,使用C++编写,提升效率
- 增加cocos性能信息查看功能,主要有Frame Rate、Seconds Per Frame,Current Calls 和 Current Verts等指标
- 增加性能曲线的图形化展示,可以实时查看
- 增加逻辑自动化框架,在sdk中可以脱机运行测试用例
- 在逻辑自动化框架的基础上,增加cocos的ui自动化底层驱动
2019-9-2(tag:1.3.4)
- 增加monkey控制开关,可以通过摇晃手机来停止monkey
- 打通提单系统,自动提取crash和js错误
- 在原有的NSException和Signal监控的基础上,增加ANR监控、mach crash监控和cpp crash监控
- 兼容低版本FMDB的API
2019-7-10(标签:1.3.3)
- 修复了UITabBar无法显示的bug
- 默认关闭网络抓包,通过开关控制
- 集成OHHTTPSTUBS,在原有功能基础上修改,支持http/https在线mock,mock规则是置空和置NULL。可以结合monkey进行模糊测试
2019-7-3(标签:1.3.2)
- ios monkey增加权重快速遍历算法和随机遍历算法
- ios monkey增加配置界面:算法设置、黑白名单设置、执行时间设置
- ios monkey增加覆盖率显示
- 修复KIF执行失败的错误
- 增加log上传接口
2019-5-15(标签:1.3.1)
- 增加cocos monkey功能
- 修复了横竖屏截图的兼容性问题
- 使用oc重写了swift monkey paws
- ios monkey增加控件识别能力
2019-4-09(标签:1.3.0)
- 可以分享文件夹
- 增加monkey paws
- 兼容横竖屏
2019-2-26(标签:1.2.9)
- 更改并优化了内存和log的实现方式
- hook私有网络,增加了延迟和丢包函数来模拟弱网络
- 增加随行版monkey功能
许可
此代码根据MIT许可证的条款和条件发布。