一、 Android Monkey简介
Android Monkey是一个命令行工具,可以用来随机测试安卓应用程序,其核心目的是在不需要过多人工干预的情况下,找到应用程序中的错误或崩溃现象,并通过测试报告展示测试结果。除了Android Monkey,还有类似的工具,比如Selendroid、Appium、Robotium和Calabash ,但是它们的测试重点或者测试方法和Monkey有所不同。
具体来说,Android Monkey的本质就是模拟一个快速且不可预知的用户交互行为序列,然后收集应用程序的崩溃信息、ANR信息(即应用程序未响应)和应用程序的其他稳定性问题。这种随机的、高并发的测试方式可以有效的检测出应用程序中的潜在缺陷。
$ adb shell monkey --pct-touch 50 --pct-motion 25 --pct-nav 13 --pct-majornav 7 --pct-syskeys 5 -v 1000
上述命令中的每一个参数都会影响Monkey的测试场景,比如此处的
二、 Android Monkey测试优点
Android Monkey相较于其他测试方式有以下优点:
1. 可以随机进行测试
与人工测试的精确测试方式相比,Android Monkey模拟的测试行为是不可预知的,这意味着它可以在更大的状态空间内随机执行测试,从而提高测试效率。
2. 能够重现测试结果
由于是随机测试,每次测试结果会不一样,但是命令行下的Monkey工具可以使用一个“seed”参数来重现相同的测试。这个seed是在执行命令时自定义的一个值,用于初始化测试的随机数种子,从而保证需要重现某一个结果时,可以用相同的随机数种子执行Monkey。另外,在Android日志系统 (logcat) 中,测试操作会被标记为Monkey操作,从而帮助开发人员轻松识别测试期间发生的任何问题。
3. 能够自动测试代码分支
Android Monkey的随机性能够保证尽可能多的测试应用程序中各分支的代码,这对于代码覆盖率的计算非常有用,同时也使得开发人员更加信任测试报告。
总体来说,使用Android Monkey进行自动化测试可以高效地发现应用程序中潜在的缺陷,同时通过稳定性测试报告展示测试结果,方便开发人员进行问题追踪和修复。
三、 Android Monkey的Test Suite
根据上述Monkey测试的优点,我们可以使用Monkey作为自动化测试套件来测试Android应用程序。自动化套件由以下几部分组成:
1.测试计划(Test Plan)
测试计划指定了测试目标、测试的范围和测试要求。在测试计划中,主要是描述软件测试的范围和测试的策略,同时指定测试目标在哪些环境中进行测试,什么时间段进行测试,选定哪些人员进行测试等。
2.测试用例(Test Cases)
测试用例是描述测试场景和执行过程的具体步骤,测试用例应该包含测试机器状态配置、Android Monkey参数设置、测试目标应用程序资料、自动化测试流程等相关信息。
$ adb shell monkey --pct-touch 50 --pct-motion 25 --pct-nav 13 --pct-majornav 7 --pct-syskeys 5 -v 1000
3.测试脚本(Test Script)
测试脚本是将测试用例转化为可以执行的测试脚本,不同的测试套件可以使用不同的测试脚本语言,比如Python、Ruby等,但是一般推荐使用Python。
import os import time package_name = "com.example.testapp" monkey_command = "adb shell monkey -p " + package_name + " --pct-touch 50 --pct-motion 25 --pct-nav 13 --pct-majornav 7 --pct-syskeys 5 -v 1000" def run_test(): os.system(monkey_command) def main(): while True: run_test() time.sleep(60) if __name__ == "__main__": main()
在这个脚本中,我们定义了一个函数“run_test”,用于执行Android Monkey测试命令。然后在“main”函数中调用“run_test”函数,并且每执行一次Monkey测试就休眠60秒。这个脚本的作用是循环执行Monkey测试。
四、 Android Monkey使用注意事项
最后在使用Android Monkey时需要注意以下事项:
1.使用命令行工具时请谨慎操作
在使用Android Monkey进行测试时,因为测试行为是随机的,如果测试参数没有设置好或者没有过滤掉所有的应用程序,底层系统和其他应用程序将会间歇性地受到测试命令的干扰。从而导致意外效果,甚至是系统故障。因此,在使用Android Monkey进行测试时,请谨慎操作,并仔细检查测试命令。
2.使用Seed参数进行测试结果重现
在使用Android Monkey进行测试时,一旦发现稳定性问题,应该第一时间把电脑远程连接到目标安卓设备,使用Shell缓存机制,重现测试结果。另外,可以使用命令行下的“--ignore-crashes”和“--ignore-timeouts”参数跳过失效的测试,从而使Monkey脚本持续执行。
3.正确理解测试模式
Android Monkey支持模式测试和时间测试两种测试模式。模式测试是通过检测应用程序是否会触发monkey事件来判断测试是否完成。而时间测试是设置执行测试的时间长短,之后停止执行Monkey测试。因此,在使用Monkey时要特别注意测试模式设置,从而确保测试的完备性和准确性。
五、 总结
Android Monkey是一个轻量级、高效的自动化测试工具,能够有效的测试Android应用程序的稳定性和功能性。同时,在使用Monkey进行测试的过程中,要注意测试命令和测试模式的正确设置,从而得到正确的测试结果。综合来看,Android Monkey所提供的测试效率和测试能力,能够满足当今开发和质量管理的需求,是不可或缺的自动化测试神器之一。