2021-04-12 测试面试题

一:wep 和app 测试的相同点和区别

相同点

不管是传统行业的web测试,还是新兴的手机app测试,都离不开测试的基础知识,即是不管怎么变,测试的原理依然会融入在这两者当中。

1)设计测试用例时,依然都是依据边界值分析法、等价类划分等;

2)多数采用黑盒的测试方法,来验证业务功能是否得到正确的应用;

3)需要检查界面的布局、风格和按钮等是否简洁美观、是否统一等;

4)测试页面载入和翻页的速度、登录时长、内存是否溢出等;

5)测试应用系统的稳定性等。

区别:

系统架构方面:

web项目,一般都是b/s架构,基于浏览器的

app项目,则是c/s的,必须要有客户端,用户需要安装客户端。

web测试只要更新了服务器端,客户端就会同步会更新。App项目则需要客户端和服务器都更新。

性能方面:

web页面主要会关注响应时间

而app则还需要关心流量、电量、CPU、GPU、Memory这些。

它们服务端的性能没区别,都是一台服务器。

兼容方面:

web是基于浏览器的,所以更倾向于浏览器和电脑硬件,电脑系统的方向的兼容

app测试则要看分辨率,屏幕尺寸,还要看设备系统。

web测试是基于浏览器的所以不必考虑安装卸载。

而app是客户端的,则必须测试安装、更新、卸载。除了常规的安装、更新、卸载还要考虑到异常场景。包括安装时的中断、弱网、安装后删除安装文件 。

此外APP还有一些专项测试:如网络、适配性。

二:如何测试一个app的登录功能

具体要求:有一个账号,一个密码输入框,一个提交按钮,考察目的

1.了解需求

2.是否具有设计用例的能力

3.是否熟悉各种测试方法

4.是否有丰富的web测试经验

1.了解需求:

测试需求分析过程,可以从质量要求出发,来展开测试需求分析,从功能,性能,安全性,兼容性等各个质量要求出发,不断细化其内容,挖掘对应的测试需求,覆盖质量要求,也可从开发需求出发,把每一条开发需求分解为测试项,结合质量要求,这些测试项再分解成测试任务,则包括功能性测试任务和非功能性测试任务,在整理测试需求时,需要分类,细化,合并,并按照优先级进行排列,形成测试需求列表

1> 登录界面应该是弹出框,还是直接显示在网页里面

 2>账号和密码的长度(eg:长度,大小写敏感,特殊字符混搭) 

3>界面美观是否有特殊需求(UI测试)

2.用例设计:

功能测试:

1>输入正确的用户名密码,点击提交按钮,验证能否正确登录    

2> 输入错误的用户名或者密码,点击提交按钮,验证登录失败,提示相应的错误信息    

3 >登录成功后能否跳转到正确的页面   

 4>账号名或者密码长度过长或者过短,应该怎么处理(安全性,密码太短是否有提示)   

 5>账号和密码有特殊字符(空格),是否做了过滤    

6>密码是否加密显示    

7>输入密码 ,大写键盘开启的时候要有提示信息    

8>什么都不输入,直接点击提交(非空检查)    

9>登录失败后,不能记住密码的功能  

 10>登录页面中忘记密码等等链接跳转是否正确  

 11>牵扯到验证码,还要考虑文字是否扭曲过度导致辨认难度大

UI测试:

1>布局是否合理,两个textbox和一个按钮是否对齐    

2>textbox的长度和高度是否符合要求    

3>界面设计风格和UI设计风格是否一致    

4>界面中的文字简洁易懂,没有错别字

性能测试:

1>打开登录界面,需要几秒    

 2>输入正确的用户名和密码,登录成功跳转到新页面,需要几秒

安全性测试:

1>登录成功后的cookie是否有HttpOnly(降低脚本风险)      

2>账号和密码是否通过加密的方式,发送给web服务器      

3>账号和密码的验证,应该是用服务器验证,而不单单是在客户端用javaScript验证      

4>账号和密码的输入框,应该屏蔽SQL注入攻击      

5>账号和密码的输入框,应该禁止输入脚本(防止XSS攻击)      

6>错误登录的次数限制(防止暴力破解)      

7>是否支持多用户在同一台机器上登录      

8>一用户在多台机器上登录

可用性测试:

1>输入框是否可以用tab键切换      

2>输入账号,密码后按回车,是否可以登录      

3>是否可用全用键盘操作,是否有快捷键

兼容性测试:

1>主流的浏览器下能否显示正常已经功能正常      

 2>不同的平台是否能正常工作,eg:windows,mac      

 3>移动设备上是否正常工作,比如iphone,android      

 4>不同的分辨率

三:推送消息如何测试    

-消息推送对象

