自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

CharliChen 's Blog

深知知识虽不是改变命运的充要条件,但却是丰富生命体验的必要积累

  • 博客(73)
  • 问答 (1)
  • 收藏
  • 关注

转载 Protobuffer 和 Json 深度对比

JSON相信大家都知道是什么东西,如果不知道,那可就真的OUT了,GOOGLE一下去。这里就不介绍啥的了。Protobuffer大家估计就很少听说了,但如果说到是GOOGLE搞的,相信大家都会有兴趣去试一下,毕竟GOOGLE出口,多属精品。Protobuffer是一个类似JSON的一个传输协议,其实也不能说是协议,只是一个数据传输的东西罢了。那它跟JSON有什么区别呢?

2017-01-24 17:50:04 1918

原创 Android 性能数据采集(概要)

CPU adb shell dumpsys cpuinfo |grep packageName >/address/cpu.txt大家看第一个应用CPU占用率68%,这个过程是在用户(user)中花61%的时间,并在内核空间(kernel)花费7.1%的时间。或者: adb shell top |grep packagename>/address/cpu.txt 内存1. 内存耗

2017-01-24 12:32:12 3006

原创 Android稳定性测试-- Monkey二次开发

引子前面一遍blog Monkey源码分析讲到Monkey的代码结构和代码执行流程,相信通过介绍大家应该对monkey的运行原理和核心逻辑有了很深刻的了解。我们做的这一切都是为了更好的了解monkey的内部逻辑进行二次开发。 为什么要二次开发前面的文章也大概说了,它毕竟是一款为稳定性测试而准备的小工具,所以存在很多局限性:Monkey不提供截屏功能,因此测试很难找到问题复现的场景;Monkey

2017-01-23 15:31:34 9303 15

原创 Android稳定性测试-- Monkey源码分析

Monkey的代码框架主控模块:主控模块即Monkey类,是入口函数所在类,主要负责参数解析和赋值、初始化运行环境,执行runMonkeyCycles()方法,针对不同的事件源开始获取并执行不同的事件。事件源模块:事件源代表不同的事件来源。以MonkeyEventSource为基类,它是一个接口,主要的实现类是MonkeySourceRandom,也就是默认的随机事件源,当然也还有

2017-01-03 19:40:50 4093 3

原创 ITester接口测试框架 (三) : 框架实现细节

项目结构结构图框架实现1.数据准备 和 参数输入数据准备有三种方式:一:通过访问数据库,获取我们需要的接口测试参数,比如测试登录接口,我们要提前获得 用户名和密码,然后才能连同我们的url发送给服务端。要想访问数据库,必须要先与数据库建立连接,我这里采用的是JDBC 和C3P0,可以参考我之前的blog Java通过JDBC 进行MySQL数据库操作 Java数据库连接池 学习笔记二:直接

2016-11-25 12:34:42 11609 4

原创 ITester接口测试框架 (二) : 框架简介和流程图

ITester框架简介上一篇的blog主要讲解了接口测试的基础知识,这一章将详细介绍接口测试框架图和流程图。ITester是处理API接口测试的轻量级自动化测试框架,java语言实现。主要是面向service接口,诸如:HTTP,SOAP,JSON-RPC的轻量级自动化测试框架。将数据准备、参数的输入、请求执行、结果解析、数据验证、数据清理各个环节都做了封装,以数据文本文件为接口,降低自动化测试过程

2016-11-20 18:54:48 12191

原创 ITester接口测试框架 (一) :接口基础知识

本系列教材将主要为大家讲解接口测试框架的设计,本框架属于轻量型的,目前的需求基本都能满足,后续还要不断的完善,最后开源出去。暂且命名为ITester(取名字是一件很蛋疼的事情,要与接口相关,又要不能和其他框架重名)同样先规划下系列blog目录: ITester接口测试框架(一):接口基础知识 ITester接口测试框架(二):框架简介和流程图 ITester接口测试框架(三):框架实现细节接下

2016-11-10 15:14:31 7684 1

原创 HttpClient学习笔记 --发送Cookie

