Monkey

Android 史上最新最全的ADB及命令百科,没有之一

梦想与她 提交于 2020-08-16 00:31:50
ADB详解及常用命令 一、ADB的认识 1. ADB组成 2. ADB 通信原理 3. ADB连接方式 1) 手机数据线连接 2) USB type-A数据线连接 3) 网络连接 4. 手机IP确认 二、ADB的安装 三、ADB命令 1. adb 普通命令 1) ADB信息 2)操作类 3 ) ADB 远程 4) log 命令 2. adb shell命令 1) adb shell am 2)shell pm 3) shell input 4)设备信息 5)进程、Service及状态 6)shell 文件操作 7)其他命令 四、 KEYCODE表 总结 Android开发对于ADB想来是不会陌生的,对于ADB的相关知识和使用我们需要熟练掌握。 一、ADB的认识 1. ADB组成 Android Debug Bridge,Android调试桥接器,简称ADB,是用于管理模拟器或真机状态的万能工具。说人话就是:ADB是PC和移动终端通信的桥梁,它采用了C/S模型,由三部分组成。 借用一张图: 2. 服务端部分,是运行在开发用电脑上的后台进程,用于管理客户端与运行在模拟器或真机的守护进程通信。 1. adb client(客户端) client是 运行在PC端 的组件,可以在命令行中运行adb命令来调用该客户端,通常的ADB插件、DDMS、豌豆荚等工具都可以调用ADB。

dgraph 使用简介

只愿长相守 提交于 2020-08-15 16:51:59
dgraph 简介 dgraph 使用示例(基于 golang) golang client 安装 创建 schema 数据的 CURD 事务 总结 dgraph 简介 dgraph 是基于 golang 开发的开源的分布式图数据库. 诞生时间不长, 发展却很迅速. 目前是 v20.x 版本, dgraph 集群主要包含 3 种节点: Zero: 是集群的核心, 负责调度集群服务器和平衡服务器组之间的数据 Alpha: 保存数据的 谓词 和 索引 . 谓词包括数据的 属性 和数据之间的 关系 ; 索引是为了更快的进行数据的过滤和查找 Ratel: dgraph 的 UI 接口, 可以在此界面上进行数据的 CURD, 也可以修改数据的 schema 通过增加 Alpha 的数量完成 dgraph 的水平扩展. dgraph 是 golang 开发的, 所以部署非常简单, 更简单的方式是使用 docker docker pull dgraph/dgraph:latest 然后配置一个 docker-comopse.yml, 一键启动 dgraph 服务: version: "3.2" services: zero: image: dgraph/dgraph:latest volumes: - type: volume source: dgraph target: /dgraph

Java基础系列——分支结构、循环结构的练习(09)

