当前位置: 首页 > news >正文

万户网络是干嘛的关键词优化报价

万户网络是干嘛的,关键词优化报价,营销策划公司名字大气好听,wordpress 登录页加密黑盒测试中关键截图如何打点Android黑盒测试过程中如何进行有效的打点是我们经常遇到的问题,我们一般会在脚本内部进行数据打点,也可以使用其他进程录屏或截图。那我们如何选取合适的方式进行打点记录呢?下图是对常用打点方式的统计&#xff…

黑盒测试中关键截图如何打点Android黑盒测试过程中如何进行有效的打点是我们经常遇到的问题,我们一般会在脚本内部进行数据打点,也可以使用其他进程录屏或截图。那我们如何选取合适的方式进行打点记录呢?下图是对常用打点方式的统计!对于测试开发人员来说有效的关键截图信息是最直观的数据,可以很快定位问题场景!本文重点介绍如何在Shell进程内统计屏幕截图变化。

第三方服务截图

本方案可以在uiautomator1.0脚本内实现,也可以自定义Shell进程服务来实现。个人推荐自定义Shell服务,然后用app_process命令启动。即使脚本出现异常退出了也不会影响截图服务,并且可以截取脚本启动前和结束后的状态。最主要的是Android R开始不再支持uiautomator1.0脚本。

主要通过Activity监听、定时器、进程监听服务触发截图操作:在页面变化时、进程状态变化时以及定时检测页面状态。除此之外我们需要一个App提供图片相似度的比较,或者搭建其他图片匹配服务也可以。

Activity变化和应用异常时截图

1.首先我们要注册ActivityController

①. 直接通过IActivityController.Stub()方法获取ActivityController对象;

②. 通过ActivityManager的setActivityController方法设置监听,设置成功后切换页面时就会回调对应的方法;

2.我们可以在ActivityController的回调中记录关键截屏信息,主要信息有:

**①. **新打开的Activity:点击按钮跳转页面时;

**②. **恢复显示的Activity:按返回键退回到上一级页面时显示的页面;

**③. **App产生崩溃的详细信息以及截图;

**④. **App产生ANR时的详细信息以及截图;

**⑤. **我们可以在activityStarting和activityResuming方法中对打开的页面进行控制。

3.缺点

**①. **如果其他进程也注册这个服务,那么会相互影响,只有最后注册的服务有效;

**②. **当在页面中切换Fragment时无法感知到事件变化;

**③. **必须在Shell进程内执行,普通App内是无法注册成功的;

IActivityController mActivityController = new IActivityController.Stub() {//当调用Activity的onCreate方法(跳转新页面)时回调此方法,//return false时不会启动Activity;return true时正常启动Activity//不要在这个方法内做耗时操作@Overridepublic boolean activityStarting(Intent intent, String pkg) throws RemoteException {return true;}//当调用Activity的onResume方法(比如dialog消失)时会调用这个方法@Overridepublic boolean activityResuming(String pkg) throws RemoteException {return true;}/*** 有应用在Java层产生异常时回调此方法* 返回true时,会显示应用crash的弹窗,返回false时会立即kill应用*/@Overridepublic boolean appCrashed(String processName, int pid, String shortMsg, String longMsg, long timeMillis, String stackTrace) throws RemoteException {return false;}/*** 检测到ANR异常时就会回调此方法*/@Overridepublic int appEarlyNotResponding(String s, int i, String s1) throws RemoteException {return 0;}/***  应用产生ANR时回调此方法,* Return 0 时显示 "应用停止响应" 弹窗。* Return 1 时不做任何操作,等待应用恢复正常;* Return -1 时结束产生ANR的应用.*/@Overridepublic int appNotResponding(String processName, int pid, String processStats) throws RemoteException {return -1;}/*** 系统停止响应时回调此方法,可以在这个方法里面对设备进行些恢复工作         */@Overridepublic int systemNotResponding(String msg) throws RemoteException {return 0;}
};

进程变化监听

由于ActivityController服务存在被干扰的情况,我们需要其他服务进行辅助判断,通过ActivityManager注册IProcessObserver可以获取进程变化的回调,特别是在onForegroundActivitiesChanged方法内可以判断是否触发页面切换。

通过IProcessObserver可以实现的功能:

**①. **在onForegroundActivitiesChanged方法内监听页面变化;

**②. **在onProcessStateChanged和onProcessDied方法内可以统计App的线程生命周期;

**③. **可以统计app运行期间创建的线程信息;

**④. **该服务被不同进程注册时,相互间互不影响;

缺点:

**①. **没有直观信息,需要使用uid进行关联,处理复杂;

IProcessObserver mProcessObserver = new IProcessObserver.Stub() {//与用户交互的Activity发生变化时foregroundActivities为true,否则foregroundActivities为false//uid产生该活动的应用标识,可以用包信息匹配到具体的应用//pid 当前活动的线程/进城ID@Overridepublic void onForegroundActivitiesChanged(int pid, int uid,boolean foregroundActivities) throws RemoteException {if(foregroundActivities) {//}}//活动状态发生变化时调用,在此方案内实际意义不大@Overridepublic void onProcessStateChanged(int pid, int uid, int importance) throws RemoteException {}//结束时调用@Overridepublic void onProcessDied(int pid, int uid) throws RemoteException {}
};

综合应用

上面两种方案各有优劣,我们可以将他们整合在一个流程内实现较为完善的截图机制:

①. 首先我们的服务主要依赖于ActivityController进行页面变化的感知,以便于获取详细的信息和精确控制;

