热门标签 | 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



推荐阅读
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • Webpack5内置处理图片资源的配置方法
    本文介绍了在Webpack5中处理图片资源的配置方法。在Webpack4中,我们需要使用file-loader和url-loader来处理图片资源,但是在Webpack5中,这两个Loader的功能已经被内置到Webpack中,我们只需要简单配置即可实现图片资源的处理。本文还介绍了一些常用的配置方法,如匹配不同类型的图片文件、设置输出路径等。通过本文的学习,读者可以快速掌握Webpack5处理图片资源的方法。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 【Windows】实现微信双开或多开的方法及步骤详解
    本文介绍了在Windows系统下实现微信双开或多开的方法,通过安装微信电脑版、复制微信程序启动路径、修改文本文件为bat文件等步骤,实现同时登录两个或多个微信的效果。相比于使用虚拟机的方法,本方法更简单易行,适用于任何电脑,并且不会消耗过多系统资源。详细步骤和原理解释请参考本文内容。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • 本文介绍了Composer依赖管理的重要性及使用方法。对于现代语言而言,包管理器是标配,而Composer作为PHP的包管理器,解决了PEAR的问题,并且使用简单,方便提交自己的包。文章还提到了使用Composer能够避免各种include的问题,避免命名空间冲突,并且能够方便地安装升级扩展包。 ... [详细]
  • 本文介绍了Sencha Touch的学习使用心得,主要包括搭建项目框架的过程。作者强调了使用MVC模式的重要性,并提供了一个干净的引用示例。文章还介绍了Index.html页面的作用,以及如何通过链接样式表来改变全局风格。 ... [详细]
  • 如何实现JDK版本的切换功能,解决开发环境冲突问题
    本文介绍了在开发过程中遇到JDK版本冲突的情况,以及如何通过修改环境变量实现JDK版本的切换功能,解决开发环境冲突的问题。通过合理的切换环境,可以更好地进行项目开发。同时,提醒读者注意不仅限于1.7和1.8版本的转换,还要适应不同项目和个人开发习惯的需求。 ... [详细]
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社区 版权所有