• 软件测试题总结(二)


    假设当你在移动App中,点击一个按钮,比方说,美团的登陆按钮,如果从移动App的界面看起来,任何事情都没有发生,你将如何分析定位问题大致发生在什么地方?

    界面未给出响应的原因:
    程序问题:
    1、按钮的监听事件未正确调用,或者干脆就没有添加监听
    2、监听确认被调用,但监听过程出现错误或异常,例如参数传输失败。
    3、前端调用接口错误,如后端出现运行时异常,没有给出相应的提示消息
    设备问题:
    1、网络延迟,响应没有及时出现,超时
    2、手机卡顿,出现死机现象
    3、响应被中断

    请你说一说web测试和app测试的不同点:

    系统架构方面:
        web项目,一般都是b/s架构,基于浏览器的

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

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

    性能方面:
        web页面主要会关注响应时间

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

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

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

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

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

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

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

    iOS应用和Android应用测试有什么侧重点?

    • android运行基于虚拟机,ios则是沙盒机制
    • android是真后台,ios是伪后台,所以安卓才会卡
    • 分辨率:iOS 覆盖的分辨率和系统是有限的。
    • 兼容性:Android 比较碎片化,覆盖的机型版本比iOS更多,android有各种定制rom,手机型号太多。
    • 权限:安卓还要特别考虑权限,6.0是分水岭
    • 应用安装渠道:安卓比较多

    移动端测试:

    Android手机和IOS手机,系统有什么区别?
    1、两者运行机制不同:IOS采用的是沙盒运行机制,安卓采用的是虚拟机运行机制。
    2、两者后台制度不同:IOS中任何第三方程序都不能在后台运行;安卓中任何程序都能在后台运行,直到没有内存才会关闭。
    3、IOS中用于UI指令权限最高,安卓中数据处理指令权限最高。
     

    Android:

    1:使用灰盒进行功能测试

    2:使用fiddler或者Charles进行抓包测试

    3:兼容性测试,Android 从4.0版本的手机测试到9.0版本手机

    4:各大品牌的手机都的进行测试,比如:小米小米9 小米8 小米7 小米6 note 红米系列 7红米5,华为: 华为mate20 华为mate10,华为荣耀: 荣耀10,9,8 ,vivo: x21,27,23,oppo: R7,R9,R11,三星手机: note9, 8,7 S9,8。

    5:稳定性测试: 使用monkey命令进行稳定性测试

    6:专项测试,使用腾讯专项测试工具进行,测试耗电量,流量,CPU占用率

    7:性能测试,对app的接口进行性能测试,使用工具jmeter或者loadrunner

    8:对app接口进行接口测试,使用postman或者Jmeter都行

    9:如果有时间写自动化脚本

    ios:

    1:使用灰盒进行功能测试

    2:使用fiddler或者Charles进行抓包测试

    3:兼容性测试:ios版本测试从9-12,手机型号从4S测试到xmax

    4:性能测试接口和安卓的是一样的所以只需要进行一次就可以了

    5:专项测试:使用腾讯专项测试工具进行,测试耗电量,流量,CPU占用率

    6:编写自动化脚本

    WEB端测试:

    前端 :

    1:web也使用灰&测试方法

    2:兼容性测试:IE浏览器7-12,火狐浏览器 35-最新的,谷歌浏览器,别的浏览器有时间就可以测试

    3:对web端页面进行性能测试,使用jmeter或者loadrunner

    后端

    1:测试http接口

    2:测试https接口

    3:测试tcp接口

    4:测试dubbo接口

    5:对后台代码进行代码审核,进行白盒测试

    请讲诉移动应用的灰度是怎么做的?  

    1.开黑白名单(白名单的人下载后可使用,黑名单的人及时可下载但也不可使用)

    2.开灰度环境(直接在后台控制,可有一级灰度发布、二级灰度发布、三级灰度发布、全量发布等,每个灰度针对不同的人群)

    3.iOS版本可以使用testflight灰度发布,让加入的人群提前体验

    4.Android可以使用第三方平台(如:蒲公英,可设置下载密码,提供给特定的人群体验)。或者生成下载连接发给对应的人

    .请简述移动应用在升级安装时候应该考虑的场景?

    • 当版本为非强制升级版时,用户可以取消更新,老版本能正常使用。用户在下次启动app时,仍能出现更新提示。
    • 当版本为强制升级版时,当给出强制更新后用户没有做更新时,退出APP。下次启动app时,仍出现强制升级提示。
    • 不删除APP直接更新,检查是否能正常更新,更新后能否正常工作。
    • 删除老的APP,重新下载APP,能不能正常工作。
    • 不删除APP直接更新,检查更新后的APP和新安装的APP提供的功能一样。
    • 检查在线跨版本升级能否成功,版本过老是否提示用户重装。
    • 更新成功后,用户数据有没有丢失,各个配置项是否还原。

    请描述下微信朋友圈发小视频的用例设计?

    • 功能:

    入口图标的标识度      进入和退出操作简易度      取景框大小    拍景和自拍切换   

    视频的像素限制      视频的时长限制     发送的进度提示

    • 性能:

     发送的时间    操作是否卡顿

    • 兼容:

     不同机型分辨率     不同系统版本  不同网络情况   不同流量情况

     

    如果让你来测试扫码支付,你会考虑哪些场景?

     

    • 卡的类型(一类户:借记卡、信用卡、各个开户行)
    • 二类户:虚拟账户如微信里的零钱账户、支付宝的余额宝、电子账户
    • 二维码的商户类型(微信、支付宝、汇宜、银联)
    • 支付限额(单笔限额、累计限额、日累计、月累计、支付笔数)
    • 退款(退款入口、退款进度、退款结果)
    • 对账:资金流动(我方扣款数额正确,对方收款数额正确)数额及时效
    • 支付结果展示、交易明细
    • 支付接口安全性、接口的性能
    • 异常情况(卡异常、余额不足)
    • 连续扫码支付,每天的扫码支付次数限制及数额限制
    • 二维码有效期
    • 有无相机权限
    • 前后置摄像头
    • 像素低端的手机能否扫码成功
    • 兼容性(不同手机厂商自带相机功能实现不一致)

    有一天早上打车高峰,滴滴服务端挂了大概30分钟,工程师抢修之后,马上上线,之后又挂了,请问有哪些原因会造成这个情况?

     

    • 还是考测试思维, 一定记得先确认需求,再定性,定量。 一般都要反问, 服务器是哪个服务器?后端应用服务器?数据服务器?缓存系统服务器?中间件服务器?文件系统服务器?
    • 不说就自己假定一个, 然后第一次挂第二次挂分开说,先问有没有错误码,日志有吗,有就看日志,没有就猜 是应用服务器挂了啊,是不是高峰期顶不住这么大并发访问啊?是数据库服务器啊,是不是频繁读写受不了啊,读写有分开吗?同步还是异步啊
    • 第二次挂,可能更多了,是不是代码弄错了,改坏了
    • 服务器内存不够
    • 服务器超出负载
    • 并发量太大
    • 遇到恶意攻击

    Android中造成APP闪退的原因总结

    1. 网络异常引起的

     2. APP中访问网络的地方,组件中的ImageView没有正常的下载并显示到app 页面上。

     3.APP的sdk和手机的系统不兼容。

     4.拍照/选择图片后闪退:①手机内存小②部分手机在使用相机拍照时候存在横竖屏切换,可能会导致我们应用重新调整生命周期.解决办法:在使用到拍照功能的Activity设置:android:configChanges="orientation|keyboardHidden|screenSize"

     5.还是版本问题:有些API在老版本中有,在新版本中没有,造成对象为空引起闪退

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

     7.权限问题,一般是AndroidManifest文件中忘记配置相关权限。

     8.在用AS开发Android程序时,涉及到Android真机版本,在生成APK文件时,如果没有把V1,V2全部勾选,可能会出现闪退。

     9.页面布局问题,用LinearLayout布局时忘记指定orientation,出现了闪退。

    Android如何查看闪退日志

    一、手机crash之后,如果弹出的“应用程序意外停止”的提示如果没有消失,则可使用以下方法获取crash日志
    1、直接连上eclipse中的ddms进行crashlog的获取。
    2、或者通过命令获取:adb logcat –v time >E:x.txt (-v time的意义是:打印出的log可以看到具体的时间)。
    二、手机crash之后,如果弹出的“应用程序意外停止”的提示如果消失,获取crash日志的方法
    1、adb bugreport >E:xx.txt
    2、日志会保存到相应的目录中,打开日志文件搜索关键字”fatal exception”或”crash”即可找到相应的crash日志。

    (2)adb工具抓取android手机闪退日志

    1.下载adb工具包

    2.注意事项

    请确保电脑上只连接了一台手机设备(最好只连接一条USB线),同时确保手机已开启USB调试模式(可通过手机助手查看连接状态)

    3.Adb工具包路径存放

    最好放在硬盘根目录下

    4.使用dos命令窗口

    可通过win+r弹出运行窗口,输入cmd;或者通过:开始->运行,输入cmd,然后回车打开dos命令窗口。

    dos窗口输入:cd D:Android(cd后面需空格,路径是你adb存在的路径),然后回车进入到工具包文件夹内

    在抓取log前,可输入命令:adb logcat -c然后回车清除旧日志信息。

    清除旧日志信息输入命令:,adb logcat -v time >.\logcat.log 开始抓取日志,同时在手机上操作闪退步骤。

    注意:adb logcat -v time:是开始抓取日志命令

    >:代表输出到

    .\logcat.log:代表当前路径下日志的名称

    5.结束抓取日志

    使用组合件:Ctrl+c可结束日志抓取。

    6.查看日志信息

    如果你是使用以上命令执行日志抓取,则只需在当前路径下查看logcat这个日志文件;如果你是指定到某个路径下,则到你指定的路径下查看logcat日志文件

     

    Ios  crash(崩溃)的原因与抓取 crash日志的方法

    rash的产生来源于两种问题:违反iOS策略被干掉,以及自身的代码bug

    1.IOS策略

    1.1低内存闪退

    前面提到大多数crash日志都包含着执行线程的栈调用信息,但是低内存闪退日志除外,这里就先看看低内存闪退日志是什么样的。

    我们使用Xcode 5iOS 7的设备模拟一次低内存闪退,然后通过Organizer查看产生的crash日志,可以发现ProcessType都为Unknown

     

    1.2 Watchdog超时

    AppleiOS Developer Library网站上,QA1693文档中描述了Watchdog机制,包括生效场景和表现。如果我们的应用程序对一些特定的UI事件(比如启动、挂起、恢复、结束)响应不及时,Watchdog会把我们的应用程序干掉,并生成一份响应的crash报告。

    1.3用户强制退出

    一看到用户强制退出,首先可能想到的双击Home键,然后关闭应用程序。不过这种场景是不会产生crash日志的,因为双击Home键后,所有的应用程序都处于后台状态,而iOS随时都有可能关闭后台进程,所以这种场景没有crash日志。

    另一种场景是用户同时按住电源键和Home键,让iPhone重启。这种场景会产生日志(仅验证过一次),但并不针对特定应用程序。

    这里指的用户强制退出场景,是稍微比较复杂点的操作:先按住电源键,直到出现滑动关机的界面时,再按住Home键,这时候当前应用程序会被终止掉,并且产生一份相应事件的crash日志。

    通常,用户应该是遇到应用程序卡死,并且影响到了iOS响应,才会进行这样的操作——不过感觉这操作好高级,所以这样的crash日志应该比较少见。

    2.代码bug

    此外,比较常见的崩溃基本都源于代码bug,比如数组越界、插空、空引用、引用未定义方法、多线程安全性、访问野指针、发送未实现的selector等。

    再来谈谈获取iOS设备上崩溃日志(Crash Log)的方法

    第一个方法:XCode  的菜单Window->Organizer    选择Devices  ->  选中的手机 -> 点击手机名称左边的箭头 会等到如下图

     

    在右边竖蓝色矩形框中 Type里面出现两种类型:UnknownCrash 这两种类型分别是 内存不够回收内存kill应用程序导致Crash和程序异常Crash的日志。

    第二种方法 打开手机 - > 设置 -> 通用 - > 关于本机 - > 诊断与用量 - > 诊断与用量数据  这里面就是所有应用的Crash日志。(本人没找到这个)

    第三种方法使用第三方软件:itools

    如果你平时不用iTunes,而是使用itools这类第三方的软件对iPhone设备进行管理,也是没问题的。

     

    打开itools,在你的设备下,找到高级功能,点击崩溃日志,然后将需要的日志导出到电脑里面就可以了!

    第四种方法 通过iTunesConnectManage Your Applications - View Details - Crash Reports)获取用户的crash日志

    大部分用户可能都会使用iTunes软件来管理iPhone或者iPad设备,这时候同步的Crash日志就会同步到电脑上,我们只需要在特定的路径里面寻找即可。

    Mac OS X~/Library/Logs/CrashReporter/MobileDevice

     

     

     

     

     

    处在这个俗世,也得让自己变得更好吧
  • 相关阅读:
    如何配置QuickFIX/N
    QuickFIX/N 动态存储配置信息
    Java深入
    【转】VS项目属性的一些配置项的总结
    vs2013中项目依赖项的作用
    Caffe初试(一)win7_64bit+VS2013+Opencv2.4.10+CUDA6.5配置Caffe环境
    【转】字符集和字符编码(Charset & Encoding)
    【转】编程思想之正则表达式
    【转】编程思想之异常处理
    【转】深入Windows内核——C++中的消息机制
  • 原文地址:https://www.cnblogs.com/butaileng7/p/13549717.html
Copyright © 2020-2023  润新知