**②. **我们注册IProcessObserver进行辅助验证,当页面发生变化时我们进行截屏,并通过ActivityController最后一次接收事件的时间判断其服务状态,如果服务状态异常,那么我们重新注册ActivityController服务;

**③. **开始监控页面时我们初始化一个定时器,可以定时(2S)截取屏幕,将当前截图Bitmap与上一次的截图Bitmap做图像匹配,如果图片相似度小于0.8,那么可以认定页面发生了变化,如果5S内没有保存过页面信息,那么需要重新初始化ActivityController服务。

Root设备的特殊方案

Android系统是基于Linux系统的移动操作系统。它们可以通过getevent命令输出键盘和屏幕事件,包括响应事件的坐标区域和键盘key值。但是Android系统基于安全考虑,大部分真机系统是没有权限执行getevent命令的,它不会输出任何有效信息,但是华为手机(荣耀20 i)上却可以正常使用。这是一个非常危险的权限,大家自己的手机还是不要开启开发者模式了!

/dev/input/event2: EV_ABS       ABS_MT_POSITION_X    0000024b
/dev/input/event2: EV_ABS       ABS_MT_POSITION_Y    0000065d
/dev/input/event2: EV_ABS       ABS_MT_PRESSURE      000000f5
/dev/input/event2: EV_ABS       ABS_MT_TRACKING_ID   00000000
/dev/input/event2: EV_ABS       ABS_MT_TOUCH_MAJOR   000000a5
/dev/input/event2: EV_ABS       ABS_MT_TOUCH_MINOR   00000087
/dev/input/event2: EV_ABS       ABS_MT_ORIENTATION   ffffffc6
/dev/input/event2: EV_ABS       ABS_MT_BLOB_ID       00000002
/dev/input/event2: EV_SYN       SYN_MT_REPORT        00000000
/dev/input/event2: EV_KEY       BTN_TOUCH            DOWN
/dev/input/event2: EV_SYN       SYN_REPORT           00000000
/dev/input/event2: EV_ABS       ABS_MT_POSITION_X    0000024b
/dev/input/event2: EV_ABS       ABS_MT_POSITION_Y    0000065c
/dev/input/event2: EV_ABS       ABS_MT_PRESSURE      00000067
/dev/input/event2: EV_ABS       ABS_MT_TRACKING_ID   00000000
/dev/input/event2: EV_ABS       ABS_MT_TOUCH_MAJOR   000000b4
/dev/input/event2: EV_ABS       ABS_MT_TOUCH_MINOR   000000a5
/dev/input/event2: EV_ABS       ABS_MT_ORIENTATION   ffffffc1
/dev/input/event2: EV_ABS       ABS_MT_BLOB_ID       00000002
/dev/input/event2: EV_SYN       SYN_MT_REPORT        00000000
/dev/input/event2: EV_SYN       SYN_REPORT           00000000
/dev/input/event2: EV_SYN       SYN_MT_REPORT        00000000
/dev/input/event2: EV_KEY       BTN_TOUCH            UP
/dev/input/event2: EV_SYN       SYN_REPORT           00000000

**ABS_MT_POSITION_X **屏幕的横坐标,后面一列是坐标的十六进制数据

**ABS_MT_POSITION_Y **屏幕纵坐标,后面一列是坐标的十六进制数据

BTN_TOUCH 代表屏幕事件,后面如果是DOWN则代表按下,后面如果是UP代表抬起

我们可以根据ABS_MT_POSITION_X和ABS_MT_POSITION_Y信息和BTN_TOUCH为DOWN的事件计算响应按下事件的屏幕位置,然后通过BTN_TOUCH为UP的事件计算抬起的屏幕位置,然后用按下和抬起的坐标差来判断该时间是点击还是滑动,然后我们可以进行屏幕截图,甚至在截图上绘制事件的轨迹。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

http://www.yidumall.com/news/104390.html

相关文章:

  • 做网站需要服务器吗网站推广公司排名
  • 新泰网站制作邮件营销
  • 做彩票网站苏州网络推广服务
  • 做阿里巴巴网站图片尺寸免费b2b网站有哪些
  • 怎么在百度搜索到我的网站网站运营包括哪些内容
  • 哪里有做php网站免费教程网站建设培训机构
  • 爱做网站网址厦门seo大佬
  • 怎样创建网站发招聘信息搜索引擎排名优化是什么意思
  • 深圳做网站建设的哪家效果好又便宜我想做网络推广找谁
  • c2c商城网站建设公司百度关键词排名点击器
  • 网站建设测试事业运程百度seo查询系统
  • 网站建设工作人员有哪些职责微信seo什么意思
  • 高品质网站建设提高工作效率总结心得
  • 专业制作网站系统想做网络推广如何去做
  • 用asp做动态网站的步骤怎么查搜索关键词排名
  • dw 做的网站能用吗上海百度seo
  • 沧州做网站哪家公司好百度权重是什么
  • 程序源代码网站深圳网站推广
  • 协会网站建设免费python在线网站
  • 公司网络组建方案范文深圳优化网站方法
  • 专业室内设计 官网seo外链推广工具下载
  • 徐州建站模板推广app平台
  • 新闻网站传播力建设福州seo按天收费
  • wordpress禁止更新插件杭州专业seo公司
  • 网站开发和软件开发区别服务网站排名咨询
  • 辽宁网站优化百度seo关键词优化费用
  • 建筑知识网站semseo
  • 梅地卡伦手表网站神秘网站
  • 如何开网站做代销网站怎么才能被百度收录
  • 一流的网站建设哪家好新乡百度网站优化排名