如何做 Android 应用消防水泵流量测试装置

Android自动化测试和流量控制整合应用--《华南理工大学》2014年硕士论文
Android自动化测试和流量控制整合应用
【摘要】:随着移动互联网的兴起,越来越多的企业把目光投放到相关的移动互联网产品上。Android是一个开放的手机操作系统,吸引了大批的开发者和厂商的兴趣,相关的Android应用数量越来越多、功能也越来越复杂。移动应用对网络有严重的依赖,大多数的应用都需要良好的网络环境支持。但是,由于手机有可能到处移动,手机上应用,有其特殊性运行环境,设备运行环境的不确定性,其外部的网络环境无法得到保证。因此,在开发过程中,必须恰当地处理好各种网络状况。而在Android的开发测试中,虽然有不少自动化测试的平台和方案,但这些方案都没有针对各种网络的状态进行测试。要测试应用在不同网络环境下的运行结果,可以让测试人员拿着设备在不同位置移动并记录相关的操作结果。然而,这种方法费时费力,不够严谨和科学,存在着采集数据难,采集的数据不精确,采集后的数据难以处理的问题。针对Android难以对网络进行测试的问题,本文提出了一种方案,即利用软件控制网络通信,通过对网络进行流量控制,模拟出特定的网络环境(如2G、3G、4G),然后在这种网络条件下进行Android自动化测试。这个方案有两个重点,一个是流量控制功能,另一个自动化测试功能。课题研究的流量控制的功能,是利用Windows平台的WFP技术,基于WinDivert进行二次开发的,它实现了利用应用程序按照一定的规则模拟多种网络状况的功能。而Android自动化测试,则是利用Gradle实现对Android源代码进行编译、打包以及测试。流量控制与自动化测试这两个功能整合后,实现了把应用置于特定网络环境下的进行自动化测试的功能。进行测试时,系统平台会先把网络速度锁定在一定的范围,后续Android的应用运行时,只能运行在这个网络速度范围内运行。网络速度设定完毕后,系统执行从服务器上下载Android源代码、编译源代码、打包应用、安装应用、测试应用等一系列标准的自动化测试流程。利用这种方案进行开发测试,Android应用在测试期间只能在指定的网络速度下运行,这有利于观察、记录、重现相关的测试运行结果,对应用的测试将更为全面,测试结果也更为可靠。
【关键词】:
【学位授予单位】:华南理工大学【学位级别】:硕士【学位授予年份】:2014【分类号】:TP393.06【目录】:
摘要5-6Abstract6-9第一章 绪论9-14 1.1 背景和意义9 1.2 国内外现状9-12
1.2.1 国内研究状况9-10
1.2.2 国外研究状况10-11
1.2.3 普遍存在的问题11-12 1.3 实施方案、理论方法综述12 1.4 论文结构12-14第二章 相关技术14-17 2.1 开发语言14 2.2 Robotium14 2.3 Windows Filtering Platform14-15 2.4 WinDivert15 2.5 Gradle15-16 2.6 本章小结16-17第三章 系统需求分析17-22 3.1 现状分析17-18 3.2 系统需求分析18-21
3.2.1 网络流量控制18-19
3.2.2 自动化测试19
3.2.3 调度控制和集成19
3.2.4 用户需求19-21 3.3 本章小结21-22第四章 系统设计与实现22-32 4.1 架构设计22-28
4.1.1 架构风格选用22-23
4.1.2 系统架构23-28 4.2 网络拓扑28-29 4.3 操作系统与开发平台选择29-30 4.4 数据处理30-31 4.5 本章小结31-32第五章 系统功能模块设计与实现32-52 5.1 流量控制子系统设计32-44
5.1.1 数据截获和处理模块设计33-40
5.1.2 HTTP 服务模块设计40-42
5.1.3 HTTP 接口模块设计42-43
5.1.4 协调模块设计43
5.1.5 用户接口模块43-44 5.2 调度控制子系统设计44-45 5.3 应用测试子系统设计45-51
5.3.1 Gradle 自动化测试流程45-46
5.3.2 编写测试用例46-47
5.3.3 应用测试子系统运行结果验证47-51 5.4 本章小结51-52第六章 总结与展望52-54 6.1 总结52 6.2 展望的内容52-54参考文献54-56致谢56-57附件57
欢迎:、、)
支持CAJ、PDF文件格式
【参考文献】
中国期刊全文数据库
左黎明;汤鹏志;;[J];华东交通大学学报;2008年03期
李小龙,毛文林;[J];计算机工程与应用;2003年35期
许卓明,栗明,董逸生;[J];计算机工程;2003年20期
卢建军;苏宁;;[J];制造业自动化;2010年15期
胡利强;周冬初;王伟;;[J];计算机与现代化;2010年08期
张克平,李增智;[J];小型微型计算机系统;2003年05期
【共引文献】
中国期刊全文数据库
李静林;苏森;杨放春;;[J];北京邮电大学学报;2009年S1期
陈亮;陶宏才;;[J];成都信息工程学院学报;2008年05期
李久刚;唐新明;汪汇兵;刘正军;;[J];测绘科学;2011年03期
郑灿;;[J];上海电力学院学报;2011年04期
王义荣;邬群勇;马亨冰;;[J];福建电脑;2010年01期
张少敏;张帆;王保义;;[J];电力自动化设备;2012年08期
丁振凡;李馨梅;;[J];智能计算机与应用;2012年04期
张倩;孙瑞;;[J];电脑知识与技术;2012年35期
林岭;;[J];福建电脑;2013年07期
崔立尉;;[J];电子制作;2013年24期
中国重要会议论文全文数据库
李静林;苏森;杨放春;;[A];中国通信学会通信软件技术委员会2009年学术会议论文集[C];2009年
中国硕士学位论文全文数据库
尉建兴;[D];太原理工大学;2011年
钱继来;[D];武汉理工大学;2011年
徐永龙;[D];长安大学;2011年
张亮;[D];东北石油大学;2011年
汪芳琴;[D];南京航空航天大学;2010年
孙思东;[D];哈尔滨工业大学;2010年
汪保杰;[D];湖南大学;2009年
林婕;[D];中山大学;2011年
胡平;[D];上海交通大学;2011年
部海青;[D];上海交通大学;2012年
【二级参考文献】
中国期刊全文数据库
秦烨;康伟;韩佳;;[J];今日科苑;2008年24期
麦中凡,戴彩霞;[J];计算机工程与应用;2001年11期
赖勇浩;谢赞福;;[J];计算机工程;2007年11期
罗万明,林闯,阎保平;[J];计算机学报;2001年01期
朱烨行;戴冠中;慕德俊;李艳玲;;[J];计算机应用研究;2006年10期
殷海波;宁绍军;王东;;[J];计算机应用与软件;2007年01期
汪琴;安贺意;秦颖;;[J];情报科学;2007年06期
林建;张帆;;[J];情报理论与实践;2007年04期
曹海;;[J];四川大学学报(自然科学版);2006年06期
叶振宇;[J];绍兴文理学院学报;2005年01期
【相似文献】
中国期刊全文数据库
陈琛;;[J];通信世界;2010年03期
陈琛;;[J];通信世界;2010年03期
李健;;[J];电子产品世界;2010年03期
单玉良;;[J];程序员;2010年03期
张雪超;;[J];互联网天地;2010年02期
;[J];电脑爱好者;2010年10期
;[J];电脑爱好者;2010年11期
蔡罗成;;[J];信息安全与通信保密;2010年06期
一笑;;[J];电视技术;2010年04期
;[J];电脑与电信;2010年06期
中国重要会议论文全文数据库
万晓燕;徐国庆;;[A];2011年全国电子信息技术与应用学术会议论文集[C];2011年
鲍轩;章坚武;;[A];浙江省信号处理学会2012学术年会论文集[C];2012年
Di JWang JZhang L;[A];2012年计算机应用与系统建模国际会议论文集[C];2012年
Xin Li;Yumei ZXiong Li;;[A];2013年中国智能自动化学术会议论文集(第二分册)[C];2013年
符易阳;周丹平;;[A];第26次全国计算机安全学术交流会论文集[C];2011年
金洁;张琳;;[A];2010年通信理论与信号处理学术年会论文集[C];2010年
张立;韩银和;袁小龙;;[A];第十四届全国容错计算学术会议(CFTC'2011)论文集[C];2011年
Cheng CLi LJianguo CCheng Z;[A];Proceedings of 2011 International Conference on Computer Science and Information Technology(ICCSIT 2011)[C];2011年
Zhe CPei-Luen Patrick RDennis SOsama KPoom LCherry Yu;Nam W;[A];第八届和谐人机环境联合学术会议(HHME2012)论文集CHCI[C];2012年
魏宁;王金海;;[A];天津市生物医学工程学会第三十四届学术年会论文集[C];2014年
中国重要报纸全文数据库
;[N];计算机世界;2009年
连晓东;[N];中国电子报;2010年
本报实习记者
朱怡兵;[N];通信信息报;2010年
林剑;[N];通信信息报;2009年
尼尔·卡利斯特;[N];中国计算机报;2009年
;[N];电脑报;2011年
项有建 《冲出数字化》作者;[N];通信产业报;2011年
曾航;[N];21世纪经济报道;2012年
赵玲玲;[N];中华合作时报;2013年
通信产业报(网)互联网主编
王彦彬;[N];通信产业报;2013年
中国博士学位论文全文数据库
杨欢;[D];西安电子科技大学;2014年
尹国伟;[D];中国农业科学院;2014年
曾述可;[D];中国科学技术大学;2014年
中国硕士学位论文全文数据库
秦凯;[D];华南理工大学;2012年
陈捷;[D];吉林大学;2013年
王剑龙;[D];吉林大学;2013年
李钰;[D];天津大学;2012年
黄鑫;[D];厦门大学;2014年
祝忠方;[D];北方工业大学;2014年
江耸;[D];中山大学;2013年
党李成;[D];安徽大学;2010年
侯效;[D];北京邮电大学;2011年
胡锐;[D];华南理工大学;2011年
&快捷付款方式
&订购知网充值卡
400-819-9993
《中国学术期刊(光盘版)》电子杂志社有限公司
同方知网数字出版技术股份有限公司
地址:北京清华大学 84-48信箱 大众知识服务
出版物经营许可证 新出发京批字第直0595号
订购热线:400-819-82499
服务热线:010--
在线咨询:
传真:010-
京公网安备75号Linux 系统下所有的信息都是以文件的形式存在的,所以应用程序的流量信息也会被保存在操作系统的文件中。Android 2.2 版本以前的系统的流量信息都存放在 proc/net/dev(或者 proc/self/net/dev)文件下,读取文件然后对其进行解析就行了。读取某一个应用的流量,则读取proc/uid_stat/uid /tcp_rcv 文件进行解析(注:模拟器下不存在这个目录)。如需查看某个应用的流量信息,可以通过以下命令来实现:
adb devices
列出所有设备
adb -s 设备名称 shell
进入对应的设备
进入设备的属性目录
cd uid_stat
进入 user id 状态目录,每个应用程序在安装的时候系统会为每个应用分配一个对应的 uid
列出 uid_stat 目录下所有应用对应的 user id 目录
进入对应应用的 uid 目录
查看对应 uid 目录下的 tcp_rcv 和 tcp_snd 目录
cat tcp_rcv
查看该应用接收的数据信息
cat tcp_snd
查看该应用发送的数据信息
这里需要注意的是不同语言编写的应用程序对应的的 uid 命名规则是不同的,如果是 Java 编写的应用程序,它的 uid 是从 10000 开始的,如果是 C 语言编写的,它的 uid 是从 1000 开始的。另外,uid 一旦被分配,是不会改变的。从下图中我们可以看到类似 app_0、app_1、app_3、app_4 的信息,这些信息也代表了 uid,也就是说 app_0 等同于 10000,app_1 等同于 10001,事实上&app_&后面的信息代表这个应用的安装序号,表示这个应用是第几个被安装到系统的。
Android 2.2 版本中加入了 TrafficStats 类来实现对流量统计的操作,其实 TrafficStats 类自身也是依靠读取 Linux 下保存流量信息的文件并进行解析来实现的。android.net.TrafficStats 类中提供了多种静态方法,可以直接调用获取,返回类型均为 long 型,如果返回值等于 -1 代表 UNSUPPORTED,表示当前设备不支持统计,这里需要注意的是,通过 TrafficStats 获取的数据在手机重启的时候会被清空,所以,如果要对流量进行持续的统计需要将数据保存到数据库中,在手机重启时将数据读出进行累加即可。TrafficStats 类的静态方法如下:
package cn.sunzn.
import android.app.A
import android.net.TrafficS
import android.os.B
import android.view.M
public class MainActivity extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/** 获取手机通过 2G/3G 接收的字节流量总数 */
TrafficStats.getMobileRxBytes();
/** 获取手机通过 2G/3G 接收的数据包总数 */
TrafficStats.getMobileRxPackets();
/** 获取手机通过 2G/3G 发出的字节流量总数 */
TrafficStats.getMobileTxBytes();
/** 获取手机通过 2G/3G 发出的数据包总数 */
TrafficStats.getMobileTxPackets();
/** 获取手机通过所有网络方式接收的字节流量总数(包括 wifi) */
TrafficStats.getTotalRxBytes();
/** 获取手机通过所有网络方式接收的数据包总数(包括 wifi) */
TrafficStats.getTotalRxPackets();
/** 获取手机通过所有网络方式发送的字节流量总数(包括 wifi) */
TrafficStats.getTotalTxBytes();
/** 获取手机通过所有网络方式发送的数据包总数(包括 wifi) */
TrafficStats.getTotalTxPackets();
/** 获取手机指定 UID 对应的应程序用通过所有网络方式接收的字节流量总数(包括 wifi) */
TrafficStats.getUidRxBytes(uid);
/** 获取手机指定 UID 对应的应用程序通过所有网络方式发送的字节流量总数(包括 wifi) */
TrafficStats.getUidTxBytes(uid);
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
阅读(...) 评论()解析android 流量监测的实现原理
字体:[ ] 类型:转载 时间:
本篇文章是对android中流量监测的实现原理进行了详细的分析介绍,需要的朋友参考下
Linux 系统下所有的信息都是以文件的形式存在的,所以应用程序的流量信息也会被保存在操作系统的文件中。Android 2.2 版本以前的系统的流量信息都存放在 proc/net/dev(或者 proc/self/net/dev)文件下,读取文件然后对其进行解析就行了。读取某一个应用的流量,则读取proc/uid_stat/uid /tcp_rcv 文件进行解析(注:模拟器下不存在这个目录)。如需查看某个应用的流量信息,可以通过以下命令来实现: 代码如下:adb devices&&&&&&&&&&&&&&&&&&&&&&&& 列出所有设备&&& adb -s 设备名称 shell&&&&&&&&&&&&&&& 进入对应的设备&&& cd proc&&&&&&&&&&&&&&&&&&&&&&&&&&&& 进入设备的属性目录&&& cd uid_stat&&&&&&&&&&&&&&&&&&&&&&&& 进入 user id 状态目录,每个应用程序在安装的时候系统会为每个应用分配一个对应的 uid&&& ls&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 列出 uid_stat 目录下所有应用对应的 user id 目录&&& cd uid&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 进入对应应用的 uid 目录&&& ls&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 查看对应 uid 目录下的 tcp_rcv 和 tcp_snd 目录&&& cat tcp_rcv&&&&&&&&&&&&&&&&&&&&&&&& 查看该应用接收的数据信息&&& cat tcp_snd&&&&&&&&&&&&&&&&&&&&&&&& 查看该应用发送的数据信息这里需要注意的是不同语言编写的应用程序对应的的 uid 命名规则是不同的,如果是 Java 编写的应用程序,它的 uid 是从 10000 开始的,如果是 C 语言编写的,它的 uid 是从 1000 开始的。另外,uid 一旦被分配,是不会改变的。从下图中我们可以看到类似 app_0、app_1、app_3、app_4 的信息,这些信息也代表了 uid,也就是说 app_0 等同于 10000,app_1 等同于 10001,事实上“app_”后面的信息代表这个应用的安装序号,表示这个应用是第几个被安装到系统的。
Android 2.2 版本中加入了 TrafficStats 类来实现对流量统计的操作,其实 TrafficStats 类自身也是依靠读取 Linux 下保存流量信息的文件并进行解析来实现的。android.net.TrafficStats 类中提供了多种静态方法,可以直接调用获取,返回类型均为 long 型,如果返回值等于 -1 代表 UNSUPPORTED,表示当前设备不支持统计,这里需要注意的是,通过 TrafficStats 获取的数据在手机重启的时候会被清空,所以,如果要对流量进行持续的统计需要将数据保存到数据库中,在手机重启时将数据读出进行累加即可。TrafficStats 类的静态方法如下: 代码如下:package cn.sunzn.import android.app.Aimport android.net.TrafficSimport android.os.Bimport android.view.Mpublic class MainActivity extends Activity {&& public void onCreate(Bundle savedInstanceState) {&&&&&& super.onCreate(savedInstanceState);&&&&&& setContentView(R.layout.activity_main);&&&&&& /** 获取手机通过 2G/3G 接收的字节流量总数 */&&&&&& TrafficStats.getMobileRxBytes();&&&&&& /** 获取手机通过 2G/3G 接收的数据包总数 */&&&&&& TrafficStats.getMobileRxPackets();&&&&&& /** 获取手机通过 2G/3G 发出的字节流量总数 */&&&&&& TrafficStats.getMobileTxBytes();&&&&&& /** 获取手机通过 2G/3G 发出的数据包总数 */&&&&&& TrafficStats.getMobileTxPackets();&&&&&& /** 获取手机通过所有网络方式接收的字节流量总数(包括 wifi) */&&&&&& TrafficStats.getTotalRxBytes();&&&&&& /** 获取手机通过所有网络方式接收的数据包总数(包括 wifi) */&&&&&& TrafficStats.getTotalRxPackets();&&&&&& /** 获取手机通过所有网络方式发送的字节流量总数(包括 wifi) */&&&&&& TrafficStats.getTotalTxBytes();&&&&&& /** 获取手机通过所有网络方式发送的数据包总数(包括 wifi) */&&&&&& TrafficStats.getTotalTxPackets();&&&&&& /** 获取手机指定 UID 对应的应程序用通过所有网络方式接收的字节流量总数(包括 wifi) */&&&&&& TrafficStats.getUidRxBytes(uid);&&&&&& /** 获取手机指定 UID 对应的应用程序通过所有网络方式发送的字节流量总数(包括 wifi) */&&&&&& TrafficStats.getUidTxBytes(uid);&& }&& public boolean onCreateOptionsMenu(Menu menu) {&&&&&& getMenuInflater().inflate(R.menu.activity_main, menu);&&&&&&&& }}
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具关注51Testing
如何做Android应用流量测试
发表于: 11:29 &作者:未知 & 来源:51Testing软件测试网采编
推荐标签:
&&软件大小:1.20MB资源类型:资料类授权方式:免费/开源资料&&&简介:& & &如何做应用流量GT(中文产品名称:随身调):是出品的开源调试工具,本次测试中用其进行手机的流量统计和抓包。请在 Android 上安装 GT 应用(可以通过官网或应用宝下载)。&Wireshark:抓包的分析工具,也提供了 Android 手机的抓包实现,GT 中抓包的功能就是在其提供的实现基础上的易用性封装,本次测试中用 Wireshark 进行抓包的分析。请在PC 上安装 Wireshark。& & &
搜索风云榜
51Testing官方微信
51Testing官方微博
测试知识全知道}

我要回帖

更多关于 流量测试装置 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信