软件测试

祝衍军

目录

  • 1 软件测试概述
    • 1.1 软件测试概述
    • 1.2 软件缺陷(BUG)
    • 1.3 软件测试职业发展
    • 1.4 软件测试分类
    • 1.5 软件测试流程
    • 1.6 课程思政:秘书也疯狂的故事
  • 2 黑盒测试
    • 2.1 黑盒测试概述
    • 2.2 等价类划分法
    • 2.3 边界值分析法
    • 2.4 决策表法
    • 2.5 正交实验设计法
    • 2.6 场景测试法
    • 2.7 错误推测法
    • 2.8 功能需求分析
    • 2.9 测试用例设计
    • 2.10 课程思政:五笔输入法的故事
  • 3 测试执行
    • 3.1 测试计划
    • 3.2 测试执行BUG记录
  • 4 白盒测试
    • 4.1 白盒测试概述
    • 4.2 程序流程图设计
    • 4.3 白盒测试用例设计
    • 4.4 JUnit单元测试
    • 4.5 课程思政:WPS的故事
  • 5 Web应用软件自动化测试
    • 5.1 Python自动化测试基本框架
    • 5.2 登录页面测试脚本设计
    • 5.3 新增文章页面测试脚本设计
    • 5.4 基于Unitest的登录测试用例集脚本设计
    • 5.5 课程思政:大并发案例阿里云的小故事
  • 6 智能终端APP自动化测试
    • 6.1 企业案例
    • 6.2 Android智能终端设备连接
    • 6.3 Android APP应用自动化测试
    • 6.4 Monkey 压力测试
    • 6.5 课程思政:鸿蒙的故事
  • 7 JMeter性能测试
    • 7.1 性能测试需求分析
    • 7.2 文章新增脚本开发
    • 7.3 文章新增脚本完善
    • 7.4 场景设计与运行结果分析
    • 7.5 课程思政:12306网站的技术进步故事
  • 8 Postman接口测试
    • 8.1 Postman
    • 8.2 企业网站管理内容系统接口测试
  • 9 Loadrunner性能测试(1+x考证高级相关知识点)
    • 9.1 录制回放
    • 9.2 思考时间设置
    • 9.3 检查点设置
    • 9.4 参数化设置
    • 9.5 关联设置
    • 9.6 集合点设置
    • 9.7 场景设计与运行分析
  • 10 省技能大赛
    • 10.1 竞赛系统
    • 10.2 相关知识
  • 11 企业案例
    • 11.1 软件测试公司真实案例
Monkey 压力测试

任务 Monkey 压力测试

【任务描述】:前面的学习中每个动作都需要通过写代码来控制,如何通过简单命令模拟按键输入、触摸屏输入、手势输入等动作,实现APP应用软件的压力测试 

【任务目标】:掌握使用Monkey工具测试APP应用软件稳定性、健壮性的方法。 

【任务储备】:

1、Monkey简介

Monkey Android SDK自带自动化测试工具,运行在模拟器里或真实设备的程序,可以生成用户事件随机流(单击、触摸、手势和系统级事件等)。Monkey测试中的所有事件都是随机的,不带任何主观性,常用于应用APP的压力测试,其运行示意图如下图所示


2、Monkey参数

Monkey可以通过前缀adb shell执行相关的测试命令,或者通过进入shell并直接输入monkey命令来完成命令执行,monkey命令的基本语法如下所示。

adb shell monkey [options] <event - count> 

参数类型分为基础参数、发送的事件类型和调试选项3类,具体的参数含义如下表所示。

1 Mokey常用参数列表

参数类型

参数名称

描述

基础参数

-p

用于约束限制,用此参数指定一个或多个package,指定包之后,monkey将只允许系统启动指定的APP,如果不指定包,monkey将允许启动设备中所有APP。参考示例:

adb shell monkey -p com.android.calculator2 100 -p com.android.settings 100

说明:-p空格后面是软件包名;100表示测试事件次数

-v

用于指定反馈日志的详细程度,总共范围内3个级别

日志级别 level 0

adb shell monkey -p com.android.settings -v 100

说明:仅提供启动提示,测试完成和最终结果等少量信息

日志级别 level 1

adb shell monkey -p com.android.settings -v -v 100

说明:提供较为详细的日志,包括每个发送到Activity的事件信息

日志级别 level 2

adb shell monkey -p com.android.settings -v -v -v 100

说明:提供最详细的日志,包括测试中选中(未选中的)Activity的事件信息

-s

用于指定伪随机数生成器的send值,如果send相同则两次monkey测试所产生的事件序列也相同。

–throttle

