热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

安卓测试的介绍与初次使用

在第十五周的个人博客上,王老师安排我们根据最终的团队大作业所用的软件(Androidstudio)进行软件测试的介绍,而我选

  在第十五周的个人博客上,王老师安排我们根据最终的团队大作业所用的软件(Android studio)进行软件测试的介绍,而我选择的是基于Android自动化测试Monkey runner安卓测试软件,它将作为我们项目最后成品的效率测试工具。

  

1Monkey runner简介

Monkey runnerandroid SDK中自带的工具之一,此工具提供API可按制android设备或模拟器。

Monkey runner提供了一个API,使用此API写出的程序可以在Android代码之外控制Android设备和模拟器。通过monkey runner,您可以写出一个Python程序去安装一个Android应用程序或测试包,运行它,向它发送模拟击键,截取它的用户界面图片,并将截图存储于工作站上。

Monkey runner工具的主要目的是用于测试功能/框架水平上的应用程序和设备,或用于运行单元测试套件,但您当然也可以将其用于其它目的。

那么在本文中,首先,我们将介绍什么是money测试工具,如何在安卓软件中运用此测试软件进行测试。

2、Monkey 的命令特性和选项分类

  Monkey是一个命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流,实现对正在开发的应用程序进行压力测试。Monkey包括许多选项,它们大致分为四大类:

· 基本配置选项,如设置尝试的事件数量。

· 运行约束选项,如设置只对单独的一个包进行测试。

· 事件类型和频率。

· 调试选项

它是Android系统自带一个命令行工具,可以运行在模拟器里或者真是设备中运行。

monkey向系统发送伪随机的用户事件流,实现对正在开发的应用程序进行压力测试。

3、Monkey命令参数介绍

   monkey前的准备(命令)→此处我们也可以在Android studioterminal中进行,也可以在cmd命令框中进行,但手机与电脑进行USB连接,并在开发者选项中选中USB调试。而如果你不是测试自己手机上的,如果你采用模拟器测试,你应该先启动Android studio,然后设置好模拟器,并进入模拟器测试状态。

当我在自己的电脑上输入adb命令时,其显示:'adb' 不是内部或外部命令,也不是可运行的程序或批处理文件。即说明环境配置还没有完全。

因此以下步骤是如何配置环境,使系统中由adb命令。

①下载SDK(Software Develpoment Kit):软件开发程序包

  但是此步骤基本上不用操作,因为在下载完Android studio后,就应当自动配置完毕,如果没有配置完毕,可以进入官网进行相应版本的下载。