简介前面一篇博文HttpClient学习笔记 – 发送Http和Https请求 ,我主要讲HttpClient的get,post基本方法的封装。现在有这样一个场景:比如我们在天猫购物时,想浏览购物车中的商品,做这步操作的前提是我们的app必须是已登录状态,也就是说某些资源或业务只有登录后才可以操作和查看。上面的这个场景,app端和服务端其实是做了如下的操作:app端向服务端发送一个请求,也就是访问

2016-11-01 14:46:15 9351 1

原创 HttpClient学习笔记 --发送Http和Https请求

前言在前面有一章我转载过一篇关于HttpClient的文章:HttpClient使用详解,在那篇文章中详细讲解了HttpClient的特性,使用方法和实例。 这篇文章主要就上篇文章进一步浓缩,封装了HttpClient发送http和https请求的方法,形成一个工具类HttpClientUtil,大家以后在用到网络请求时,直接用这个工具类即可。本文是为后续接口测试框架系列的文章做铺垫,大家可以好好

2016-10-31 21:38:26 10825 4

原创 Smartphone--Android真机管理平台

背景最近在工作中发现几个问题:作为测试人员,在做产品兼容性测试时,发现手上的测试设备总是不够用,但是可能其他同事的设备在闲置着;作为Android和H5开发人员,如果测试同事发现一个兼容性的bug,要想还原场景,还要把测试设备给开发(如果不在一个楼层,还要来回跑)作为产品和运营人员,为了体验产品,也要去申请测试设备,但是大部分时间,设备是闲置的。在这样一个背景下,我在想有没有一个平台,可以把

2016-10-23 23:06:14 5685 1

原创 Java数据库连接池 学习笔记

背景对于一个简单的数据库应用,由于对于数据库的访问不是很频繁。这时可以简单地在需要访问数据库时,就新创建一个连接,用完后就关闭它,这样做也不会带来什么明显的性能上的开销。但是对于一个复杂的数据库应用,情况就完全不同了。频繁的建立、关闭连接,会极大的减低系统的性能,因此对于连接的使用成了系统性能的瓶颈。正是由于以上原因,数据库连接池技术出现了!! 数据库连接池负责分配,管理和释放数据库连接,它允许

2016-10-17 21:21:04 4469 1

原创 Java通过JDBC 进行Dao层的封装

前言前面有一章节,我专门讲解了Java通过JDBC 进行MySQL数据库操作,这主要讲解了MaySQL数据库的连接和简单的操作,但是在真正的java项目中,我们要不断的和数据库打交道,为了提高数据库操作的执行效率和增加代码的复用性,将重新封装一个Dao层,也就是数据访问层 ,用来访问数据库实现数据的持久化。Dao层设计Dao层操作通用的步骤:1.写SQL语句2.获取连接3.创建stmt4.执

2016-10-16 23:50:33 9215

原创 BeanUtils组件 学习笔记

一:BeanUtils组件简介1.什么是BeanUtils程序中对javabean的操作很频繁, 所以apache提供了一套开源的api,方便对javabean的操作,即BeanUtils组件。2.BeanUtils的作用简化javabean的操作。 在一般的写bean组件的时候,都必须要写setter和getter方法,当然假如我们事先已经知道bean的相关属性和方法,写bean是比较简单的。3

2016-10-16 15:48:52 2687

原创 Mac下配置MySQL服务

安装MySQL下载MySQL安装包:http://dev.mysql.com/downloads/mysql/ 如图,选择dmg包,下载完成,双击后打开对应的pkg包,一直点击下一步,直到安装成功 此时MySQL服务就安装完成啦,是不是很简单~启动和停止MySQL服务启动MySQL服务sudo /usr/local/mysql/support-files/mysql.server s

2016-10-13 22:06:40 6524 3

原创 Java通过JDBC 进行MySQL数据库操作