消息推送一般可以自定义推送对象,有全部推送,精确推送,及安卓和IOS渠道推送,注意推送对象是否正确,推送之前确认自己是否在测试环境操作,以免造成生产问题。

-消息简介

客户端收到消息推送有两种形式,客户端后台运行一般推送显示在通知栏,客户端前台运行一般弹出弹框,简介内容注意字数过多溢出情况。

-消息详情

注意详情所支持的内容,包括文字、图片、表情包、换行以及链接跳转。

-消息推送场景(支持定时推送)

(1)消息推送时间:

a)设置过去时间

b)未推送之前修改消息内容

c)删除消息,查看是否还会推送

(2)客户端运行状态

a)前台运行

b)后台运行

c)进程关闭状态

(3)特殊场景

a)多个提醒冲突

b)当天设置当天推送

c)当天设置隔几天起效

四:app闪退是有那些原因造成的

1.缓存垃圾过多

       由于安卓系统的特性,如果长时间不清理垃圾文件.会导致越来越卡.也会出现闪退情况.

  2. 运行的程序过多,导致内存不足

  3.应用版本兼容问题

         如果应用版本太低,会导致不兼容,造成闪退。此外,有些新版本在调试中,也会造成应用闪退。

 4.. 检查APP中访问网络的地方,组件中的ImageView是否可以正常的下载并显示到app 页面上。   

  5.检查APP的sdk和手机的系统是否兼容。

 6.在一些特定情况下的闪退,比如播放视频,在Android5.0 升级到Android6.0的时候,有些系统API老版本有,新版本没有,到时回去对象的时候失败,报空,系统就会出现闪退问题.


二.常见的解决方案

1.缓存垃圾过多

可通过“设置”中清除应用缓存的方式解决

2.内存不足

可尝试关闭其他暂时不用的软件

3.兼容性问题

3.1应用版本兼容性问题

如果是版本太低,可升级版本即可:如果是新版本闪退,可能还在调式,需卸载安装旧的版本使用

3.2APP中的SDK和手机的兼容性问题

需要原生端相关人员,设置SDK的最低兼容系统版本

五:测试过程中遇到app出现anr的时候你会怎么处理

可以先把日志过滤出来: adb logcat | findstr xxxxx(过滤日志信息) ,然后再搜索其中的关键字,比如:exception、crash,看看是那些方法或者异常导致了问题的发送,初步定位问题原因后,可以交给开发人员去具体查找深层原因并修复。

六:如何查看移动端的日志以及会出现哪些异常(点击题目跳转链接)

七:app测试哪些以及如何展开测试工作

一、APP要做哪些测试?

1、功能测试:对具体功能点一一测试,验证确认每个点都实现满足需求的相应功能。

2、APP兼容性测试:根据屏幕尺寸、系统进行适配测试;对市场上主流的设备安装应用执行测试(如果有特定针对群体,应该根据实际用户数据接入设备进行分析,对靠前的机型进行适配测试),确保都能正常运行。

3、压力测试:用户量大,交互性高的应用需对接口执行压力测试,确应用在海量的用户使用的情况下能正常运行。

4、UI/UE测试:主要是一些适配,用户体验方面,交互方面的测试。

5、用户行为统计测试:确保手头的行为统计分析定义文档为最新版本,且与开发人员手中的文档一致;确保产品经理在文档中所定义的页面在该产品中都是存在的;尽可能真实地模拟用户行为;核对统计日志,确保各项操作所对应的页面ID以及操作ID都是正确的。

6、安全测试 :软件权限、数据安全性、通讯安全性、人机接口安全性。

7、安装卸载测试:确保应用都能正确安装、卸载,且能正确运行(注意应用的升级测试:升级前后的状态)。

8、交叉测试:对于正在运行的应用,若进入短信、电话等其它软件响应的情况,不会影响被测试应用,且会保证应用能正确运行;杀掉进程时再重新打开APP;多个APP切换数据的保存等。

9、协议测试:模拟客户端直接发送协议包给服务器,看服务器是否有一定的校验,认不认客户端发过来的数据。协议测试主要是为了处理用户发送恶意协议到服务器,骗过服务器的校验。

10、异常测试:多次快速点击切换页面的响应情况?横屏竖屏的快速操作:切换菜单,播放,下载等;服务器宕机或出现404、502等情况下的测试。

11、弱网测试:APP在2G/3G/4G/wifi下的表现情况,网络环境变化时,APP的应对情况:是否有适当提示?从有网环境到无网环境时,APP的反馈如何?从无网络环境回到有网络环境时,是否能自动加载数据,且多久才能开始加载数据?

12、电量测试:设备在不同电量时(低于10%,50%,95%),APP的响应以及操作流畅度;设备在充电时,APP的响应以及操作流畅度;设备意外断电时,APP数据丢失情况等。