用于指定两个事件之间一个固定延迟,可以减缓monkey的执行速度。如果不指定,monkey将不会被延迟,事件将尽可能快地生成和发送消息。参考示例:

adb shell monkey ---throttle 3000 -p com.android.settings 100

说明:向设置发送100次随机事件,每次事件间隔为3秒。

发送的事件类型(各类事件类型的百分比总和不能超过100%

–pct-touch

触摸事件是指在屏幕某处按下并抬起的操作,模拟日常手机使用中的点击操作。参考示例:

adb shell monkey pct-touch 50 -p com.android.settings 100

说明:向设置发送100次随机事件,每次事件间隔为3秒。其中设定触摸的事件占比为50%

–pct-motion

滑动事件是指在屏幕某处按下、随机移动、抬起的操作类似于我们日常的滑动屏幕翻页的操作

–pct-pinchzoom

缩放事件是指在屏幕上的两处同时按下,并同时移动,最后同时抬起,模拟平时我们使用时的放大缩小操作

–pct-rotation

屏幕旋转事件这是一个隐藏事件,用于模拟手机的横竖屏切换。

–pct-majornav

主要导航事件是指点击“主要导航”按钮的操作。这些按键通常会导致UI界面的动作。如回退按键、菜单按键等。

–pct-syskeys

系统按键事件是指点击系统保留使用的按键操作,如点击 HOME键、返回键、音量调节键等

–pct-anyevent

其它类型事件除了上面的事件以外的其他事件。它包罗了所有其它类型的事件,如:按键、其它不常用的设备按钮、等等。

调试选项

–hprof

需要root权限,指定了该参数,monkey会在发送事件的前后生成性能分析报告,通常会在data/misc目录下生成一个5MB左右大小的文件。

参考示例:

adb shell monkey -p com.android.settings hprof ---throttle 1000 pct-touch 50 pct-motion 50 -v -v -v 1000 >c:\monkey.txt

说明:向设置发送1000次随机事件,每次事件间隔为1秒。其中设定触摸事件占比为50%滑动事件占比为50%,输出详细日志到Cmonkey.txt文件

–ignore-crashes

用于指定当应用程序崩溃时(Force&Close错误)monkey是否停止运行。若使用此参数,即使应用程序崩溃,monkey依然会发送事件,直到事件计数完成。

–ignore-timeouts

通常情况下,当应用程序发生任何ANRapplication not responding)错误时,monkey将停止运行。若指定了该参数,则monkey将会在产生错误信息后,继续向系统发送事件,直到指定事件全部运行完毕

–ignore-security-exceptions

通常情况下,指定应用程序发生许可错误时(如证书许可,网络许可等),monkey将停止运行。若指定了该参数,即使应用程序发生许可错误,monkey会继续向系统发送事件,直到指定事件全部运行完毕。

–kill-process-after-error

用于指定当应用程序发生错误时,是否停止其运行。如果指定此参数,当应用程序发生错误时,应用程序停止运行并保持在当前状态

*注意:应用程序仅是静止在发生错误时的状态,系统并不会结束该应用程序的进程)。

–monitor-native-crashes

用于指定是否监视并报告应用程序发生崩溃的本地代码。

3、Monkey日志分析

Monkey日志一般由五部分组成:

第一部分:包含 seed值,执行次数、包名

第二部分:被测设备上的所有应用包名,本次测试使用到了哪些包

第三部分:各个事件所占百分比,日志只显示了事件的代号

第四部分:具体事件

第五部分:结论,在日志的最下端。如果有类似以下字段表示本次的Monkey没有异常,测试通过。

## Network stats: elapsed time=5123ms (5123ms mobile, 0ms wifi, 0ms not connected)

// Monkey finished 

使用 Monkey 进行测试结束后,需要查看应用在测试中是否出现崩溃或无响应这类问题。测试结果可以通过如下方法判断:

 (1) 在日志中搜索“CRASH”,如果搜到,可以判断 App 在测试过程中发生过崩溃问题;

 (2) 在日志中搜索“ANR”Application Not Responding,如果搜到,可以判断 App 在测试过程中发生过无响应的问题ANR是一个比较严重的缺陷,一般是主线程的响应超过5秒,或者BroadcastReceiver没有在10秒内作出响应。

3在日志中搜索exception”,看有无其他异常事件。

【任务实施】

1、使用monkey测试com.android.calculator包,向其发送100次随机事件,每次事件间隔为1秒,输出level 2日志,并将详细日志输出到本地电脑;

2、观察执行过程

3、分析monkey执行日志,查看是否有错误。

完整操作视频如下所示。