一:前言在测试工作中难免会和数据库打交道,可能大家对数据库语句都比较熟,比如常见的增删改查等,但是当我们在做自动化测试时,比如接口测试,大部分请求参数,可能都是从数据库中取值,并且接口返回值最后都会记录在数据库中,这样前提就需要和数据库建立连接,才能进行读写操作。二:JDBC是什么java提供了一个API也就是JDBC(Java Data Base Connectivity),可以为多种关系数据库提

2016-10-10 16:46:41 9980

原创 TestNG实现用例运行失败自动截图和重跑

在前面我的自动化测试框架系列文章中,有一个知识点没有讲到,现在补上。 在运行自动测试脚本时,经常会需要增加失败时自动截图的功能,以及失败重跑功能,下面介绍一下通过监听器的方式来实现自动截图和重跑功能。一:失败自动截图功能1. 定义一个截图工具类:ScreenShotpackage com.dji.utils;import java.io.File;import java.text.SimpleD

2016-09-27 20:58:11 8245 11

原创 UI层自动化测试框架(六):持续集成和测试报告

前面几章讲解了测试框架的结构和实现,接下来讲解如何实现测试框架的自动化和测试报告的生成。持续集成本框架我是采用Jenkins实现持续集成的,至于Jenkins环境的搭建和使用,我前面的blog有提到,如果大家不清楚的可以先去阅读我之前写的这篇文章,Jenkins安装和构建部署运行jenkins,首先创建一个job为appiumTurbo源码管理 将代码上传到github上进行托管,然后在jen

2016-09-13 19:28:48 7588 1

原创 UI层自动化测试框架(五):业务层和用例层

业务层该层主要是App的各种业务操作,比如登录,遍历tab,下单等,也就是说把app中各项业务的操作都封装在业务层。比如说登录操作,我们把它封装一个类,大致的流程是:首先是不是要找到登录入口(可能一个app有很多的入口),然后进入登录界面,输入用户名和密码,再点击登录按钮,这样一个完整的登录业务就算完成了。可能你问我为什么要这么做呢?在测试脚本中直接写不就可以了,为什么要把它们分离出来?其实这样做的

2016-09-11 18:01:25 7249

原创 UI层自动化测试框架(四):对象库层

引言本章主要介绍自动化测试框架–对象库层。该层是UI自动化中比较关键的一层,设计自动化框架,不可避免的就是对象库,有一个好的对象库,可以让整个测试框架可维护性更高,大大增强了代码的复用性。讲之前先和大家普及个一概念:PO模式PO模式那什么叫PO模式,为什么要用PO模式?引用如下一段话,你就会恍然大悟~ PO模式,全称Page Object模式,是Selenium中的一种测试设计模式,主要是将每一

2016-09-07 19:34:19 9773

原创 UI层自动化测试框架(三):基础层

对象

2016-09-07 14:45:27 8972 2

原创 UI层自动化测试框架(二):Appium基础