八:app的性能测试的关注点有哪些

app性能测试分类:

1、响应

2、内存

3、cpu

4、FPS (app使用的流畅度)

5、GPU过度渲染

6、耗电

7、耗流

(app除了这些性能测试,还有:手机版本号兼容性,屏幕分辨率兼容性,稳定性测试,安全测试等,后续会持续更新… 流量测试同这些一起更新,这里就不在说明了 )

App性能测试响应点:

主要测试点:

1、冷启动:首次启动app的时间间隔(只是启动时间,不包括页面加载)

2、热启动:非首次启动app的时间间隔(只是启动时间,不包括页面加载)

3、完全启动:从启动到首页完全加载出来的时间间隔

4、有网启动:从发起跳转,到页面完全加载出来的时间间隔

5、无网启动:从发起跳转,到页面完全加载出来的时间间隔

(在项目中,主要测试关注点是冷启动,热启动)

测试标准:冷启动时间不超过1.5s, 热启动不超过1s.

内存:

测试点:

1、空闲状态:切换至后台或者启动后不做任何操作,消耗内存最少。

2、中强度状态:时间偏长的操作应用。

3、高强度状态:高强度使用应用,可以跑monkey来测试(通常用来测试内存泄漏)。

** 内存泄漏:指应用里的内存一直没有释放,内存一直增加 ,系统内存一直减少 **

CPU:

CPU测试,主要关注的是cpu的占用率。很多时候,我们玩手机时,会出现发热发烫,那是因为CPU使用率过高,CPU过于繁忙,会使整个手机无法响应用户,整体性能降低,用户体验就会很差,也容易引起ANR(application not responding, 主线程(UI线程)如果在规定时内没有处理完相应工作,就会出现ANR)等等一系列问题。

测试点:

1).在空闲时间(切换至后台)的消耗,基本没大应用使用cpu

2).在运行一些应用的情况下,cpu已占50%的情况下,观察应用程序占用cpu的情况

3).在高负荷的情况下看CPU的表现(cpu占用应是在80%以上)

FPS (应用的使用流畅度)

FPS是图像领域中的定义,是指画面每秒传输帧数,通俗来讲就是指动画或视频的画面数。FPS是测量用于保存、显示动态视频的信息数量。每秒钟帧数愈多,所显示的动作就会愈流畅。

´一般来说,Android设备的屏幕刷新率为60帧/s,要保持画面流畅不卡顿,要求每一帧的时间不超过1000/60=16.6ms,这就是16ms的黄金准则,如果中间的某些帧的渲染时间超过16ms,就会导致这段时间的画面发生了跳帧,因此原本流畅的画面变发生了卡顿。

GPU渲染

GPU渲染是指在一个像素点上绘制多次(超过一次):显示一个什么都没有做的activity界面算作画了1层,给activity加一个背景是第2层,在上面放了一个Text View(有背景的Text View)是第3层,Text View显示文本就是第4层仅仅只是为了显示一个文本,却在同一个像素点绘制了四次,这是一定要优化的。过度绘制对动画性能的影响是极其严重的,如果你想要流畅的动画效果,那么一定不能忽视过度绘制。

耗电量

测试应用对电量的消耗前需要对手机本身的电量消耗有个大概了解,测试前先看规定时间内手机正常待机下(重启后待机)电量消耗为多少。然后再启动待测试APP看看消耗的电量增加了多少取差值。

测试点:

  测试手机安装目标APK前后待机功耗无明显差异;

  常见使用场景中能够正常进入待机,待机电流在正常范围内;

  长时间连续使用应用无异常耗电现象。

九:如何对app进行弱网测试(找的博客里面写的详细点,点击题目跳转)

                                                                                     弱网测试

十:常见的ADB命令(找的博客里面写的详细点,点击题目跳转)

查看当前连接设备:

adb devices

如果发现多个设备:

adb -s 设备号 其他指令

举例:

adb -s devicel install xxx.apk

查看顶部Activity:

windows环境下:

adb shell dumpsys activity | findstr "mFocusedActivity"

Linux、Mac环境下:

adb shell dumpsys activity | grep "mFocusedActivity"

查看日志:

adb logcat

安装apk文件:

adb install xxx.apk

此安装方式,如果已经存在,无法安装;

推荐使用覆盖安装:

adb install -r xxx.apk

比分直接RUN出来的包是test-onlu的无法安装,推荐使用**-t**

adb install -r -t xxx.apk

卸载App:

adb uninstall com.zhy.app

如果想要保留数据,则:

adb uninstall -k com.zhy.app

传递文件:

往手机SDCard传递文件:

adb push 文件名 手机端SDCard路径

