体育资讯网

您现在的位置是:首页 > 分类10 > 正文

分类10

monkey源码分析(monkey脚本python)

hacker2023-04-03 04:30:20分类10133
本文目录一览:1、安卓monkey测试中的结果怎么分析2、

本文目录一览:

安卓monkey测试中的结果怎么分析

一. 初步分析方法:

Monkey测试出现错误后,一般的差错步骤为以下几步:

1、 找到是monkey里面的哪个地方出错

2、 查看Monkey里面出错前的一些事件动作,并手动执行该动作

3、 若以上步骤还不能找出,可以使用之前执行的monkey命令再执行一遍,注意seed值要一样

一般的测试结果分析:

1、 ANR问题:在日志中搜索“ANR”

2、 崩溃问题:在日志中搜索“Exception”

二. 详细分析monkey日志:

将执行Monkey生成的log,从手机中导出并打开查看该log;在log的最开始都会显示Monkey执行的seed值、执行次数和测试的包名。

首先我们需要查看Monkey测试中是否出现了ANR或者异常,具体方法如上述。

如何定义正在使用的通讯设备

LIBUSB是一款简单好用的USB通讯开发库,一般HID设备用该库通讯能大大降低开发周期,使用如下,首先需要为设备安装驱动

在libusb的bin目录下有一个inf_wirzed.exe的文件,该文件是生成驱动所用,具体步骤可以网上百度,很是傻瓜式操作,安装好驱动之后就可以使用其通讯函数了,

安装好驱动之后的情况如下

使用visual studio开发,将lib_msvc目录下的libusb.lib文件添加到工程目录并将lusb0_usb.h文件加入工程,如下

之后在MFC工程中如下操作

OnInitDialog方法中调用usb_init函数,这是初始化函数库的,每个工程需要而且仅仅需要初始化一次.

查找系统中全部USB的方法如下

usb_find_busses();

usb_find_devices();//重新寻找设备

for (bus = usb_get_busses(); bus; bus = bus-next)

{

for (dev = bus-devices; dev; dev = dev-next)

{

usbCount++;

deviceName.Empty();

handle = usb_open(dev);

usb_get_string_simple(handle,dev-descriptor.iProduct,nameBuffer,128);

usb_close(handle);

pidBuffer[usbCount-1] = dev-descriptor.idProduct;//枚举所有设备

vidBuffer[usbCount-1] = dev-descriptor.idVendor;

pvnBuffer[usbCount-1] = dev-descriptor.bcdDevice;

deviceName.AppendFormat("%s",nameBuffer);

((CComboBox*)GetDlgItem(IDC_COMBO_USB_DEVICE_ENMU))-AddString(deviceName);

}

}

打开usb设备的方法如下

//现在遍历全部设备,找到对应PID vid的设备打开

usb_find_busses();

usb_find_devices();//重新寻找设备

for (bus = usb_get_busses(); bus; bus = bus-next)

{

for (dev = bus-devices; dev; dev = dev-next)

{

if(dev-descriptor.idProduct == myPid dev-descriptor.idVendor)

{

//PID VID相同

usb_handle = usb_open(dev);

}

}

}

发送数据的方法

char sendBuffer[64] = {0};

CString sendString;

GetDlgItem(IDC_EDIT_USB_SEND_MESSAGE)-GetWindowText(sendString);

for(int i = 0; i 64; i++)

{

if(i = sendString.GetLength())sendBuffer[i] = 0;

else

{

sendBuffer[i] = sendString.GetAt(i);

}

}

usb_claim_interface(usb_handle, 0);//默认设备

usb_interrupt_write(usb_handle,0x01,sendBuffer,64,100);

usb_release_interface(usb_handle, 0);

接收数据的方法

char receiveBuffer[64] = {0};

CString receiveString;

int recvCount = 0;

usb_claim_interface(usb_handle, 0);//默认设备

recvCount = usb_interrupt_read(usb_handle,0x81,receiveBuffer,64,100);

usb_release_interface(usb_handle, 0);

if(recvCount 0)

