本文相关工具:stagesep2
2019-04
2018-11-20
2018-9-10
速度类测试包括了启动速度、页面切换速度等不同类型,其核心思想是根据关键时间点对应用运行状态进行划分,以得到应用在不同状态间消耗的时间以判定运行效率。
其核心技术点是,关键点判定。个人认为可以分为依赖系统与不依赖系统两个方向:
依赖系统:倾向于与应用有更强的耦合,分析的主体通常是应用本身
不依赖系统:倾向于完全脱离应用进行分析,分析的主体可能是视频、图片等等
比较好的策略是两条线都要做,在相辅相成的同时能够互相保证彼此的可靠性达到完全的覆盖。
日志采集是纯系统层面的行为,可能会有系统日志正常但表现异常的情况
图像识别是纯用户层面的行为,对于状态的控制很难达到如日志般精确细致
本文面向图像识别方案展开,力图覆盖更多的实际场景。
一般来说,通过图像识别来进行测试分为三个步骤:
图像/视频 采集
视频处理
数据分析
其中,第一点如果能够将设备固化好是比较好解决的,而数据分析取决于视频处理的结果。
所以针对这种情况,我利用了图像识别与 OCR,编写了一套性能测试工具,用于提取视频中有用的信息。
通过使用stagesep,你可以将一段视频中每一帧的特征提取出来,生成数据供后续分析。
你只需要:
# 导入视频
ssv = stagesep.load_video('res/demo_video.mp4')
# 分析视频
result = stagesep.analyse_video(ssv)
就能够将视频中的特征提取出来!以|,,|
为分隔符,分别为:
帧编号
帧对应的视频时间
当前帧包含的文字
["微信"]
,代表当前帧中出现了微信
字样与首帧的图像相似度
与末帧的图像相似度
当前帧是否存在特征图片
如果结果为[[0, 0.27060889074688604]]
,两个参数分别代表:
match_template
的结果为 0.27适合在没有文字的场景下进行阶段界定
1|,,|0.03333333333333333|,,|["Component\u79d2\u5f00"]|,,|1.0|,,|0.8744666747566574|,,|[[0, 0.27060889074688604]]
2|,,|0.06666666666666667|,,|["\u6ef4\u6ef4\u51fa\u884c\u79d2\u5f00", "Component\u79d2\u5f00"]|,,|0.9945336759012924|,,|0.8732500535811166|,,|[[0, 0.2702154980448374]]
3|,,|0.1|,,|["\u6ef4\u6ef4\u51fa\u884c\u79d2\u5f00", "Component\u79d2\u5f00"]|,,|0.9906519049687903|,,|0.8724468661392125|,,|[[0, 0.27054042596336]]
4|,,|0.13333333333333333|,,|["Component\u79d2\u5f00"]|,,|0.988436570914413|,,|0.8721808443349266|,,|[[0, 0.2707208582528737]]
5|,,|0.16666666666666666|,,|["Component\u79d2\u5f00"]|,,|0.9871368443037327|,,|0.8719868653399506|,,|[[0, 0.27088961169977555]]
6|,,|0.2|,,|["Component\u79d2\u5f00"]|,,|0.9859772325311379|,,|0.8717396593736755|,,|[[0, 0.271510313888945]]
7|,,|0.23333333333333334|,,|["\u6ef4\u6ef4\u51fa\u884c\u79d2\u5f00", "Component\u79d2\u5f00"]|,,|0.9853347906343617|,,|0.8714577411208654|,,|[[0, 0.272172863024542]]
8|,,|0.26666666666666666|,,|["\u6ef4\u6ef4\u51fa\u884c\u79d2\u5f00", "Component\u79d2\u5f00"]|,,|0.9851302157674813|,,|0.8715705722879807|,,|[[0, 0.27234378435162576]]
9|,,|0.3|,,|["Component\u79d2\u5f00"]|,,|0.9837414105243203|,,|0.8715590796786445|,,|[[0, 0.273214648246217]]
10|,,|0.3333333333333333|,,|["Component\u79d2\u5f00"]|,,|0.9838234965397075|,,|0.8716437205735402|,,|[[0, 0.27276039086080933]]
每一帧会对应一行数据。
更加具体的使用参考github 主页。
skimage
提供的方法compare_ssim
相似度变化趋势是规律的,基本符合应用加载流程。
就目前来看,词数趋势难以自动化地反映问题。
但可以作为后续分析的重要依据。
match_template
方法供使用。目前直接使用 skimage 提供的方法。可以看到,对于特征的识别效果显著:
欢迎各种形式的讨论与 PR
欢迎star & fork