(https://android-sdk.en.softonic.com/) 

在文件夹中就会出现sdk软件。接着,进入电脑设置中的高级设置以及环境变量配置中。

在系统变量下面点击新建,输入的变量名为ANDROID_HOME,变量值为SDK的存储路径,你存在哪里就填那个地址,我是存在D盘中路径为如下:D:\adt-eclipse\sdk 填写完以后,确定保存。

 

设置path,因为系统本来就有这个变量,点开这个变量,在变量值的最后加入;%ANDROID_HOME%\tools 然后保存进入下一步。

 

当我们再次打开cmd输入adb之后,就会成功显示输入adb devices,真机和模拟器名称。

 

4、Monkey命令测试过程

①当我们在cmd的命令中输入adb shell monkey 或者 adb shell monkey -help命令之后,我们可以查看到monkey中的help选项命令,包括图和通过脚本文件进行monkey测试等等。

 

② 如果在monkey参数中不指定任何参数,monkey所得到的动作都是随机分配的,9个动作其每个动作分配的百分比之和为100%,我们可以通过添加命令选项来控制每个事件的百分比,进而可以将操作限制在一定的范围内。

我操作了一下不加动作百分比控制,系统默认分配事件百分比的情况。

 

 

再看一下指定事件,控制事件百分比之后的情况

命令:adb shell monkey -v -p your.www.com --pct-anyevent 100 500

 

说明:--pct-anyevent 100 表明pct-anyevent所代表的事件的百分比为100%

 

③ 应用程序包都在data目录中的data目录下,我们输入命令:cd data/data 进入目标data文件夹,在执行命令:ls,可找到刚才加载项目的应用程序包而当我们再次输入adb shell的时候:

 

参数介绍:

最后的500,表示测试触发500个事件(500个事件要按比例分摊到9个事件当中,如何指定不同的事件比例上面已经说过了)。

如果在事件之间插入延时,使用参数:--throttle 5000 这里的5000为毫秒单位。通过这个选项,可以降低monkey的执行速度;如果不指定该选项,Monkey将不会被延迟,事件将尽可能快的被产生。

-s 伪随机数生成器的seed值。如果用相同的seed值再次运行monkey,它将生成相同的事件序列,对9个事件分配相同的百分比。

-v 命令行的每一个-v将增加反馈信息的级别。

④而当我们想测试所连接的手机,不让手机进入锁屏状态。

查看包名:查看电脑中某一位置的apk文件的包名:电脑打开CMD-进入TMG目录-运行设备--查看包名aapt dump badging *.apk(apk文件的路径,可以直接拖拽

 

或者直接查看手机中存在的apk包,进入adb shell 命令后---手机的data/data文件夹--ls查看所有包名 找到要测apk的包名

运行monkey,对此包进行300次无规律点击。

 

或者运行monkey,对此包进行300次无规律点击后将日志导出到电脑的某一位置

测试停止后,查看导出的monkey日志,发现问题。

 

log的最开始都会显示Monkey执行的seed值、执行次数和测试的包名。

首先我们需要查看Monkey测试中是否出现了ANR或者异常,无响应问题(ANR问题):在日志中搜索“ANR ”(此处有空格), 崩溃问题:在日志中搜索“Exception”,快速定位到关键事件信息 。然后查看Monkey里面出错前的一些事件动作,并手动执行该动作,找出重现步骤,给开发。

5、monkey常用参数详解

注意,此处操作都应该打开自己的安卓虚拟器。

 

-v  日志详细程度

Level 0  :  adb shell monkey  -p fishjoy.control.menu  -v 100   最简单(默认),除了启动、测试完成和最终结果外只提供较少的信息。

 

在不同的测试中,我们会发现参数都是有所不同的。

Level 1  :  adb shell monkey  -p fishjoy.control.menu  -v  -v 100  提供了较为详细的测试信息,如逐个发送到Activity的事件信息

 

Level 2  :  adb shell monkey  -p fishjoy.control.menu  -v  -v  -v 100 提供了更多的设置信息,如测试中选中或未选中的Activity信息

比较常用的是-v -v -v,一般会保存到指定文件中供开发人员查找bug原因时使用

-s(随机数种子)

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

示例: monkey测试1:adb  shell  monkey  -p fishjoy .control.menu  –s 10  100

          monkey测试2:adb  shell  monkey  -p fishjoy .control.menu  –s 10  100

--throttle <毫秒

指定用户操作&#xff08;即事件&#xff09;间的时延&#xff0c;单位是毫秒&#xff1b;如果不指定这个参数&#xff0c;monkey会尽可能快的生成和发送消息。

示例&#xff1a;adb  shell monkey -p fishjoy.control.menu  --throttle 3000 100 

-p <允许的包名列表

用此参数指定一个或多个包。指定包之后&#xff0c;monkey将只允许系统启动指定的app。如果不指定包&#xff0c;monkey将允许系统启动设备中的所有app

--ignore-security-exception 

作用&#xff1a;通常&#xff0c;当程序发生许可错误&#xff08;例如启动一些需要许可的Activity&#xff09;导致的异常时&#xff0c;Monkey将停止运行。设置此项&#xff0c;Monkey将继续发送事件给系统&#xff0c;直到事件计数完成。

6、心得体会

   在这次的作业上&#xff0c;其实我认为是有一定的难度的&#xff0c;因为在之前的课程上我们学习并且完成的是网页的测试软件介绍&#xff0c;例如Jmeter&#xff0c;连接数据库的JDBC等等&#xff0c;但是这次要测试的是安卓&#xff0c;而我对安卓的了解其实也还没有到完全很深刻的地步&#xff0c;并且再开始准备学习这个测试软件的时候&#xff0c;我还觉得有一些困难&#xff0c;因为安装和配置都有一定的问题&#xff0c;在一开始&#xff0c;我觉得我安装了Android studio就应该是吧sdk配置完了&#xff0c;但没有想到我输入adb显示没有&#xff0c;后来发现是环境配置还有一些问题&#xff0c;因此我搜索了百度并进行了问题解决&#xff0c;还知道他原来不只是可以测试虚拟机还可以测试的是直接连接手机测试手机上的一些软件。

而他最简单的测试方式便是输入进指定的文件包之后&#xff0c;对其进行命令的输入&#xff0c;此处的操作就很简单了&#xff0c;因为网络上有很多命令的介绍&#xff0c;我只需要根据网络上的指导进行命令的输入&#xff0c;就可以完成许多软件效率的测试和验证。俗话说得好&#xff0c;万事开头难&#xff0c;因此我认为这次的软件测试实验只要认真的去寻找了相关的资料&#xff0c;进行了一定的了解&#xff0c;基本上都可以进行很清晰的了解&#xff0c;而此块测试的特殊性在于&#xff0c;他并不是下载一个特殊的软件进行软件上的测试和操作&#xff0c;而是在配置环境之后&#xff0c;在自带的cmd命令行中进行命令输出既可以完成所有的操作&#xff0c;因此具有很强的便捷性。

因此通过这次的作业&#xff0c;加上前几次的个人作业&#xff0c;无论是从git上传下载代码的学习&#xff0c;到这次的软件测试环节&#xff0c;我都敢收到了这门课程贯穿了整个开发的需求过程&#xff0c;从需求的找寻到最终成品的测试和展示都有迹可循&#xff0c;明白了真正成功的一款软件在真正发布之前所需要做出的所有测试和努力。这是十分有利于我学习的。

 

转:https://www.cnblogs.com/cetwag/p/10969464.html



推荐阅读
  • 阿里云 Aliplayer高级功能介绍(八):安全播放
    如何保障视频内容的安全,不被盗链、非法下载和传播,阿里云视频点播已经有一套完善的机 ... [详细]
  • 本文详细介绍了 Java 网站开发的相关资源和步骤,包括常用网站、开发环境和框架选择。 ... [详细]
  • 本项目通过Python编程实现了一个简单的汇率转换器v1.02。主要内容包括:1. Python的基本语法元素:(1)缩进:用于表示代码的层次结构,是Python中定义程序框架的唯一方式;(2)注释:提供开发者说明信息,不参与实际运行,通常每个代码块添加一个注释;(3)常量和变量:用于存储和操作数据,是程序执行过程中的重要组成部分。此外,项目还涉及了函数定义、用户输入处理和异常捕获等高级特性,以确保程序的健壮性和易用性。 ... [详细]
  • 本文探讨了 TypeScript 中泛型的重要性和应用场景,通过多个实例详细解析了泛型如何提升代码的复用性和类型安全性。 ... [详细]
  • 本文将详细介绍如何在Android Studio中导入和编译OSChina Android 2.4版本的源码。包括所需软件、下载地址以及一些注意事项。 ... [详细]
  • 本文详细探讨了使用Python3编写爬虫时如何应对网站的反爬虫机制,通过实例讲解了如何模拟浏览器访问,帮助读者更好地理解和应用相关技术。 ... [详细]
  • 本文介绍了Java编程语言的基础知识,包括其历史背景、主要特性以及如何安装和配置JDK。此外,还详细讲解了如何编写和运行第一个Java程序,并简要介绍了Eclipse集成开发环境的安装和使用。 ... [详细]
  • Cookie学习小结
    Cookie学习小结 ... [详细]
  • 在 Mac 上配置 NDK
    本文详细介绍了如何在 Mac 上配置 Android NDK,包括设置环境变量和解决常见问题的方法。 ... [详细]
  • 本文详细介绍了 Python 中 thread 和 threading 模块的使用方法,并提供了丰富的示例和解释。文章首发于 HURUWO 的博客小站,本平台进行同步备份发布。如遇图片加载失败或有任何疑问,欢迎前往原博客留言。 ... [详细]
  • 微信小程序详解:概念、功能与优势
    微信公众平台近期向200位开发者发送了小程序的内测邀请。许多人对微信小程序的概念还不是很清楚。本文将详细介绍微信小程序的定义、功能及其独特优势。 ... [详细]
  • 本文将详细介绍如何在Mac上安装Jupyter Notebook,并提供一些常见的问题解决方法。通过这些步骤,您将能够顺利地在Mac上运行Jupyter Notebook。 ... [详细]
  • 浏览器作为我们日常不可或缺的软件工具,其背后的运作机制却鲜为人知。本文将深入探讨浏览器内核及其版本的演变历程,帮助读者更好地理解这一关键技术组件,揭示其内部运作的奥秘。 ... [详细]
  • 本文详细介绍了 com.apollographql.apollo.api.internal.Optional 类中的 orNull() 方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。 ... [详细]
  • 动态壁纸 LiveWallPaper:让您的桌面栩栩如生(第二篇)
    在本文中,我们将继续探讨如何开发动态壁纸 LiveWallPaper,使您的桌面更加生动有趣。作为 2010 年 Google 暑期大学生博客分享大赛 Android 篇的一部分,我们将详细介绍 Ed Burnette 的《Hello, Android》第三版中的相关内容,并分享一些实用的开发技巧和经验。通过本篇文章,您将了解到如何利用 Android SDK 创建引人入胜的动态壁纸,提升用户体验。 ... [详细]
author-avatar
陆星星陆星星风_586
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有