自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(70)
  • 收藏
  • 关注

转载 Appium入门指南 - 环境搭建和Case编写

本文档将详细介绍如何搭建 Appium 的运行环境,以及如何编写一个简单的 UI 自动化测试用例。其中,也会穿插讲解一些 Appium 的基本知识。关于 Appium 的更多信息,大家可以查看官方文档。注意事项:本文档是在 macOS 系统的基础上讲解相关操作编程语言选择了:Python 2.7Appium 是跨平台的 UI 自动化测试框架,支持 Android、iOS 等系统...

2019-06-17 17:14:00 154

转载 测开面试 | Python常问算法

1、排序从小到大排序:sorted(list)从大到小排序:sorted(list, reverse=True)sort() 方法,改变原有数组的顺序sort(reverse=True)#!/bin/Pythonalist = [1, 4, 2, 3, 7, 6]print(sorted(alist))print(sorted(alist, reverse=True)...

2019-06-02 16:56:00 199

转载 测开面试 | 自动化测试之框架篇

一、unittest 原理(https://docs.python.org/3/library/unittest.html)1、unittest 框架包含哪些内容?TestFixture:SetUpTestCaseTearDownTestCaseTestSuiteTestRunnerimport unittestclass WidgetTestCase(unit...

2019-05-28 17:49:00 298

转载 测开面试 | 自动化测试之工具篇

一、Instrumentation(https://developer.android.com/reference/android/app/Instrumentation.html)1、 Instrumentation 原理是什么?通过直接调用被测应用的类实现自动化测试和被测应用处于同一个进程内2、 Instrumentation 测试什么?功能测试Activity ...

2019-05-28 12:15:00 154

转载 测开面试 | 操作系统相关问题整理

1、 进程与线程的区别?进程:独立数据空间,进程间不共享数据,系统调度线程:执行程序的最小单元,进程内线程间同步资源,系统调度一个进程可以有多个线程,多个线程也可以并发执行2、 进程有哪些状态?就绪状态:已获得处理机(CPU)以外的所需资源,等待分配处理机资源运行状态:占用处理机资源运行,此状态进程数 <= CPU 数阻塞状态:进程等待某种条件,在条件满足之前无...

2019-05-20 18:44:00 60

转载 测开面试 | Python语言常见问题

1、面向对象的概念?面向对象编程,简称OOP,是一种程序设计思想主要包括:类、继承、多态(子类方法覆盖父类方法)、实例、属性、方法2、什么是进程、线程、协程?进程:独立数据空间,进程间不共享数据,系统调度线程:执行程序的最小单元,进程内线程间共享资源,系统调度协程:程序员调度,分解一个线程成为多个“微线程”(https://www.liaoxuefeng.com/wik...

2019-05-16 19:01:00 74

转载 du和ls的区别:如何正确计算文件大小

上一篇文章写到的权限检查脚本,后来我又加入了 apk size 对比的功能,分享给组内同事使用后,暴露出一个问题:脚本输出的 apk size 和 Jenkins 出包信息以及电脑上显示的存储大小都有差异。那么,以何为准呢?以下是同事的提问及我的回复(已过滤敏感信息):使用脚本发现 APK SIZE 的检测结果,与在 Jenkins 出包信息有差异,且差异不小。电脑上显示的存储大小...

2019-05-06 17:19:00 254

转载 Shell脚本 | 安卓应用权限检查

现在 Google Play 对应用权限的管理非常严格,之前公司内有个版本就是因为新增了四个权限导致停灰处理。所以,在每个版本发布之前很有必要检查一下是否有新增权限。安卓应用请求的所有权限可以通过 aapt 命令查看:在拿到应用的权限列表后,即可对比两个版本的权限是否有变化,新增加或者新减少。脚本如下:#!/usr/bin/env bash#清空上次运行后产生的文件if ...

2019-04-22 15:59:00 222

转载 自动化测试 | UI Automator 进阶指南

UI Automator 相关介绍:跨应用的用户界面自动化测试包含在 AndroidX Test(https://developer.android.com/training/testing) 中支持的 Android 系统:>= Android 4.3 (API level 18)基于 instrumentation,依赖于 AndroidJUnitRunner 测试运...

2019-04-20 00:39:00 194

转载 Shell脚本 | 截取包名

之前写 shell 脚本的几篇文章都是先大致介绍脚本的功能和写法,然后一股脑的给出完整的代码。并没有细致入微的解释脚本中的每一行是如何思考如何编写的。今天反其道而行之,只介绍一行代码。争取能讲的清楚明白,让大家了解我在写这行代码时的思路。说说这行代码的作用吧:通过反编译工具 apktool 将 apk 文件反编译后,得到的文件中有一份 AndroidManifest.xml。希望从这...

2019-04-12 12:30:00 226

转载 自动化测试 | UI Automator 入门指南

自动化测试的定义,这里先引用一段维基百科的定义:在软件测试中,测试自动化(英语:Test automation)是一种测试方法,使用特定的软件,去控制测试流程,并比较实际的结果与预期结果之间的差异。通过将测试自动化,可以让正式的测试过程中的必要测试,可以反复进行;通过这种方法,也可以将难以手动进行的测试,交由软件来做。这种测试方法,是持续交付流程中的必要组成。用我自己的话说就是,...

2019-04-11 09:48:00 135

转载 杂谈随感 | 与测试无关

明天就是清明节了,放假前的这四天,组内一位同事请假,测试任务都落到我身上了。归心似箭,但是今天的工作还没完成,照样得老老实实的加班。3月初开始给自己定了月计划:学习新技术&写技术文章,计划中的任务细分到每周。这周的任务有三样:学习极客时间专栏文章学习Uiautomator写一篇技术文章第一项已经完成了。第二项的学习也基本完成,写了几个简单的自动化case。但是彻底...

2019-04-04 20:54:00 106

转载 Shell脚本 | 性能测试之内存

性能测试中,内存是一个不可或缺的方面。比如说在跑 Monkey 的过程中,如何准确持续的获取到内存数据就显得尤为重要。今天分享一个脚本,可以在给定时间内持续监控内存,最后输出成一份 CSV 文件,通过 Excel 的插入图表功能可以形成一副内存走势图。脚本中最关键的两个步骤如下,其余看代码吧(注释很详细):通过 adb 命令获取内存文件通过 Python 脚本解析内存文件,取出...

2019-03-29 12:02:00 359

转载 Shell脚本 | 健壮性测试之空指针检查

通过 "adb shell am start" 遍历安卓应用所有的 Activity,可以检查是否存在空指针的情况。以下为梳理后的测试流程:通过 apktool 反编译 apk(输入参数 apk 路径)得到反编译后的 AndroidManifest.xml 文件通过 FindActivity.py 得到 Activity_List(activity 列表)删除 Activit...

2019-03-22 15:48:00 144

转载 "java.lang.IllegalStateException: No instrumentation registered! Must run under a registering instru...

问题描述运行uiautomator,报错"java.lang.IllegalStateException: No instrumentation registered! Must run under a registering instrumentation."问题解决参考链接:https://stackoverflow.com/questions/53193247/andro...

2019-03-20 15:59:00 2185

转载 Apktool的安装与使用

官网的安装方式如下图:前提条件:Java 1.8版本已安装通过在终端内输入"java -version"可以查看Java版本因为我用的是MacBook,所以只介绍如何在MacBook上安装Apktool。步骤如下:1、右键点击此链接,另存为apktool2、下载最新版本的apktool-2,然后重命名为apktool.jar3、将apktool和apktool.j...

2019-03-18 14:59:00 412

转载 Shell脚本 | 性能测试之CPU占有率

Android 是一个基于 Linux 内核的移动操作系统,Linux 的 CPU 占有率的计算方式也可以应用到 Android App 上。今天分享的这个脚本的功能,是在多核情况下计算进程的 CPU 占有率。详细的算法,有一篇别人写的关于 Linux 环境下计算进程和线程的 CPU 占有率的文章,推荐一读,链接附在文末。这里就简单说下计算步骤吧:1.获取测试设备的 CPU 核心数...

2019-03-12 10:22:00 468

转载 接口测试学习笔记(Jmeter)

常见接口协议:1、http 超文本传输协议2、https 安全超文本传输协议3、ftp 文件传输协议4、tcp 网络控制协议5、IP 互联网协议6、udp 用户数据协议……HTTP协议响应码:1xx:信息响应类,表示接收到请求并且继续处理2xx:处理成功响应类,表示动作被成功接收、理解和接受3xx:重定向响应类,为了完成指定动作,必须接受进一步处理4xx:客户端错...

2019-03-10 18:18:00 86

转载 Shell脚本 | 性能测试之启动流量

安卓应用的流量统计有多种方式,点击「阅读原文」可以看到一篇别人写的文章,关于安卓流量数据的获取,写的挺全的,列举了几种不同方式的优劣。(见文末参考链接)今天我要分享的是通过脚本一键获取应用的启动流量。脚本的编写方式和之前的《Shell脚本 | 性能测试之启动时间》有点类似。其实写了这么多shell脚本,说白了就是把各种平时手动执行的adb命令整合起来,然后再通过awk、grep、sed...

2019-03-04 18:32:00 99

转载 Shell脚本 | 一键获取安卓应用活动名

上篇文章提到,启动时间的计算需要用到应用启动页的活动名(Activity_Name)。如何获取活动名呢?通常有如下几种方式:1、询问 Dev 同事2、adb logcat ActivityManager:I *:s3、adb shell dumpsys window w | grep 4、adb shell dumpsys window | grep mCurrentFoc...

2019-02-28 11:53:00 276

转载 Shell脚本 | 性能测试之启动时间

安卓应用的性能测试,通常包括六个指标:启动时间、内存、CPU、耗电量、流量、流畅度。除了耗电量,其他五个指标的数据在我们团队中已经可以通过运行脚本的方式获取到。今天给大家分享下启动时间的脚本吧~首先,我们先明确一下安卓应用的启动时间应该如何计算。在这里,我给出一条命令:adb shell am start -W <Package_Name>/<Activity...

2019-02-22 14:40:00 164

转载 Shell脚本 | 抓取log文件

在安卓应用的测试过程中,遇到 Crash 或者 ANR 后,想必大家都会通过 adb logcat 命令来抓取日志定位问题。如果直接使用 logcat 命令的话,默认抓取出的 log 文件包含安卓运行时产生的所有日志,给快速定位问题增加了时间成本。这个问题可以通过一个简单的 Shell 脚本来解决,依然只有区区 20 行左右的代码。脚本的编写思路是这样的:1、通过 date 命令获...

2019-02-22 14:34:00 1398

转载 Shell脚本 | 一键卸载安卓App

在平时工作的过程中,很多重复性内容可以通过运行脚本文件来代替。一次编写,就能带来很大的效率提升。今天跟大家分享一个简单的 Shell 脚本,只有区区 20 行左右的代码。因为有时候我们测试某个应用程序需要先保证测试环境的干净,所以会手动卸载所有不必要的 App。而这个脚本的功能就是在知道包名的前提下,通过循环执行 adb uninstall 命令一次性卸载完指定的应用程序。脚本的编...

2019-02-22 14:20:00 670

转载 ADB命令获取Android UID

有三种方案:1. adb shell dumpsys package <packagename> | grep userId=先通过 "adb shell dumpsys package <packagename>" 命令得到应用详细信息,然后利用 "grep userId=" 定位到 Uid。如:~ adb shell dumpsys package c...

2018-10-08 17:27:00 1818

转载 世界上最短的bash脚本

世界上最短的bash脚本长这样:#!/bin/bash为啥呢?见下图:推荐一篇文章,讲解为啥shell脚本开头总是"#!/bin/bash"。文风太清奇,不好翻译,看原文吧:https://blog.twentytwotabs.com/the-smallest-bash-program-in-the-universe/转载于:https://www.cnblogs.c...

2018-09-30 16:50:00 73

转载 Jenkins报错'Gradle build daemon disappeared unexpectedly'的问题解决

在将项目集成到 Jenkins 后,经常会出现不稳定的构建,Jenkins 控制台输出的错误信息为:Gradle build daemon disappeared unexpectedly (it may have been killed or may have crashed)。经过调查,问题可能出在 ./gradlew assembleDebug 这条命令上。通过查看Gradl...

2018-09-30 15:23:00 1341

转载 macOS Java安装与配置

运行环境:macOS Hight Sierra(Version 10.13.6)Terminal(oh my zsh)下载安装JREDownload URL下载安装JDKDownload URL配置JAVA_HOME打开Terminalvim .bash_profileexport JAVA_HOME=$(/usr/libexec/java_home)...

2018-09-20 14:41:00 110

转载 用信鸽来讲解HTTPS的知识

加密是一个很难理解的东西,这里头满是数学证明。不过,除非你是在开发一个加密系统,否则无需了解那些高阶的复杂知识。如果你看这篇文章是为了创造下一个 HTTPS 协议,很抱歉,请出门左走,鸽子是远远不够的。不然的话,先去煮一壶咖啡,再来看文章吧~爱丽丝、鲍勃以及鸽子?你在网络上进行的任何活动(阅读这篇文章、在京东上购物、分享猫咪的照片),都是通过服务器发送和接收信息。这可能有点抽象。...

2018-09-18 20:17:00 79

转载 __name__ == "__main__"的作用是什么?

问题:__name__ == "__main__" 的作用是什么?# Threading exampleimport time, threaddef myfunction(string, sleeptime, lock, *args): while True: lock.acquire() time.sleep(sleeptime) ...

2018-09-03 17:37:00 150

转载 如何自学计算机科学与技术(Teach Yourself Computer Science)

如果你是一个自学成才的半吊子,或者是从培训班毕业的小菜鸟。那么,你欠自己一份计算机科学的专业知识。感谢上帝,如今你可以接受世界水平的计算机教育,但无需花费数年时间和一笔不小的金钱。互联网上的学习资源有很多,只不过有的好有的坏,有的比另一些好很多,有一些比另一些差很远。你不需要另外一个“200+ 免费在线课程”的列表。你需要的,只是如下两个问题的答案:你应该学习哪些课程,为什么?你...

2018-08-27 21:58:00 446

转载 中文技术文档的写作规范

在网络上写作,内容是重要的,但若是有一个良好的写作规范,显示出来的内容即便谈不上赏心悦目,但也规规矩矩,整齐干净,看起来舒服很多。这样的写作规范,只需要花费半小时学习就能够掌握了。推荐阮一峰老师出品的《中文技术文档的写作规范》。转载于:https://www.cnblogs.com/liushengchieh/p/9540933.html...

2018-08-27 10:58:00 134

转载 'adb remount'的作用是什么?在什么情况下有用?

'adb remount' 将 '/system' 部分置于可写入的模式,默认情况下 '/system' 部分是只读模式的。这个命令只适用于已被 root 的设备。在将文件 push 到 '/system' 文件夹之前,必须先输入命令 'adb remount'。'adb remount' 的作用相当于 'adb shell mount -o rw,remount,rw /syste...

2018-08-01 19:50:00 4683

转载 使用python遍历文件夹取出特定的字符串

# -*- coding: utf-8 -*import reimport os# 需要处理的文件夹路径(绝对路径)path = u"/Users/a140/Downloads/test2"# 存放结果的文件路径(绝对路径)results = u"/Users/a140/Downloads/result.txt"# 载入文件列表file_list = os.listdir...

2018-07-30 18:00:00 486

转载 vim学习笔记

vimtutor返回normal模式:esc移动光标 [h,j,k,l]:h 向左移动j 向下移动k 向上移动l 向右移动不保存便退出编辑器::q!删除光标所在的字符:x插入字符:i结尾处插入字符:a保存文件并退出::wq删除操作:dw(until the start of the next word, EXCLUDING its first cha...

2018-06-05 18:33:00 89

转载 Python&Appium实现安卓手机图形解锁

首先,在解锁状态下,建立一个Session,打开APP。然后,调用press_keycode()方法传入整型数值"26",锁定屏幕。通过implicitly_wait()方法等待两秒后,再次调用press_keycode()方法按下电源键,点亮屏幕。这时候看到的手机界面如下所示:此时,我们需要调用login_unlock()方法绘制图案解锁手机(预先设置好的解锁图形如上图所示)。l...

2018-05-30 11:35:00 125

转载 Python&Appium实现滑动引导页进入APP

最近在研究安卓APP的自动化测试。首先遇到的问题是,当一个session建立的时候,最先进入的是欢迎页和引导页,引导页有三张,最后一张上显示“enter”按钮,点击才能进入主界面。欢迎页加引导页,这两个页面是每次进入APP都无法避免的,如何通过代码执行跳过它们进入主界面的操作呢?1、建立session def test_enterApp(self): desired...

2018-05-24 19:55:00 221

转载 第一段自动化测试代码

import unittestfrom appium import webdriverclass HelloWorld(unittest.TestCase): def test_addContact(self): desired_caps = {} desired_caps['platformName'] = 'Android' ...

2018-03-19 20:24:00 95

转载 "unresolved reference 'appium' "问题解决

根据github的教程安装好"Appium-Python-Client"后,代码里写入"from appium import webdriver"就报错"unresolved reference 'appium' "。网上搜索了大半天,大多是两个原因所致:1、没有安装"Appium-Python-Client"2、Python IDE的路径没有设置对因为我是在安装好"Appium...

2018-03-19 17:49:00 825

转载 2017年看书总结

今年的阅读计划是看24本以上,不出意料又超额完成,并且差一本翻倍。与去年相比,多15本。看书时间集中在上半年,下半年忙于实习、编写软件以及临毕业前的玩耍,阅读量减少。看的最多的是日本作家村上春树的书,图书馆能找到的都已看完。以下,为一年来看过的书目(按看书时间先后顺序排列):1、《槽边往事:和菜头自选集》和菜头老爸来学校看我,吃完饭逛新华书店给我买的。2、《身边的江湖》野夫...

2017-12-28 16:01:00 164

转载 《疯狂java讲义》读后感

《疯狂java讲义·第三版》,全书共851页,18章。目录如下:第1章 Java语言概述与开发环境第2章 理解面向对象第3章 数据类型和运算符第4章 流程控制与数组第5章 面向对象(上)第6章 面向对象(下)第7章 Java基础类库第8章 Java集合第9章 泛型第10章 异常处理第11章 AWT编程第12章 Swing编程第13章 MySQL数据库与JDBC...

2017-11-24 22:04:00 256

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除