{

GetDlgItem(IDC_EDIT_USB_RECV_SHOW)-GetWindowText(receiveString);

for(int i = 0; i recvCount; i++)

{

receiveString.AppendChar(receiveBuffer[i]);

}

GetDlgItem(IDC_EDIT_USB_RECV_SHOW)-SetWindowText(receiveString);

每次发送和接手之前需要调用usb_claim_interface将函数库和操作系统关联起来

有了这些基本方法,通讯应该就不成问题了

详细代码见链接

使用LIBUSB实现和自定义通讯设备通讯--MFC代码在末尾的更多相关文章

IOT设备通讯,MQTT物联网协议,MQTTnet

一.IOT设备的特性 硬件能力差(存储能力基本只有几MB,CPU频率低连使用HTTP请求都很奢侈) 系统千差万别(Brillo,mbedOS,RIOT等) 如使用电池供电,电量消耗敏感 如果是小设备, ...

厂商自定义USB设备固件程序及特性

通过前面的学习,大家应该对USB固件程序结构有了比较深的认识,现在再来详细说说固件里决定设备识别成厂商自定义USB设备的地方有哪些,或者说厂商自定义USB设备的固件特性有哪些. 之前不止一次说过学习U ...

厂商自定义USB设备类概述

USB协会将常用具有相同/相似功能的设备归为一类,并制定了相关的设备类规范,这样就能保障只要依照同样的规范标准,即使不同的厂商开发的USB设备也可以使用同样的驱动程序,而且操作系统中无须为每种设备提供 ...

JAVA之旅(十四)——静态同步函数的锁是class对象,多线程的单例设计模式,死锁,线程中的通讯以及通讯所带来的安全隐患,等待唤醒机制

JAVA之旅(十四)--静态同步函数的锁是class对象,多线程的单例设计模式,死锁,线程中的通讯以及通讯所带来的安全隐患,等待唤醒机制 JAVA之旅,一路有你,加油! 一.静态同步函数的锁是clas ...

Windows Phone:自定义字体在xaml和代码中使用

最近,我的小应用认字更新了一个能发声的版本,朋友对Speech做读音没有兴趣,反而对其中使用的楷体文字表示了兴趣,也许Speech的文章比较多,这次我对这个自定义字体在xaml和代码中 ...

C#自定义FTP访问类的代码

如下资料是关于C#自定义FTP访问类的代码,应该对各朋友有帮助. using System; using System.Collections.Generic; using System.Text; ...

springboot扫描自定义的servlet和filter代码详解_java - JAVA

文章来源:嗨学网 敏而好学论坛 欢迎大家相互学习 这几天使用spring boot编写公司一个应用,在编写了一个filter,用于指定编码的filter,如下: /** ...

设备通讯——RS232

RS232的接口有两种--一种公头.一种母头,两种头的引脚是有区别的 MAX232电路图: 注意:串口通讯需要交叉接线.

安卓MonkeyRunner源码分析之与Android设备通讯方式

如前文谁动了我的截图?--Monkeyrunner takeSnapshot方法源码跟踪分析所述,本文主要会尝试描述android的自动化测试框架MonkeyRunner究竟是如何和目 ...

随机推荐

织梦DEDECMS更新6月7日补丁后出现版权链接的删除办法

说最近网站底部多出了一个Power by DedeCms的超链接版权信息,但是该网友最近只是升级了0607更新补丁,其它的源代码并没有改动,而以前的文章页面并没有,看来是这次更新dedecms后才被加 ...

Converting between IEEE 754 and Float (Format related

The float can be converted to well known single-precision IEEE 754 number, why 754? It's the standar ...

HDU2199,HDU2899,HDU1969,HDU2141--(简单二分)

二分是一种很有效的减少时间开销的策略, 我觉得单列出二分专题有些不太合理, 二分应该作为一中优化方法来考虑 这几道题都是简单的使用了二分方法优化, 二分虽然看似很简单, 但一不注意就会犯错. 在写二分 ...

java 随机流

Example10_8.java import java.io.*; public class Example10_8 { public static void main(String args[]) ...

ListMap去重排序

数据格式 [ { "id":"d3e8a9d6-e4c6-4dd8-a94f-07733d3c1b59", "parentId":" ...

MQ日常维护操作手册

假设队列管理器为QMgrName,以下所有使用QMgrName的地方您都可以替换成您维护的mq队列管理器名称. 一.MQ的启动与停止 用root用户启/停需要root用户包含在mqm组中. 1.MQ的 ...

jquery控制audio的播放与暂停

audio id="audio" src='music.mp3'/audio script type="type/javascri ...

apt

今天单元测试看到巨长字符串被加了很多引号,想起以前可以用跳脱符断行,试了不行,google说java7可以,我操. ...

C# 经典入门12章-使用泛型类型-2

关于jdk环境变量配置成了1.6.0_39 32位jdk 的路径 cmd中java -version却还是显示 64位或者其他jdk 路径的解决方法

其实是c盘或者其他盘的 jdk 安装的太多了,把其他的都卸载掉就行了

monkey命令集成在android哪个目录

# shell.

#

base=/system

export CLASSPATH=$base/framework/monkey.jar

exec app_process $base/bin com.android.commands.monkey.Monkey $*exec 会运行起/system/framework/monkey.jar这只Java程序.后面我们还会用到这个脚本.

monkey源码:development\cmds\monkey\src\com\android\commands\monkey

1 adb shell monkey -help

行monkey可以采用两种方式:系统默认方式和script方式

显示monkey帮助信息:如下:

sh-3.2# monkey -help

monkey -help

usage: monkey [-p ALLOWED_PACKAGE [-p ALLOWED_PACKAGE] ...]

[-c MAIN_CATEGORY [-c MAIN_CATEGORY] ...]

[--ignore-crashes] [--ignore-timeouts]

[--ignore-security-exceptions]

Monkey报告整理工具开发(一)——需求分析v1.1

v1.0  2017.06.20  三笑奈何  初稿

v1.1  2017.06.27  三笑奈何  修改

一、工具开发背景

在日常测试中,我们经常需要用到monkey测试,隔几个小版本就需要进行一轮monkey测试,monkey测试可以是单个APK的测试,也可以是全测试。

每一次测试完成后,经常需要几个小时去整理报告,作者认为,这种类型的重复性工作,一定程度浪费monkey源码分析了人力物力,自认为是讨厌重复性的工作的人,这种类型的重复性工作,可以交给程序自动完成,用于解放人力。一个不会偷懒的测试,不是好测试,于是就想到了这个报告整理工具。

二、基本功能概况

以下功能为基本构想,在工具开发过程中,会根据需求进行修改

1、输入log文本,自动生成报告文本

2、自动判断monkey是否正常跑完全程

3、自动计算monkey跑测时长

4、自动整理CRASH、ANR、exception这三类问题内容,并统计其个数(主要功能)

三、基本功能需求分解

1、自动检测本目录下文件,输入文件为Stability_base_err.txt、Stability_base.txt

2、判断Stability_base_err.txt文件中是否有monkey test complete字样,用以判断是否跑完monkey全程

3、输入Stability_base_err.txt文件,查找CRASH关键字(匹配大小写)、查找ANR关键字(匹配大小写)、查找exception关键字(不匹配大小写)

4、对查找的结果进行替换、删除重复项等筛选操作

5、计算monkey时长(2017.06.27完善)

四、重要功能具体实现步骤

需求分解的第4点,主要借鉴Notepad++和Excel处理文本查找、替换、删除重复项等功能,来分解需求,以下为具体步骤实现,以下“ * ”符号代表全部的意思(如java.lang.RuntimeException:*代表java.lang.RuntimeException:abc,则*=abc)

将Stability_base_err.txt文本的输入内容,以“//”符号为标记,排列为一行

CRASH

1、将3中的CRASH查找结果写入到新生成的文件CRASH.txt

      a.替换" // "为空

      b.替换" (pid.*)"为空

      c.全选删除重复项,只保留相同项中的第一项

ANR

1、将3中的ANR查找结果写入到新生成的文件ANR.txt

      a.替换" // "为空

      b.替换“ (*)”为空

      c.全选删除重复项,只保留相同项中的第一项

exception

1、将3中的exception查找结果写入到新生成的文件exception.txt

      a.替换" // "为空

      b.全选删除重复项,只保留相同项中的第一项

      c.替换" java.lang.RuntimeException:* ",保留java.lang.RuntimeException

      d.全选删除重复项,只保留相同项中的第一项

      e.替换Short Msg:为空

      f.替换Long Msg:为空

      g.替换Caused by:为空

      h.替换:*为空

      i.全选删除重复项,只保留相同项中的第一项

本工具开发未真正遵循软件工程开发过程,仅仅是用于测试,提高团队测试效率,要求的是快速开发,可能写得不大好,有好提议欢迎留言。

PSmonkey源码分析:工具开发进度需要视手上项目情况松紧程度而定,尽量争取早日完成

发表评论

评论列表

  • 双笙青朷(2023-04-03 15:14:52)回复取消回复

    .txt      a.替换" // "为空       b.全选删除重复项,只保留相同项中的第一项       c.替换" java.lang.RuntimeException:* ",保留java.lang.R

  • 拥嬉莘夏(2023-04-03 12:53:00)回复取消回复

    重复项,只保留相同项中的第一项       e.替换Short Msg:为空       f.替换Long Msg:为空       g.替换Caused by:为空       h.替换:*为空       i.全选删除重复项

  • 边侣神择(2023-04-03 05:51:35)回复取消回复

    int recvCount = 0;usb_claim_interface(usb_handle, 0);//默认设备recvCount = usb_interrupt_read(usb_handle,0x81,receiveBuffer,64,100