Sapienz:安卓应用多目标自动化测试
www.fireknight.tech 个人博客,欢迎访问,CSDN不定期更新
-
要点:遗传算法、安卓测试、测试套件、多目标优化、NSGA-II
-
总结
- 定义了遗传算法套件级别和测试用例级别
- 定义了测试用例级别的两种基因,一种是原子操作 atomic genes,一种是在特定UI下的一系列操作 motif genes.
- 还有遗传算法的适应度函数,虽然没有写具体func,但思路说是覆盖率 + 长度(越短越好)+ 检测到错误数
-
摘要
- Sapienz:安卓测试,基于多目标搜索,自动搜索和优化测试序列,最小化长度,最大化覆盖率和错误揭露
- Sapienz:结合了随机模糊系统和基于搜索的探索、seeding、多级插桩
-
Intro
- 探索性测试:测试工程师使用、探索应用,然后编写、执行测试
-
The key insight in our approach is that minimising test sequence
length and maximising other objectives can be combined in
a Pareto-optimal multi-objective search-based approach to
Android testing.最小化测试序列,最大化别的目标通过帕累托优化多目标搜索
-
相关工作
- Monkey
- Dynodroid: 基于反馈的monkey
- AndroidRipper: 深搜测试
-
THE SAPIENZ APPROACH
-
适用于白盒、灰盒、黑盒测试
-
two types of genes: the low-level atomic genes and the high-level motif genes
-
基于测试的多目标搜索
-
多目标:覆盖率、测试序列长度、崩溃数量
-
优化方法:NSGA-II
-
染色体表达
- 种群:测试套件
- 染色体:test sequences <T1, T2, …, Tm>
- 基因:test events <E1, E2, …, En>
-
交叉
- 测试套件级别交叉
- 测试用例级别交叉
-
选择
- rank选择
-
适应度函数:
- coverage, length of the test and number of revealed crashes
-
-
探索策略
- 两种基因的组合
-
静态动态分析
-
字符串种子
- 从xml提取,便于在需要的时候输入,更有效
-
Multi-level instrumentation for skeleton and skin coverage
-
-
-
结论
- Sapienz的进化算法不断优化覆盖范围,序列长度和崩溃发现的数量,寻求揭示尽可能多的崩溃,同时最小化测试序列的长度。