这一生的挚爱 提交于 2020-08-14 22:30:02
关于分支结构与循环结构的练习,注意,并不一定时最优解,如果有更好的程序,请在评论中指出。 这里仅仅是少量,题目有大量的选择,有兴趣的可以去 牛客网 进行训练。 实现对三个整数进行排序,输出时按照从小到大的顺序输出 import java.util.Scanner; /** * @ClassName Exercise1 * @Description 实现对三个整数进行排序,输出时按照从小到大的顺序输出 * @Author lujiapeng **/ public class Exercise1 { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("a="); int a = input.nextInt(); System.out.print("b="); int b = input.nextInt(); System.out.print("c="); int c = input.nextInt(); int temp; if (a > b) { temp = a; a = b; b = temp; } if (a > c) { temp = a; a = c; c = temp; } if (b > c) { temp = b; b =

移动端APP自动化测试超全基础汇总

落花浮王杯 提交于 2020-08-12 20:54:10
  目录 一.面试过程 1.自动化岗位要求  2.面试流程,面试类型  3.沟通技巧,不同级别要求 二.真实面试案例 1.一个输入框的面试题(有人拿到高级岗位,有人连初级都没拿到,为什么) 三.自我分析 1.积累的知识决定了初入社会的岗位  2.什么是好的简历  3.需要掌握的基本知识 四.技术基础知识 1.常见测试理论  2.python语言常见问题  3.python常问算法  4.linux基本命令  5.计算机网络  6.操作系统  7.数据库相关  8.fiddler抓包工具  9.android系统相关工具  10.adb相关问题  11.monkey相关问题 五.自动化工具 1.Instrumentation  2.UIAutomator  3.Selendroid  4.Robotium  5.Appium  6.Selenium 六.自动化框架 1.Unittest框架  2.数据驱动DDT  3.行为驱动Lettuce  4.关键字驱动Robot Framework  5.测试报告管理  6.邮件服务管理 七.接口自动化 1.postman  2.python requests 八.持续集成(概念)  九.服务端性能测试  十.兼容性测试  十一.调试 正文 一.招聘要求   二.面试过程(笔试-技术-性格-薪资 )  三.面试类型  四.问题类型  五

移动应用测试:挑战,类型和最佳实践

霸气de小男生 提交于 2020-08-11 05:14:45
随着智能手机的普及,移动app测试越来越重要。现在很多互联网都把注意精力放在了移动端,移动app尽量提供完美的用户体验。但是诸如崩溃,冻结问题,加载时间慢,不直观的导航以及侵犯隐私之类的严重错误可能会触发用户立即卸载应用程序。 现在,移动应用程序已成为我们日常微时刻不可或缺的一部分,人们平均每天花费3-4个小时。移动应用在职业和个人生活中对每个人都起着关键作用。 因此,手机移动端测试在构建移动应用程序以提供流畅的用户体验和功能方面扮演着重要角色。 移动应用测试金字塔 软件测试的人都知道Mike Cohn的测试自动化金字塔。典型的金字塔由三层组成。顶部是自动化集成测试层的中间,是一个自动化的端到端测试层(包括用户界面测试),而底部是自动化单元测试层。手动测试不是测试金字塔的一部分。每一层指示每个阶段应编写的测试数量,并具有不同的大小。 对于移动应用程序测试,典型的金字塔结构不适用于移动测试自动化。与Web或桌面应用程序不同,移动应用程序由不同的设备,传感器和网络组成,需要不同的测试模型。 移动应用测试 移动应用程序的测试金字塔由四层组成,包括手动和自动步骤。金字塔的最顶层是手动测试,并为每个移动应用程序项目奠定了坚实的基础,随后是端到端测试,beta测试以及包括单元测试的顶层。单元测试和端到端测试具有相同的颜色,代表自动化测试,而beta测试和手动测试则具相同的颜色,代表手动测试

SoloPi:支付宝 Android 专项测试工具 | 开源

好久不见. 提交于 2020-08-11 02:23:08
| 导语 本文主要介绍支付宝在移动端上实现的一套无线化、非侵入、免 Root 的 Android 专项测试方案 SoloPi。直接操控手机,即可实现自动化的功能、性能、兼容性、以及稳定性测试等工作。 1、移动测试 1.0 时代 移动测试 1.0 时代,也可以称之为探索期。由于厌倦了日复一日的手工操作,如何提升测试效率成为了移动测试领域最重要的课题,在此期间,除了 Monkey、UiAutomator、Instruments 等官方提供的工具,业界还涌现了一批优秀的开源自动化测试工具/框架,在自动化驱动能力的基础之上,不仅可以实现基本功能的验证,还可以结合性能采集方案、遍历算法等实现各类专项测试的自动化。在这个阶段,自动化测试的常见形态是在单机或本地少数几台 PC 上部署测试环境,再利用 Jenkins 等工具实现持续集成。 2、移动测 来源: oschina 链接: https://my.oschina.net/u/4352922/blog/4284431

Android自动化测试框架必用工具

淺唱寂寞╮ 提交于 2020-08-09 01:48:12
Monkey Monkey1是Android SDK自带的测试工具,是一个命令行工具,可以运行在模拟器里或实际设备中。可以运行在模拟器中或者实际设备中,它向系统发送伪随机的用户事件流(如按键输入,触摸屏输入,手势输入等),实现对正在开发的应用程序进行压力测试。由于测试事件和数据都是随机的,不能自定义,所以有很大的局限性。 编写语言:命令行 运行环境:使用adb连接PC运行 测试对象:Android平台自动化测试的一种手段,通过Monkey程序模拟用户触摸屏幕、滑动Trackball、按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常。主要测试客户端应用的稳定性,健壮性 测试限制:主要是做随机模拟用户操作移动端的操作 例子: adb shell monkey -p com.android.calendar -v 500 这样就开始乱点日历应用了。 加入我们,642830685,群。领取最新软件测试大厂面试资料和Python自动化、接口、框架搭建学习资料!技术大牛解惑 MonkeyRunner MonkeyRunner2是Android SDK提供的测试工具。严格意义上来说MonkeyRunner其实是一个Api工具包,比Monkey强大,可以编写测试脚本来自定义数据、事件。缺点是脚本(jython(java语言))用Python(Python(C语言))来写

恕我直言你可能真的不会java第5篇:Stream的状态与并行操作

大城市里の小女人 提交于 2020-08-05 22:40:36
一、回顾Stream管道流操作 通过前面章节的学习,我们应该明白了Stream管道流的基本操作。我们来回顾一下: 源操作:可以将数组、集合类、行文本文件转换成管道流Stream进行数据处理 中间操作:对Stream流中的数据进行处理,比如:过滤、数据转换等等 终端操作:作用就是将Stream管道流转换为其他的数据类型。这部分我们还没有讲,我们后面章节再介绍。 看下面的脑图,可以有更清晰的理解: 二、中间操作:有状态与无状态 其实在程序员编程中,经常会接触到“有状态”,“无状态”,绝大部分的人都比较蒙。而且在不同的场景下,“状态”这个词的含义似乎有所不同。但是“万变不离其宗”,理解“状态”这个词在编程领域的含义,笔者教给大家几个关键点: 状态通常代表公用数据,有状态就是有“公用数据” 因为有公用的数据,状态通常需要额外的存储。 状态通常被多人、多用户、多线程、多次操作,这就涉及到状态的管理及变更操作。 是不是更蒙了?举个例子,你就明白了 web开发session就是一种状态,访问者的多次请求关联同一个session,这个session需要存储到内存或者redis。多次请求使用同一个公用的session,这个session就是状态数据。 vue的vuex的store就是一种状态,首先它是多组件公用的,其次是不同的组件都可以修改它,最后它需要独立于组件单独存储。所以store就是一种状态

挑战每分钟爬取100个视频,只要网速够快,反爬就追不到我

ε祈祈猫儿з 提交于 2020-08-05 13:40:02
前言 好看视频大部分是精品短视频!相同的接口返回不同的视频给用户 今天就带大家把系统推荐的视频给爬取下来! 知识点 1、动态数据抓包演示 2、json数据解析方法 3、视频数据保存 环境介绍 python 3.6 pycharm requests json 爬虫的一般思路 1、分析目标网页,确定爬取的url路径,headers参数 2、发送请求 -- requests 模拟浏览器发送请求,获取响应数据 3、解析数据 4、保存数据 -- 保存在目标文件夹中 步骤 1、导入工具 import requests import time import pprint 2、确定爬取的url路径,headers参数 # 获取时间戳 """ 时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总毫秒数。 秒级时间戳,10位 毫秒级时间戳,13位 微秒级时间戳,16位 """ time_one = str(int(time.time() * 1000 )) # print(time_one) base_url = ' https://haokan.baidu.com/videoui/api/videorec?tab=gaoxiao&act=pcFeed&pd=pc&num=20&shuaxin_id= ' + time_one

恕我直言你可能真的不会java第11篇-Stream API终端操作

人走茶凉 提交于 2020-08-05 12:22:41
一、Java Stream管道数据处理操作 在本号之前写过的文章中,曾经给大家介绍过 Java Stream管道流是用于简化集合类元素处理的java API。在使用的过程中分为三个阶段。在开始本文之前,我觉得仍然需要给一些新朋友介绍一下这三个阶段,如图: 第一阶段(图中蓝色):将集合、数组、或行文本文件转换为java Stream管道流 第二阶段(图中虚线部分):管道流式数据处理操作,处理管道中的每一个元素。上一个管道中的输出元素作为下一个管道的输入元素。 第三阶段(图中绿色):管道流结果处理操作,也就是本文的将介绍的核心内容。 在开始学习之前,仍然有必要回顾一下我们之前给大家讲过的一个例子: List<String> nameStrs = Arrays.asList("Monkey", "Lion", "Giraffe","Lemur"); List<String> list = nameStrs.stream() .filter(s -> s.startsWith("L")) .map(String::toUpperCase) .sorted() .collect(toList()); System.out.println(list); 首先使用stream()方法将字符串List转换为管道流Stream 然后进行管道数据处理操作,先用fliter函数过滤所有大写L开头的字符串