一:Appium介绍 Appium是一个移动端的自动化测试框架,可以测试原生应用,移动网页和混合型应用,且是跨平台的。可用于iOS和Android以及Firefox的操作系统。Appium是由nodejs的express框架写的Http Server。Appium不是它⾃⼰创建⼀套新的测试框架,是将现有的优秀的框架进⾏了集成,以Selenium WebDriver的协议 (JsonWireP

2016-09-06 20:54:58 9829

原创 UI层自动化测试框架(一)-简介和环境搭建

大家好,本系列教程主要介绍基于Appium的UI层的自动化测试框架的设计和实践。我将平时的学习和工作的实践一一的总结下来,给初学者一点灵感和启发,如有不对的地方还请大家指出。 所谓UI层自动化,顾名思义,主要是测试业务层界面层的,关于单元层,接口层的自动化后续再讲,对于测试,我主张的理念就是:分层测试,持续集成。只要大家后续多关注我的blog,会给大家一一呈现! 好了,废话不多说,开始进入正题。

2016-09-06 15:54:23 15927 1

原创 Git 学习笔记

本文为charlie.chen原创文章,转载请注明出处:blog.csdn.net/tobetheender一:Git简介引用Git官网的介绍:https://git-scm.com/ Git is a free and open source distributed version control system designed to handle everything from small t

2016-08-23 22:14:44 5766

原创 HTTP 学习笔记

本文为charlie.chen原创文章,转载请注明出处:http://blog.csdn.net/tobetheender/article/details/52277989一:HTTP协议简介HTTP是对浏览器客户端 和 服务器端 之间数据传输的格式规范。 属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.

2016-08-22 16:29:55 6354

原创 Linux 文件权限 学习笔记

一 Linux档案/目录的属性二 chmod 符号模式三 实践阶段首先我们先看看怎么取消所有用户执行 一个目录下所有文件的权限:a 代表对所有用户执行此操作 -x 意为取消执行权限 * 代表操作对象为该目录下所有文件(注意并不包括子文件夹下的文件)如果我们对一个文件加下的所有操作执行我们再来看看怎么为在刚才的基础上为文件属主增加执行权限现在该目录下所有文件的属主都有了执行权限如果我们要

2017-01-24 17:28:57 703

原创 浏览器加载网页的过程

fdg

2017-01-03 16:34:28 1990

原创 在MAC平台下使用Eclipse出现了中文乱码

在MAC平台下使用Eclipse出现了中文乱码 在Preference(偏好设置)中,搜索框中输入content找到Content Types,然后在text中找到并选中Java Source File,然后在Defalut encoding输入UTF-8或者输入GBK(具体输入哪个你根据源代码的中文乱码变化区分和尝试),最后点击Update按钮更新就可以了。

2016-12-21 15:53:08 666

原创 Android屏幕截图方式总结

0、Android屏幕截图方式:借助PC端工具截图Android手机端截图1、借助PC端工具截图PC端截图可用的工具非常之多,从Android SDK提供的adb、ddms工具,到各大第三方助手应用宝、刷机精灵、豌豆荚等等。工具虽多,但这些它们的实现方式基本都是一样的,通过执行 adb shell screencap -p xxx.png 或 a

2016-12-20 14:43:35 2930 1

转载 如何更快速有效的收集Android应用的FPS

FPS是什么?FPS(每秒传输帧数(Frames Per Second))是图像领域中的定义,是指画面每秒传输帧数,通俗来讲就是指动画或视频的画面数,对应的就是APP UI界面的刷行频率,在一个UI动画的播放过程中,fps越大,界面表现越流畅,fps越低,界面表现越卡顿,因此,测量FPS经常用于评价一个APP的流畅度,以此来判定APP是否能带来更好的用户体验。我们是如何收集APP帧率的?

2016-12-14 22:42:35 3297 2

原创 Android 热修复原理

Android热修复原理这段时间比较难闲,就抽空研究一下Android热修复的原理。自从Android热修复这项技术出现之后,随之而现的是多种热修复方案的出现。前两天又看到一篇文章分析了几种热修复方案的比较。原文地址是:[Android热修复] 技术方案的选型与验证看完这篇文章,有点汗颜。有这么多的热修复方案,并且他们之间的实现原理也不一样,各有优缺点。然后在尼古拉

2016-12-13 18:07:28 520

转载 LeakCanary(二)内存泄露监测原理研究

LeakCanary 内存泄露监测原理研究字数2978 阅读1120 评论2 喜欢8"Read the fucking source code" -- linus一句名言体现出了阅读源码的重要性,学习别人得代码是提升自己的重要途径。最近用到了LeakCanary,顺便看一下其代码,学习一下。LeakCanary是安卓中用来检测内存泄露的小工具,它能帮助我们提早发现代码中隐藏

2016-12-13 14:44:46 1933 1

转载 MAC上反编译android apk---apktool, dex2jar, jd-jui安装使用(含手动签名)

前文 介绍了在Windows平台利用强大的APK-Multi-Tool进行反编译apk,修改smali源码后再回编译成apk的流程,最近受人之托,破解个apk,所幸的是所用到的这三个软件都是跨平台的,mac上也妥妥的。这里记录下在mac上所用的东西和流程。 总共需要三个软件,为了便于找到最新的版本,把官网也放后面:Apktool:http://ibotpeaches.github.io

2016-12-13 10:12:03 403

转载 WeTest--Android 内存泄露实践分析

本文转自:WeTest:http://wetest.qq.com/lab/view/161.html定义​内存泄漏也称作“存储渗漏”,用动态存储分配函数动态开辟的空间,在使用完毕后未释放,结果导致一直占据该内存单元。直到程序结束。(其实说白了就是该内存空间使用完毕之后未回收)即所谓内存泄漏。 内存泄漏形象的比喻是“操作系统可提供给所有进程的存储空间正在被某个进程榨干”,最终结果

2016-11-29 18:44:50 831

转载 LeakCanary(一)直白的展现Android中的内存泄露

之前碰到的OOM问题,终于很直白的呈现在我的眼前:我尝试了MAT,但是发现不怎么会用。直到今天终于发现了这个新工具:当我们的App中存在内存泄露时会在通知栏弹出通知:当点击该通知时,会跳转到具体的页面,展示出Leak的引用路径,如下图所示:LeakCanary 可以用更加直白的方式将内存泄露展现在我们的面前。以下是我找到的学习资料,写的非常棒:

2016-11-29 18:41:39 510

转载 Android App 耗电量统计

前言    在Android统计App耗电量比较麻烦,直至Android 4.4,它仍没公开“电量统计”API或文档……额,是的,仅没有公开,并不是没有。平时在手机“设置- 电量”看到的数据        就是系统调用内部API的统计结果。 基础概念    1. 手机由众多“部件”组成,所谓“部件”是指:CPU,WIFI,GPS....所以,Androi

2016-11-26 23:42:33 1402

转载 Android 获取内存信息---ActivityManager的使用

文章出处:http://blog.csdn.net/qinjuning                             本节内容主要是讲解ActivityManager的使用,通过ActivityManager我们可以获得系统里正在运行的activities,包括     进程(Process)等、应用程序/包、服务(Service)、任务(

2016-11-26 23:36:41 982

转载 Android APP编译和运行原理

在本篇中,主要介绍Android平台应用程序的运行原理,在阅读了SDK文档中“Application Fundamentals”一篇的内容后,根据自己的理解绘制了下面的示意图:      每个应用程序安装后,系统便会为其分配一个独立的存储空间,所谓的“Security Sandbox”,用于存放字节码文件、资源文件及配置文件等,同时,系统会为每一个应用程序分配唯一的ID,用以标识该

2016-11-21 12:59:41 10815

转载 Android 内存泄漏总结

以下部分图片、实例代码和文段都摘自或参考以下文章 :支付宝:Android怎样coding避免内存泄露支付宝钱包Android内存治理IBM :Java的内存泄漏Android Design Patterns :How to Leak a Context: Handlers & Inner Classes伯乐在线团队:Andr

2016-11-21 12:54:50 1517

原创 Java 堆、栈、方法区的区别

结构化语言里函数(子程序)调用最方便的实现方式就是用栈,以至于现在绝大部分芯片都对栈提供芯片级的硬件支持,一条指令即可搞定栈的pop操作。栈的好处是:方便、快、有效避免内存碎片化。栈的问题是:不利于管理大内存(尤其在16位和32位时代)、数据的生命周期难于控制(栈内的有效数据通常是连续存储的,所以pop时后申请的内存必须早于先申请的内存失效),所以栈不利于动态地管理并且有效地利用宝贵的内存资源。于是

2016-11-21 12:49:10 11413 4

转载 理解Java虚拟机体系结构

1 概述  众所周知,Java支持平台无关性、安全性和网络移动性。而Java平台由Java虚拟机和Java核心类所构成,它为纯Java程序提供了统一的编程接口,而不管下层操作系统是什么。正是得益于Java虚拟机,它号称的“一次编译,到处运行”才能有所保障。1.1 Java程序执行流程  Java程序的执行依赖于编译环境和运行环境。源码代码转变成可执行的机器代码,由下面的流程

2016-11-21 12:43:49 531

空空如也

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

TA关注的人

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