一、基础篇
1、请介绍一下,app测试流程?
2.制定测试方案,主要是测试任务、测试人员和测试时间的分配;文章源自玩技e族-https://www.playezu.com/27974.html
3.测试准备,包括搭建测试环境,准备测试数据,确定测试方法;文章源自玩技e族-https://www.playezu.com/27974.html
4.测试用例的设计与编写,进行用例评审及补充完善;文章源自玩技e族-https://www.playezu.com/27974.html
5.执行测试时首先进行冒烟测试,然后对主功能流程进行测试,包括客户端的单个功能模块,及功能业务逻辑功能交互,回归测试;文章源自玩技e族-https://www.playezu.com/27974.html
6.提交测试结果,包括测试用例,测试计划;文章源自玩技e族-https://www.playezu.com/27974.html
7.日常维护性测试;文章源自玩技e族-https://www.playezu.com/27974.html
文章源自玩技e族-https://www.playezu.com/27974.html
app测试周期可根据项目的开发周期来确定测试时间,一般测试时间为两三周,根据项目情况以及版本质量可适当缩短或延长测试时间。文章源自玩技e族-https://www.playezu.com/27974.html
2、app测试需要提前准备哪些测试资源?
具体要准备的测试资源,根据实际项目来,可以从以下几个方面出发:文章源自玩技e族-https://www.playezu.com/27974.html
1.ios设备、android设备(选取市面上主流手机产品);文章源自玩技e族-https://www.playezu.com/27974.html
2.支付宝/银联支付的项目,需要提前申请支付宝/银联账户等等;文章源自玩技e族-https://www.playezu.com/27974.html
3.有秒杀专题的题目,需要规划秒杀时间表;文章源自玩技e族-https://www.playezu.com/27974.html
4.有优惠券使用的项目,需要添加优惠券数据;文章源自玩技e族-https://www.playezu.com/27974.html
3、app测试和web测试的区别?
单纯从功能测试的层面上来讲的话,app 测试、web 测试在流程和功能测试上是没有区别的。文章源自玩技e族-https://www.playezu.com/27974.html
相同点:
1.同样的测试用例设计方法;文章源自玩技e族-https://www.playezu.com/27974.html
2.同样的测试方法:都会依据原型图或效果图检查ui;文章源自玩技e族-https://www.playezu.com/27974.html
3.测试页面载入和翻页的速度、登录时长、内存是否溢出等;文章源自玩技e族-https://www.playezu.com/27974.html
4.测试应用系统的稳定性;文章源自玩技e族-https://www.playezu.com/27974.html
不同点:
1.系统结构方面文章源自玩技e族-https://www.playezu.com/27974.html
- web项目,b/s架构,基于浏览器的;web测试只要更新了服务器端,客户端就会同步更新。
- app项目,c/s结构的,必须要有客户端;app 修改了服务端,则客户端用户所有核心版本都需要进行回归测试一遍。
2.性能方面文章源自玩技e族-https://www.playezu.com/27974.html
- web项目 需监测 响应时间、cpu、memory;
- app项目 除了监测 响应时间、cpu、memory外,还需监测 流量、电量等;
3.兼容性方面文章源自玩技e族-https://www.playezu.com/27974.html
- web项目:浏览器(火狐、谷歌、ie等);操作系统(windows7、windows10、linux等)。
- app项目:设备系统:ios(ipad、iphone)、android(三星、华为、联想等) 、windows(win7、win8)、osx(mac);手机设备可根据 手机型号、分辨率、屏幕尺寸不同。
4.相对于 wed 项目,app有专项测试
1)干扰测试:中断,来电,短信,关机,重启等。文章源自玩技e族-https://www.playezu.com/27974.html
2)弱网络测试(模拟2g、3g、4g、5g,wifi网络状态以及丢包情况);网络切换测试(网络断开后重连、3g切换到4g、5g/wifi 等)。文章源自玩技e族-https://www.playezu.com/27974.html
3)安装、更新、卸载,中断、前后台切换。文章源自玩技e族-https://www.playezu.com/27974.html
- 安装:需考虑安装时的中断、弱网、安装后删除安装文件,全新安装、升级安装、第三方工具安装等情况;
- 卸载:需考虑第三方工具卸载、直接卸载卸,载后是否删除app相关的文件;
- 更新:分强制更新、非强制更新、增量包更新、断点续传、弱网状态下更新;
- 中断:来电中断、短信中断、闹钟中断、手机锁定、手机断电、手机死机;
4)界面操作:关于手机端测试,需注意手势,横竖屏切换,多点触控,前后台切换。文章源自玩技e族-https://www.playezu.com/27974.html
5)安全测试:安装包是否可反编译代码、安装包是否签名、权限设置,例如访问通讯录等。文章源自玩技e族-https://www.playezu.com/27974.html
6)边界测试:可用存储空间少、没有sd卡/双sd卡、飞行模式、系统时间有误、第三方依赖(qq、微信登录)等。文章源自玩技e族-https://www.playezu.com/27974.html
7)权限测试:设置某个app是否可以获取该权限,例如是否可访问通讯录、相册、照相机等。文章源自玩技e族-https://www.playezu.com/27974.html
5.测试工具方面
- 自动化工具:app 一般使用 appium; web 一般使用 selenium;
- 性能测试工具:app 一般使用monkey、 jmeter; web 一般使用 lr、jmeter;
文章源自玩技e族-https://www.playezu.com/27974.html
4、android手机和ios手机,系统有什么区别?
1.两者运行机制不同:ios采用的是沙盒运行机制,安卓采用的是虚拟机运行机制。文章源自玩技e族-https://www.playezu.com/27974.html
ios 沙盒运行机制:文章源自玩技e族-https://www.playezu.com/27974.html
- 每个程序都有自己的虚拟地址空间。所以,程序之间不能进行访问。
- 默认只会将应用的最后运行数据,记录在ram里面。
android 虚拟机运行机制:文章源自玩技e族-https://www.playezu.com/27974.html
- 所有的应用程序都是运行在虚拟机中,用户界面其实是由虚拟机传递的,并且通过虚拟机,android的任何程序都就可以轻松访问其他程序文件。
- 所有的android的应用程序都是运行在ram里面的,所以会发现有时候android用着用着就开始有点卡顿。
2.两者后台制度不同:ios中任何第三方程序都不能在后台运行;安卓中任何程序都能在后台运行,直到没有内存才会关闭。文章源自玩技e族-https://www.playezu.com/27974.html
3.ios中用于ui指令权限最高,安卓中数据处理指令权限最高。文章源自玩技e族-https://www.playezu.com/27974.html
5、ios和android的app测试有什么区别?
1.物理按键:android长按home键呼出应用列表和切换应用,然后右滑则终止应用;ios所有的返回上一层,只能靠页面功能实现。文章源自玩技e族-https://www.playezu.com/27974.html
2.多分辨率测试:android端20多种;ios较少。文章源自玩技e族-https://www.playezu.com/27974.html
3.手机操作系统:android较多,ios较少且不能降级,只能单向升级;新的ios系统中的资源库不能完全兼容低版本中的ios系统中的应用,低版本ios系统中的应用调用了新的资源库,会直接导致闪退。文章源自玩技e族-https://www.playezu.com/27974.html
4.操作习惯:android,back键是否被重写,测试点击back键后的反馈是否正确;应用数据从内存移动到sd卡后能否正常运行等。文章源自玩技e族-https://www.playezu.com/27974.html
5.push测试:android点击home键,程序后台运行时,此时接收到push,点击后唤醒应用,此时是否可以正确跳转;ios点击home键关闭程序和屏幕锁屏的情况(红点的显示)。文章源自玩技e族-https://www.playezu.com/27974.html
6.安装卸载测试:android可以通过手机自带的应用市场或者是第三方的手机助手进行下载,下载和安装的平台和工具和渠道比较多;ios主要有app store,itunes和testflight下载。文章源自玩技e族-https://www.playezu.com/27974.html
7.升级测试:可以被升级的必要条件:新旧版本具有相同的签名;新旧版本具有相同的包名;有一个标示符区分新旧版本(如版本号)。文章源自玩技e族-https://www.playezu.com/27974.html
8.皇冠足球备用网址的支付方式:对于一些有内购功能的app,android直接调用第三方支付渠道完成支付;ios需要先在app store里绑定皇冠足球备用网址的支付方式,然后通过app store去完成支付操作。文章源自玩技e族-https://www.playezu.com/27974.html
9.消息推送机制:android使用第三方或者自建平台进行消息推送;ios的消息推送渠道由苹果官方提供。文章源自玩技e族-https://www.playezu.com/27974.html
6、介绍一个app抓包工具?
7、app日志如何抓取?
-
可以使用adb命令:adb logcat | find "com.sankuai.meituan" >d:test.txt - 也可以用ddms抓取,手机连上电脑,打开ddms工具;
-
或者在android studio开发工具中,打开ddms;
8、常用的adb命令有哪些?
1.查看帮助手册列出所有的选项说明及子命令:文章源自玩技e族-https://www.playezu.com/27974.html
adb help
2. 获取设备列表及设备状态:文章源自玩技e族-https://www.playezu.com/27974.html
adb devices
3.安装应用:adb install 路径xx.apk, 安装应用;adb install -r 重新安装。文章源自玩技e族-https://www.playezu.com/27974.html
adb install adb install -r
4. 获取设备的状态,设备的状态有 device , offline , unknown3种,其中device:设备正常连接,offline:连接出现异常,设备无响应,unknown:没有连接设备。文章源自玩技e族-https://www.playezu.com/27974.html
adb get-state
5.卸载应用:adb uninstall <包名>, 后面的参数是应用的包名,区别于 apk 文件名。文章源自玩技e族-https://www.playezu.com/27974.html
adb uninstall
6.将 android 设备上的文件或者文件夹复制到电脑本地:adb pull <远程路径> <本地路径>, 如复制 sdcard 下的 pull.txt 文件到 d 盘:adb pull sdcard/pull.txt d:,重命名:adb pull sdcard/pull.txt d:rename.txt。文章源自玩技e族-https://www.playezu.com/27974.html
adb pull
7.推送本地文件至 android 设备:adb push <本地路径> <远程路径>, 如推送 d 盘下的 itester.txt 至 sdcard:adb push d:itester.txt sdcard/ (注意sdcard 后面的斜杠不能少)。文章源自玩技e族-https://www.playezu.com/27974.html
adb push
8.结束和启动adb服务:adb kill-server /adb start-server , 结束 adb 服务/启动 adb 服务,通常两个命令一起用,设备状态异常时使用 kill-server,运行 start-server 进行重启服务。文章源自玩技e族-https://www.playezu.com/27974.html
adb kill-server adb start-server
9.打印及清除系统日志:adb logcat , 打印 android 的系统日志 ;adb logcat -c,清除日志。文章源自玩技e族-https://www.playezu.com/27974.html
adb logcat adb logcat -c
10.查找包名/活动名文章源自玩技e族-https://www.playezu.com/27974.html
adb logcat | findstr start
9、adb三个组件是指?
adb作为一个客户端/服务器架构的命令行工具,主要由3个部分组成。文章源自玩技e族-https://www.playezu.com/27974.html
- adb clent(客户端):可以通过它对android应用进行安装、卸载及调试。
- adb service(服务器):管理客户端到android设备上abd后台进程的连接,负责管理client和damon进行通信。
- adb daemon(守护进程):运行在android设备上的adb后台进程。
二、进阶篇
1、介绍一下android四大组件?
- activity:应用程序中,一个activity就相当于手机屏幕,它是一种可以包含用户界面的组件,主要用于和用户进行交互。一个应用程序可以包含许多活动,比如事件的点击,一般都会触发一个新的activity。
- broadcastreceiver广播接收器:应用可以使用它对外部事件进行过滤只对感兴趣的外部事件(如当电话呼入时,或者数据网络可用时)进行接收并做出响应。广播接收器没有用户界面。然而,它们可以启动一个activity或serice 来响应它们收到的信息,或者用notificationmanager来通知用户。通知可以用很多种方式来吸引用户的注意力──闪动背灯、震动、播放声音等。一般来说是在状态栏上放一个持久的图标,用户可以打开它并获取消息。
- contentprovider内容提供者:内容提供者主要用于在不同应用程序之间实现数据共享的功能,它提供了一套完整的机制,允许一个程序访问另一个程序中的数据,同时还能保证被访问数据的安全性。只有需要在多个应用程序间共享数据时才需要内容提供者。例如:通讯录数据被多个应用程序使用,且必须存储在一个内容提供者中。它的好处:统一数据访问方式。
-
service服务:是android中实现程序后台运行的皇冠盘网址的解决方案,它非常适合去执行那些不需要和用户交互而且还要长期运行的任务(一边打电话,后台挂着qq)。服务的运行不依赖于任何用户界面,即使程序被切换到后台,或者用户打开了另一个应用程序,服务仍然能够保持正常运行,不过服务并不是运行在一个独立的进程当中,而是依赖于创建服务时所在的应用程序进程。当某个应用程序进程被杀掉后,所有依赖于该进程的服务也会停止运行(正在听音乐,然后把音乐程序退出)。
2、activity生命周期?
生命周期即活动从开始到结束所经历的各种状态,从一个状态到另一个状态的转变,从无到有再到无,activity本质上有四种状态:文章源自玩技e族-https://www.playezu.com/27974.html
- 运行(active/running):activity处于活动状态,此时activity处于栈顶,是可见状态,可以与用户进行交互。
- 暂停(paused):当activity失去焦点时,或被一个新的非全面屏的activity,或被一个透明的activity放置在栈顶时,activity就转化为paused状态。此刻并不会被销毁,只是失去了与用户交互的能力,其所有的状态信息及其成员变量都还在,只有在系统内存紧张的情况下,才有可能被系统回收掉。
- 停止(stopped):当activity被系统完全覆盖时,被覆盖的activity就会进入stopped状态,此时已不在可见,但是资源还是没有被收回。
- 系统回收(killed):当activity被系统回收掉,activity就处于killed状态。
如果一个活动在处于停止或者暂停的状态下,系统内存缺乏时会将其结束(finish)或者杀死(kill)。这种非正常情况下,系统在杀死或者结束之前会调用onsaveinstance()方法来保存信息,同时,当activity被移动到前台时,重新启动该activity并调用onrestoreinstance()方法加载保留的信息,以保持原有的状态。文章源自玩技e族-https://www.playezu.com/27974.html
在上面的四中常有的状态之间,还有着其他的生命周期来作为不同状态之间的过渡,用于在不同的状态之间进行转换。文章源自玩技e族-https://www.playezu.com/27974.html
3、请介绍一下,android sdk中自带的几个工具?
有如下几个工具:文章源自玩技e族-https://www.playezu.com/27974.html
- ddms:dalvik debug monitor service,是 android 开发环境中的dalvik[虚拟机]调试监控服务。
- monkey:android中的一个命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。
- uiautomator:uiautomator是eclipse自带的用于ui自动化测试工具,可仿真app上的单击、滑动、输入文本等操作。
- monitor:同uiautomator
-
adb:adb的全称为android debug bridge,就是起到调试桥的作用。通过adb我们可以在eclipse中方面通过ddms来调试android程序,就是debug工具。
4、你所了解的app测试工具?
- appium
- airtest
- uiautomator2(python)
- monkey
- monkeyrunner
- maxim
- uicrawler
- gt
- perfdog
- solopi
- qnet
- fiddler
- charles
- testin
- 腾讯优测
- 百度mtc
- 阿里mqc
- owasp zap
- drozer
- mobsf
- qark
5、介绍一下冷启动、暖启动、热启动、首屏启动?
app启动会发生多个事件,测试人员需要知道整个环节是否出现问题,需要了解到具体是哪个环节存在问题:文章源自玩技e族-https://www.playezu.com/27974.html
- 冷启动:当进程不存在的时候,从进程创建开始到界面的展示的过程;
- 暖启动:有一部分资源已经存在,进程存在,相对于热启动要消耗更多资源。当用户退出应用程序时,进程还会存在,暖启动相较于冷启动只是少了进程的创建;
- 热启动:大部分资源都在,只是应用之间的切换;
- 首屏启动:第一屏加载完整;
标准:文章源自玩技e族-https://www.playezu.com/27974.html
- 冷启动:需要5秒甚至更长;
- 暖启动:需要2秒甚至更长;
- 热启动:需要1.5秒甚至更长;
整个启动过程可以用adb工具进行分析,利用adb logcat获取启动数据,或者录屏,使用ffmpeg拆帧分析。文章源自玩技e族-https://www.playezu.com/27974.html
-
adb logcat
首先定义一个变量,这个变量填写用到的包名。文章源自玩技e族-https://www.playezu.com/27974.html
-
package=com.xueqiu.android
清除缓存数据:文章源自玩技e族-https://www.playezu.com/27974.html
-
adb shell pm clear $package
停止进程:文章源自玩技e族-https://www.playezu.com/27974.html
-
adb shell am force-stop $package
通过以上命令就做好了冷启动的环境,下面启动app并获取数据。启动app文章源自玩技e族-https://www.playezu.com/27974.html
- adb shell am start -s -w $package/.view.welcomeactivityalias
- -s表示启动之前先停止应用进程
- -w是表示等待对应的activity启动完成
获取数据:文章源自玩技e族-https://www.playezu.com/27974.html
- bash adb logcat |grep -i displayed
获取的时间如下:文章源自玩技e族-https://www.playezu.com/27974.html
文章源自玩技e族-https://www.playezu.com/27974.html
6、谈谈对冷启动的理解?
应用的启动可以分为冷启动,热启动和温启动,而启动最慢、耗时最长的就是冷启动。文章源自玩技e族-https://www.playezu.com/27974.html
冷启动开始时,系统会依次执行三个任务去启动app:文章源自玩技e族-https://www.playezu.com/27974.html
- 加载和启动应用程序;
- app启动后,立即创建一个空白的启动window;
- 创建app的进程;
在这三个任务执行后,系统创建了应用进程,那么应用进程接下来会执行下一步:文章源自玩技e族-https://www.playezu.com/27974.html
- 创建app对象;
- 开启一个主线程;
- 创建启动页的activity;
- 加载view;
- 布局view到屏幕;
- 进行初始绘制显示视图;
当应用进程完成初始绘制之后,系统进程用启动页的activity来替换当前显示的空白window,这个时刻用户就可以使用app了。文章源自玩技e族-https://www.playezu.com/27974.html
免责声明:本文内容来自用户上传并发布或网络新闻客户端自媒体,玩技博客仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系删除。
评论