例如:

adb push 帅照.jpg /sdcard/

从手机端下载文件:

adb pull /sdcard/xxx.txt

查看手机端安装的所有app包名:

adb shell pm list packages

启动Activity:

adb shell am start 包名/完整Activity路径

例如:

adb shell am start com.zhy.aaa/com.zhy.aaa.MainActivity

如果需要携带参数(携带一个Intent,Key 为name):

adb shell am start com.zhy.aaa/com.zhy.aaa.MainActivity -e name zhy

启动一个隐式的Intent:

adb shell am start -a "android.intent.action,VIEW" -d "https://www.google.com"

发送广播:

adb shell am broadcast -a "broadcastactionfilter"

-如果需要携带参数(携带一个Intent,key为name):

adb shell am broadcast -a "broadcastactionfilter" -e name zhy

启动服务:

adb shell am startservice "com.zhy.aaa/com.zhy.aaa.MyService"

屏幕截图:

可以使用screencap命令来进行手机屏幕截图,例如:

adb shell screencap /sdcard/screen.png

录制视频:

可以使用screenrecord[options] filename命令来录制屏幕视频,例如:

adb shell screenrecord /sdcard/demo.mp4

十一:常见的monkey 命令( 找的博客里面写的详细点,点击题目跳转 ) 

 Monkey 是什么?

 Monkey 就是SDK中附带的一个工具。 

 Monkey 测试的目的?

 :该工具用于进行压力测试。 然后开发人员结合monkey 打印的日志 和系统打印的日志,结局测试中出现的问题。 

 Monkey 测试的特点?

 Monkey 测试,所有的事件都是随机产生的,不带任何人的主观性。 

 Monkey 命令

标准的monkey 命令 

[adb shell] monkey [options]  

, 例如:adb shell monkey -v 500    --------产生500次随机事件,作用在系统中所有activity(其实也不是所有的activity,而是包含  Intent.CATEGORY_LAUNCHER 或Intent.CATEGORY_MONKEY 的activity)。

上面只是一个简单的例子,实际情况中通常会有很多的options 选项 

四大类—— 常用选项 、 事件选项 、 约束选项 、 调试选项 

一:常用选项

 --help:打印帮助信息 

-v:指定打印信息的详细级别,一个 -v增加一个级别 , 默认级别为 0 。

 二:事件选项

-s:指定产生随机事件种子值,相同的种子值产生相同的事件序列。如: -s 200

--throttle:每个事件结束后的间隔时间——降低系统的压力(如不指定,系统会尽快的发送事件序列)。如:--throttle 100

--pct-touch:指定触摸事件的百分比,如:--pct-touch 5% , 相关的还有以下option:

--pct-motion (滑动事件)、 --pct-trackball (轨迹球事件) 、 --pct-nav (导航事件 up/down/left/right)、 --pct-majornav (主要导航事件 back key 、 menu key)、 --pct-syskeys (系统按键事件 Home 、Back 、startCall 、 endCall 、 volumeControl)、 --pct-appswitch (activity之间的切换)、 --pct-anyevent (任意事件)

三:约束选项

-p:指定有效的package(如不指定,则对系统中所有package有效),一个-p 对应一个有效package, 如:-p com.ckt -p com.ckt.asura;

-c:activity必须至少包含一个指定的category,才能被启动,否则启动不了

四:调试选项

--dbg-no-events:初始化启动的activity,但是不产生任何事件。

--hprof:指定该项后在事件序列发送前后会立即生成分析报告  —— 一般建议指定该项。

--ignore-crashes:忽略崩溃

--ignore-timeouts:忽略超时

--ignore-security-exceptions:忽略安全异常

--kill-process-after-error:发生错误后直接杀掉进程

--monitor-native-crashes:跟踪本地方法的崩溃问题

--wait-dbg:知道连接了调试器才执行monkey测试。

一个简单的monkey命令:

adb shell monkey -p com.xy.android.junit -s 500 -v 10000

但是,工作中为了保证测试数量的完整进行,我们一般不会在发生错误时立刻退出压力测试。monkey 测试命令如下

adb shell monkey -p com.xy.android.junit -s 500 --ignore-crashes --ignore-timeouts --monitor-native-crashes -v -v 10000 > E:\monkey_log\java_monkey_log.txt

monkey作用的包:com.ckt.android.junit

产生时间序列的种子值:500

忽略程序崩溃 、 忽略超时 、 监视本地程序崩溃 、 详细信息级别为2 , 产生 10000个事件 。

十二:安卓的四大组件

Android四大基本组件:Activity、BroadcastReceiver广播接收器、ContentProvider内容提供者、Service服务。

你可能感兴趣的:(2021-04-12 测试面试题)