• 常见面试题


    http://www.51testing.com/html/88/n-4461688.html

    https://www.cnblogs.com/yaoteng/p/10982357.html

    https://www.cnblogs.com/ldf223/category/1329896.html

    一、热身

          1、自我介绍

          2、介绍下你负责的公司项目

          3、你有什么优点和缺点?

        优点:       

          回答提示:沉着冷静、条理清楚、立场坚定、顽强向上。
          乐于助人和关心他人、适应能力和幽默感、乐观和友爱。我在经过一段时间的培训及项目实战,加上实习工作,使我适合这份工作。         我相信我能成功。

         缺点:
    回答提示:这个问题企业问的概率很大,通常不希望听到直接回答的缺点是什么等,如果求职者说自己小心眼、爱忌妒人、非常懒、脾气大、工作效率低,企业肯定不会录用你。绝对不要自作聪明地回答“我最大的缺点是过于追求完美”,有的人以为这样回答会显得自己比较出色,但事实上,他已经岌芨可危了。企业喜欢求职者从自己的优点说起,中间加一些小缺点,最后再把问题转回到优点上,突出优点的部分。企业喜欢聪明的求职者。

          4、在同一个项目组内,你认为你怎么做会比另外一名测试更加优秀?    

          5、你为什么离开上家公司?离职原因(这个会在最后问)   

          6、对于加班怎么看

           回答提示:实际上好多公司问这个问题,并不证明一定要加班。 只是想测试你是否愿意为公司奉献。
          回答样本:如果是工作需要我会义不容辞加班。我现在单身,没有任何家庭负担,可以全身心的投入工作。但同时,我也会提高工作效率,减少不必要的加班

          7、对薪资的要求

    回 答提示:如果你对薪酬的要求太低,那显然贬低自己的能力;如果你对薪酬的要求太高,那又会显得你分量过重,公司受用不起。一些雇主通常都事先对求聘的职位定下开支预算,因而他们第一次提出的价钱往往是他们所能给予的最高价钱。他们问你只不过想证实一下这笔钱是否足以引起你对该工作的兴趣。

    回答样本一:“我对工资没有硬性要求。我相信贵公司在处理我的问题上会友善合理。我注重的是找对工作机会,所以只要条件公平,我则不会计较太多
    回答样本二:我受过系统的软件编程的训练,不需要进行大量的培训。而且我本人也对编程特别感兴趣。因此,我希望公司能根据我的情况和市场标准的水平,给我合理的薪水。
    回答样本三:如果你必须自己说出具体数目,请不要说一个宽泛的范围,那样你将只能得到最低限度的数字。最好给出一个具体的数字,这样表明你已经对当今的人才市场作了调查,知道像自己这样学历的雇员有什么样的价值。

     8、说说你对行业、技术发展趋势的看法

    回答提示:企业对这个问题很感兴趣,只有有备而来的求职者能够过关。求职者可以直接在网上查找对你所申请的行业部门的信息,只有深入了解才能产生独特的见解。企业认为最聪明的求职者是对所面试的公司预先了解很多,包括公司各个部门,发展情况,在面试回答问题的时候可以提到所了解的情况,企业欢迎进入企业的人是“知己”,而不是“盲人”。

    9、对工作的期望与目前何在
    回答提示:这是面试者用来评断求职者是否对自己有一定程度的期望、对这份工作是否了解的问题。对于工作有确实学习目标的人通常学习较快,对于新工作自然较容易进入状况,这时建议你,最好针对工作的性质找出一个确实的答案,如业务员的工作可以这样回答:“我的目标是能成为一个超级业务员,将公司的产品广泛的推销出去,达到最好的业绩成效;为了达到这个目标,我一定会努力学习,而我相信以我认真负责的态度,一定可以达到这个目标。”其他类的工作也可以比照这个方式来回答,只要在目标方面稍微修改一下就可以了。

    10、就你申请的这个职位,你认为你还欠缺什么

    回答提示:企业喜欢问求职者弱点,但精明的求职者一般不直接回答。他们希望看到这样的求职者:继续重复自己的优势,然后说:“对于这个职位和我的能力来说,我相信自己是可以胜任的,只是缺乏经验,这个问题我想我可以进入公司以后以最短的时间来解决,我的学习能力很强,我相信可以很快融入公司的企业文化,进入工作状态。”企业喜欢能够巧妙地躲过难题的求职者。

    二、基础常识

    1、HTTP和HTTPS有什么区别?
    答:HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全。为了保证数据能加密传输,从而诞生了HTTPS。简单来说,HTTP协议是有SSL+HTTP协议构建的可进行加密传输,身份认证的网络协议,要比HTTP协议安全。

    2、TCP/IP四层协议

       应用层、传输层、网络层、数据链路层

    3、网络7层模型是那7层?列举一些具体的应用实例

    从下到上,物理层、数据链路层、网络层、传输层、会话层、表示层、应用层
    物理层:同轴电缆、接收器、发送器等
    数据链路层:网卡、交换机、网桥
    网络层:路由器、网关
    传输层:TCP协议、UDP协议
    会话层:SQL、ASP、 PHP等
    表示层:ASCII、JPEG、PNG、MP3等
    应用层:telnet、ssh、http、smtp等
    4、TCP/IP作用是什么?

    TCP/IP协议是一套网络通信标准,让全世界的各种不同的设备之间可以进行通信

    5、TCP与UDP的区别?

    TCP传输控制协议 。UDP用户数据报协议
    TCP对资源要求比较多,UDP对资源要求比较少
    TCP可以保证数据的正确性,UDP有可能会丢包
    TCP可以保证数据的顺序,UDP不会保证
    6、TCP三次握手?

    第一次握手
    客户主动(active open)去connect服务器,并且发送SYN 假设序列号为J,
    服务器是被动打开(passive open)

    第二次握手
    服务器在收到SYN后,它会发送一个SYN以及一个ACK(应答)给客户,
    ACK的序列号是 J+1表示是给SYN J的应答,新发送的SYN K 序列号是K

    第三次握手
    客户在收到新SYN K, ACK J+1 后,也回应ACK K+1 以表示收到了,
    然后两边就可以开始数据发送数据了

    三、测试理论基础题

    1、你认为测试人员需要具备哪些素质

      做测试应该要有一定的协调能力,因为测试人员经常要与开发接触处理一些问题,如果处理不好的话会引起一些冲突,这样的话工作上就会不好做。还有测试人员要有一定的耐心,有的时候做测试很枯燥乏味。除了耐心,测试人员不能放过每一个可能的错误

    2、你们公司的测试流程是什么?
    建议结合正统流程和前公司的相关情况,将某一项目的测试流程表述的更丰满。

    需求分析讨论-确定测试策略-设计测试用例-测试用例评审-beta测试-uat测试-测试报告

    3、你曾经解决过最难搞定的bug是什么?
    在回答时,既要将bug是什么描述出来,难度描述出来,还要把解决建议描述出来,最好能说一些代码层面的内容(这会为自己加分)。

    4、 白盒和黑盒测试的方法有哪些? 
    黑盒测试的测试方法有:等价类划分、边界值分析法、猜错法、随机数法、因果图。 
    白盒测试的测试方法有:代码检查法、程序变异、静态结构分析法、静态质量度量法、符号测试法、逻辑覆盖法、域测试、Z路径覆盖和基本路径测试法。 

    5、请描述下bug的几个要素?

    1.没有实现需求说明书列出的功能
    2.出现了需要说明书提到不应出现的事情
    3.实现了需求说明书未提到的功能
    4.没有实现说明书中没有提到但应该实现的功能
    5.难于使用,运转速度很慢,用户认为没有达到预期

    6、你是如何做测试分析?
    掌握边界值分析、等价类划分、错误推测等方法来设计测试用例
    是一个完备的集合,它能够覆盖所有等价类以及各种边界值;需要从软件功能需求出发,全面地,无遗漏地识别出测试需求;最好是代码覆盖测试也全面的测试 

    答案二:

    测试分析是非常见功力的事情,好的测分可以让需求更明确,让研发更加周全。

    1. 明确需求和需求有可能造成的影响

    2. 读懂系分,这个很关键,一定要看懂,遇到问题要找开发反复推敲,直到疑惑都解决。

    3. 明确开发联调提测时间和每个需求的开发边界和测试边界

    4. 探讨系统实现是否有风险,如果有风险有没有监控灰度回滚的策略。

    5. 制定测试策略,是否需要兼容性测试,性能测试,专项测试

    6. 将需求整理成测试用例


    7、如何设计测试用例?什么样子的测试用例是好用例?
    掌握边界值分析、等价类划分、错误推测等方法来设计测试用例
    是一个完备的集合,它能够覆盖所有等价类以及各种边界值;需要从软件功能需求出发,全面地,无遗漏地识别出测试需求;最好是代码覆盖测试也全面的测试

    答案二:

    1. 如果迭代较快,时间比较紧张,可以使用xmind将每个分支列出来,到了具体执行的时候再去看结果,这个时候要追求测试用例需求覆盖率。

    2. 如果时间充裕那么准备好,

    a. 测试数据

    b. 测试步骤

    c. 测试结果

    另外为了方便执行统计,每个测试用例的验证点最好不要过多


    8、功能测试在 beta 版本对外的上线标准是什么?
    测试用例全部跑完并且bug都已经关闭,然后业务验收后可以上线

    9、如何做测试需求分析和业务流程分析

    测试需求分析:
    从软件需求文档中,找出待测试软件/模块的需求,通过自己的分析、理解,整理成为测试需求,清楚被测试对象具有哪些功能。测试需求的特点是:包含软件需求,是否具有可测试性。
    测试需求应该在软件需求基础上进行归纳、分类或细分,方便测试用例设计。测试用例中的测试集与测试需求的关系是多对一的关系,即一个或多个测试用例集或测试用例套件对应一个测试需求。

    业务流程分析:
    软件测试,不单纯是或不能是只基于功能的黑盒测试,还需要对软件的内部处理逻辑进行测试。为了不遗漏测试点,需要清楚的了解软件产品的业务流程。建议在做复杂的测试用例设计前,先画出软件的业务流程。如果设计文档中已经有业务流程设计,可以从测试角度对现有流程进行补充。如果无法从设计中得到业务流程,测试工程师应通过阅读设计文档,与开发人员交流,最终画出业务流程图。业务流程图可以帮助理解软件的业务和数据处理逻辑和数据流向,从而指导测试用例的设计。
    从业务流程上,应得到以下信息:
    A、 主流程是什么
    B、 条件备选流程是什么
    C、 数据流向是什么
    D、 关键的判断条件是什么

    10、web应用兼容性测试的?

    (1)在公司内部操作系统中安装国内外主流的浏览器,分别测试;

    (2)利用网上云端服务器提供的在线浏览器兼容性测试环境,直接提交URL地址进行分析获取测试报告,有的需要付费才能享有操作远程环境的权限;

    (3)外包给专业的团队进行测试;

    (4)利用众测平台的兼职人员有偿测试。

     (5)IE浏览器:仿真功能模拟IE6/7/8/9/10/11,对实际版本相差很大,VirtualBox提供不同操作系统和ie版本的虚拟文件

    11、你觉得bug需要修改,很紧急,但是开发没时间,怎么办

    这个你需要先把这个问题说清楚,问题影响范围有多大,然后给PM或者项目经理还有拉上开发一起评审,说明这个问题遗留的风险,如果PM和项目经理接受这个风险,那就可以发布,否则必须修改了才能发布

    即使他们接受了,发布之后,也要注意线上的表现,并知会出来

    如果线上这个问题表现超过预期,那么就要要求发布hotfix

    12、

    给你一个全新的软件,你就是负责人,你怎么去开展测试工作

    解题分析:这道题其实就是考察面试者对项目测试流程的掌握情况,可以从测试流程详细说明,各个阶段的注意要点,输出,准入准出标准,方面进行说明

    参考回答:

    第一步:需求分析:我会对这个全新的软件需求进行全面分析,主要分析的点有:1,软件的版本需求合理性,是否可测试;2,项目人员配置(遇到什么问题找谁,有多少人投入测试,测试环境,测试资源,硬件,软件);3,要测试的软件的主流程,异常流程,测试重点;4,项目整体计划(发布时间)

    第二步:制定测试策略、测试计划和bug定义标准,,这一步主要是针对需求,在已有和可以协调到的资源上做出具体的,可执行的计划,这个阶段的输出是测试计划。测试计划中明确包含测试范围,测试策略,比如功能测试,性能测试,自动化测试,可用性测试,云测,monkey等

    第三步:按计划执行,编写测试用例,(编写测试用例的方法:等价类,边界值,错误猜测法,因果图,正交分解法等等)(编写测试用例需要注意的点,用例区分等级,特殊场景考虑:为空(接口空、数据空)、加载超时、网络异常、重复提交、异常中断、缓存冲突、系统兼容、流程迂回、流程中断;如果是PC,要注意浏览器(IE,chrome,火狐,苹果的),操作系统(xp,win7,win8,win10,linux,mac)的兼容,如果是手机,注意手机的品牌,操作系统,android版本,手机屏幕尺寸,手机网络等等场景),写完用例,如果有条件,就要评审测试用例

    第四步:执行用例,补充场景,记录bug,回归bug(注意开发提测的需求需要冒烟测试通过)

    第五步:功能合入,回归测试(各个功能点测试通过之后,再合入)

    第六步:提交验收(回归测试通过之后,提交给验收人员进行验收)

    第七步:发布上线(全新的软件,先是小范围内测,观察线上数据(如:crash,用户反馈,运营数据等)如果有产品认为严重的问题,则需要修复后重发,符合预期才能扩大发布)

     四、接口测试

    1、接口测试和UI测试在测试活动中是如何协同测试的

         答: UI与接口测试的协同可以从下面的方向考虑

           (1) UI的操作实际上就是用另一种方式调用接口,那么接口有多少种参数组合就要求UI用例要构造多少种操作进行调用

           (2)UI操作所需要的数据可以用接口来生成

           (3)接口测试可以保证数据和逻辑的准确性,UI测试需要考虑交互和界面展示的逻辑正确性

           (4)UI测试需要重视接口调用不成功或者接口异常情况下UI的呈现方式和用户体验

           (5)UI中可能会有一些状态的缓存信息(这样就不需要每次频繁调用接口去获取了),比如鉴权信息等,需要重点关注这些缓存的更新策略

    2、手工活自动化接口测试的过程中,上下游接口有数据依赖如何处理

         答:上下游接口的数据依赖无非就是准备测试数据。

             假如一个事务需要顺序调用3个接口,A B C, C依赖于AB, 而AB有数据依赖,这时候就需要准备好A和B的数据。

             数据一般有两种方式生成

          (1)动态方式:假如B依赖A创造的数据,那么每次执行B之前必须执行A去做数据创建

          (2)静态方式:独立统一的测试数据库, ABC需要的数据都可以从库里拿到

    3、依赖于第三方数据的接口测试如何进行测试

         答:依赖第三方就mock掉,可以自己写mock server

    4、接口测试中依赖登录状态的接口如何测试

          答:依赖登录态,那么每次测试该接口之前都需要调用登录的接口

                如果是jwt之类的token based auth的话,每次在调用接口时提供token就可以了

    5、如何进行接口测试?要用到什么工具?

         答:接口测试一般分为3个接口,但是我们最常用的是走http协议的api接口:,通过路径来区分调用的方法,请求报文都是key-value形式的,返回报文一般都是json串,有get和post等方法。可以使用的工具有postman、jmeter工具来做,但是postman和jmeter是不一样的,一般常规的接口测试都是用postman,jmeter也可以做接口测试,但是更多的是用来做压力测试和并发测试

    6、接口测试质量评估标准是什么

    (1)接口表现与接口文档的一致性
    (2)请求参数:必选和非必选、长度、字符类型、为空、缺失、组合、重复
    (3)返回数据:正常和异常
    

    五、数据库基础

    1、说下左连接和右连接。

    2、介绍下什么是索引。

    3、使用sql生产10万条数据。

    4、给你一张表,根据要求写sql,这个题目比较多,自己百度吧。

    六、Linux基础

    1、你常用的命令是什么?

    2、用什么查看log?

         tail -f log_file

    4、如何查找一个大于5M小于10M的文件

        find / -size +5M  -size -10M

    5、如何查看进程?

       ps -ef | grep ps_name ps -ef | grep ps_number

    6、如何查看 CPU 信息?

        答:/proc/meminfo

    7、查看占用 CPU 使用率最高的进程

        ps -aux | sort -k3nr | head -K

    8、.如何查看一个文件的末尾 50 行?

       (1)查看/etc/profile 的前 10 行内容,应该是:# head -n 10 /etc/profile

       (2)查看/etc/profile 的最后 50 行内容,应该是:# tail -n 50 /etc/profile

    9、如何过滤文件内容中包含”ERROR“的行?

       (1)grep "ERROR" file_name

        (2)cat file_name | grep "ERROR"

    10、查看某端口号?

          netstat -anp | grep port_number

    11、查看 IP 地址?

          ifconfig

    12、创建和删除一个多级目录?

         mkdir -p ./a/b

         rm -rf ./a

    13、在当前用户家目录中查找 haha.txt 文件?

         find ~/ -name haha.txt

    14、如何查询出 tomcat 的进程并杀掉这个进程,写出linux 命令?

          ps -ef | grep tomcat kill -9 tomcat_port

    15、.查看系统硬盘空间的命令?

          df -aTh

    16、查看当前机器 listen 的所有端口?

          netstat -tlnp

    17、把一个文件夹打包压缩成.tar.gz 的命令,以及解压拆包.tar.gz 的命令?

           tar zcvf xxx.tar.gz file tar       zxvf xxx.tar.gz

    18、以/etc/passwd的前五行内容为例,提取用户名?

          cat /etc/passwd | head -n 5 | cut -d : -f 1

    19、在 linux 中 find 和 grep 的区别?

         (1)Linux 系统中 grep 命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。 grep 全称是 Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。

         (2)linux 下的 find: 功能:在目录结构中搜索文件,并执行指定的操作。此命令提供了相当多的查找条件,功能很强大。 语法:find 起始目录寻找条件操作说明:find 命令从指定的起始目录开始,递归地搜索其各个子目录,查找满足寻找条件的文件并对之采取相关的操作。简单点说说,grep 是查找匹配条件的行,find 是搜索匹配条件的文件。

    七、移动app测试

    1、描述下web测试和移动应用测试的相同点和区别?

    答案一:
    Web 测试和移动应用测试的共同点在于:都要覆盖接口、功能、兼容、性能、稳定和安全的测试。

    差异点在于:兼容考虑的范围不一样,web重在PC系统和浏览器。
    移动重在机型分辨率和系统版本。 另外移动用户要考虑手机特性相关的影响,网络、冲突、耗电和流量。

    答案二:

    WEB测试和App测试从流程上来说,没有区别。
    都需要经历测试计划方案,用例设计,测试执行,缺陷管理,测试报告等相关活动。
    从技术上来说,WEB测试和APP测试其测试类型也基本相似,都需要进行功能测试、性能测试、安全性测试、GUI测试等测试类型。

    他们的主要区别在于具体测试的细节和方法有区别,比如:性能测试,在WEB测试只需要测试响应时间这个要素,在App测试中还需要考虑流量测试和耗电量测试。

    兼容性测试:在WEB端是兼容浏览器,在App端兼容的是手机设备。而且相对应的兼容性测试工具也不相同,WEB因为是测试兼容浏览器,所以需要使用不同的浏览器进行兼容性测试(常见的是兼容IE6,IE8,chrome,firefox)如果是手机端,那么就需要兼容不同品牌,不同分辨率,不同android版本甚至不同操作系统的兼容。(常见的兼容方式是兼容市场占用率前N位的手机即可),有时候也可以使用到兼容性测试工具,但WEB兼容性工具多用IETester等工具,而App兼容性测试会使用Testin这样的商业工具也可以做测试。

    安装测试:WEB测试基本上没有客户端层面的安装测试,但是App测试是存在客户端层面的安装测试,那么就具备相关的测试点。

    还有,App测试基于手机设备,还有一些手机设备的专项测试。如交叉事件测试,操作类型测试,网络测试(弱网测试,网络切换)

    交叉事件测试:就是在操作某个软件的时候,来电话、来短信,电量不足提示等外部事件。

    操作类型测试:如横屏测试,手势测试

    网络测试:包含弱网和网络切换测试。需要测试弱网所造成的用户体验,重点要考虑回退和刷新是否会造成二次提交。弱网络的模拟,据说可以用360wifi实现设置。

    从系统架构的层面,WEB测试只要更新了服务器端,客户端就会同步会更新。而且客户端是可以保证每一个用户的客户端完全一致的。但是APP端是不能够保证完全一致的,除非用户更新客户端。如果是APP下修改了服务器端,意味着客户端用户所使用的核心版本都需要进行回归测试一遍。

    还有升级测试:升级测试的提醒机制,升级取消是否会影响原有功能的使用,升级后用户数据是否被清除了

    2、你是如何做app应用的兼容性测试的?

    硬件兼容:机型、分辨率、系统、版本、网络

    软件兼容:输入法键盘、相机、安全清理工具类

    数据兼容:低升高、高降低的用户信息和数据的兼容,还有跨平台的数据兼容

    3、Charles的工作原理是什么?如何抓Https网页,IOS需要特殊注意些什么?

    4、应用的闪退通常是什么原因造成的?如果应用闪退,Android 和 iOS 上是分别怎么抓取日志的?

       adb logcat      Charles(ios抓日志)

    5、请讲出客户端下 3 个常用的性能指标的名称与具体含义?

    6、App测试中ios和Android有哪些区别、侧重点
    (1)Android长按home键呼出应用列表和切换应用,然后右滑则终止应用;
    (2)多分辨率测试,Android端20多种,ios较少;
    (3)手机操作系统,Android较多,ios较少且不能降级,只能单向升级;新的ios系统中的资源库不能完全兼容低版本中的ios系统中的应用,低版本ios系统中的应用调用了新的资源库,会直接导致闪退(Crash);
    (4)操作习惯:Android,Back键是否被重写,测试点击Back键后的反馈是否正确;应用数据从内存移动到SD卡后能否正常运行等;
    (5)push测试:Android:点击home键,程序后台运行时,此时接收到push,点击后唤醒应用,此时是否可以正确跳转;ios,点击home键关闭程序和屏幕锁屏的情况(红点的显示);
    (6)安装卸载测试:Android的下载和安装的平台和工具和渠道比较多,ios主要有app store,iTunes和testflight下载;
    (7)升级测试:可以被升级的必要条件:新旧版本具有相同的签名;新旧版本具有相同的包名;有一个标示符区分新旧版本(如版本号),
    对于Android若有内置的应用需检查升级之后内置文件是否匹配(如内置的输入法)

    另外:对于测试还需要注意一下几点:
    (1)并发(中断)测试:闹铃弹出框提示,另一个应用的启动、视频音频的播放,来电、用户正在输入等,语音、录音等的播放时强制其他正在播放的要暂停;
    (2)数据来源的测试:输入,选择、复制、语音输入,安装不同输入法输入等;
    (3)push(推送)测试:在开关机、待机状态下执行推送,消息先死及其推送跳转的正确性;
    应用在开发、未打开状态、应用启动且在后台运行的情况下是push显示和跳转否正确;
    推送消息阅读前后数字的变化是否正确;
    多条推送的合集的显示和跳转是否正确;

    (4)分享跳转:分享后的文案是否正确;分享后跳转是否正确,显示的消息来源是否正确;

    (5)触屏测试:同时触摸不同的位置或者同时进行不同操作,查看客户端的处理情况,是否会crash等

    7、app出现ANR(无响应),是什么原因导致的?

    那么导致ANR的根本原因是什么呢?简单的总结有以下两点:

    (1)主线程执行了耗时操作,比如数据库操作或网络编程
    (2)其他进程(就是其他程序)占用CPU导致本进程得不到CPU时间片,比如其他进程的频繁读写操作可能会导致这个问题。

    细分的话,导致ANR的原因有如下几点:
    1.耗时的网络访问
    2.大量的数据读写
    3.数据库操作
    4.硬件操作(比如camera)
    5.调用thread的join()方法、sleep()方法、wait()方法或者等待线程锁的时候
    6.service binder的数量达到上限
    7.system server中发生WatchDog ANR
    8.service忙导致超时无响应
    9.其他线程持有锁,导致主线程等待超时
    10.其它线程终止或崩溃导致主线程一直等待。

    8、App出现crash(崩溃)原因有哪些?

    为什么App会出现崩溃呢?百度了一下,查到和App崩溃相关的几个因素:内存管理错误,程序逻辑错误,设备兼容,网络因素等,如下:
    1.内存管理错误​:可能是可用内存过低,app所需的内存超过设备的限制,app跑不起来导致App crash。
    或是内存泄露,程序运行的时间越长,所占用的内存越大,最终用尽全部内存,导致整个系统崩溃。
    亦或非授权的内存位置的使用也可能会导致App crash。
    2.程序逻辑错误:​数组越界、堆栈溢出、并发操作、逻辑错误。
    e.g. app新添加一个未经测试的新功能,调用了一个已释放的指针,运行的时候就会crash。
    3.​设备兼容:由于设备多样性,app在不同的设备上可能会有不同的表现。
    ​4.网络因素:可能是网速欠佳,无法达到app所需的快速响应时间,导致app crash。或者是不同网络的切换也可能会影响app的稳定性。

    9、app对于不稳定偶然出现anr和crash时候你是怎么处理的?

    app偶然出现anr和crash是比较头疼的问题,由于偶然出现无法复现步骤,这也是一个测试人员必备的技能,需要抓日志。查看日志主要有3个方法:

    方法一:app开发保存错误日志到本地
    一般app开发在debug版本,出现anr和crash的时候会自动把日志保存到本地实际的sd卡上,去对应的app目录取出来就可以了

    方法二:实时抓取
    当出现偶然的crash时候,这时候可以把手机拉到你们app开发那,手机连上他的开发代码的环境,有ddms会抓日志,这时候出现crash就会记录下来日志。
    尽量重复操作让bug复现就可以了

    也可以自己开着logcat,保存日志到电脑本地

    adb logcat | find "com.sankuai.meituan" >d:hello.txt

    方法三:第三方sdk统计工具

    一般接入了第三方统计sdk,比如友盟统计,在友盟的后台会抓到报错的日志

    10、你平常会看日志吗, 一般会出现哪些异常(Exception)?

    这个主要是面试官考察你会不会看日志,是不是看得懂java里面抛出的异常,Exception

    一般面试中java Exception(runtimeException )是必会被问到的问题
    app崩溃的常见原因应该也是这些了。常见的异常列出四五种,是基本要求。

    常见的几种如下:

    NullPointerException - 空指针引用异常
    ClassCastException - 类型强制转换异常。
    IllegalArgumentException - 传递非法参数异常。
    ArithmeticException - 算术运算异常
    ArrayStoreException - 向数组中存放与声明类型不兼容对象异常
    IndexOutOfBoundsException - 下标越界异常
    NegativeArraySizeException - 创建一个大小为负数的数组错误异常
    NumberFormatException - 数字格式异常
    SecurityException - 安全异常
    UnsupportedOperationException - 不支持的操作异常

    11、简述移动应用在升级安装时候应该考虑的场景?
    安装的途径:
    通过手机助手安装
    通过adb命令安装
    通过应用市场安装
    安装:
    卸载安装
    升级安装
    升级后数据的一致性。如旧版本的账号密码仍能登录到新版本,保存在本地的信息能同步到新版本。如手势密码。
    12、给你一个应用,请简述你会从哪些方面去测试?

    一、安装和卸载
    1、用户能否自己选择安装路径,在不同的操作系统(android、ios)下安装是否正常、能否正常的运行。
    2、安装的文件和文件夹是否写入了制定的目录里面。
    3、考虑该款软件最高支持的系统版本、和最低支持的系统版本。
    4、是否支持后台安装。
    5、在不同的来源下是否能正常安装。
    6、安装成功后是否会有提醒提醒用户app需要开启的权限。
    7、是否能根据手机屏幕分辩率正常的全屏显示8、软件安装成功后是否会出现花屏、闪退等异常情况。
    二、UI测试
    1、在不同的手机分辨率的情况下,页面布局能否正常显示主要查看是否会出现图片变形、文字显示不清楚等情况。
    2、页面是否美观、是否会出现格局不符合大众化、提示不符合大众化等情况
    3、操作是否具有友好性,操作是否过于繁琐、复杂。
    4、是否符合行业标准。
    三、功能测试
    1、APP的正常打开与关闭。
    2、是否支持用户的后台切换。
    3、是否支持首次登陆后,下次免登录功能。
    4、展示首页后是否支持数据自动更新功能。
    5、是否支持离线浏览功能。
    6、开启相关权限后是否能正常调用手机系统软件功能。
    7、是否支持在线升级、更新功能。
    8、是否支持数据同步功能 。
    四、兼容性操作
    1、在不同的手机品牌、不同的操作系统下使用是否能正常运行、安装和卸载、是否会出现程序崩溃、闪退、花屏、卡死等严重情况。
    2、是否与其他手机本地app或者是文件发生冲突导致程序无法运行 。
    五、安全性测试
    1、程序是否容易被外人破解,导致用户重要资料丢失。
    2、登录时时密码是否已暗文的方式进行展示。
    3、密码或其他重要信息是否支持复制粘贴。
    4、登录验证时是否会有验证码。
    5、密码是否能设置纯数字密码,是否强制要求用户设置英文与数字结合的方式
    六、App性能测试
    1、APP在运行时是否会出现cpu占用率高、内存占用率高、手机耗电量高、数据流量消耗率大等问题。
    2、在打开页面消耗时长、启动程序消耗时长、退出程序消耗时长等问题。
    3、页面切换是否快速、流畅,是否会出现卡顿情况。
    4、在弱网情况下app的运行情况。
    5、在2g、3g、4g以及wifi不同网络情况下app的运行情况。
    6、在离线情况下app的运行情况。
    七、服务器性能测试
    1、最大支持的用户并发数。
    2、是否满足多用户的疲劳测试

    13、如何测试一个应用的登录场景?
    (1)常规登录账户密码的字符类型校验、长度校验、匹配性校验
    (2)性能:响应时间、并发量
    (3)安全性:加密传输
    (4)各种登录方式优先级
    (5)不同设备之间切换登录方式
    (6)登录的有效时长
    14、请描述下微信朋友圈发小视频的用例设计? ?
    (1)功能:
    入口图标的标识度
    进入和退出操作简易度
    取景框大小
    拍景和自拍切换
    视频的像素限制
    视频的时长限制
    发送的进度提示
    (2)性能:
    发送的时间
    操作是否卡顿
    (3)兼容:
    不同机型分辨率
    不同系统版本
    不同网络情况
    不同流量情况
    15、如果让你来测试扫码支付,你会考虑哪些场景?
    (1)卡的类型(一类户:借记卡、信用卡、各个开户行)
    (2)二类户:虚拟账户如微信里的零钱账户、支付宝的余额宝、电子账户
    (3)二维码的商户类型(微信、支付宝、汇宜、银联)
    (4)支付限额(单笔限额、累计限额、日累计、月累计、支付笔数)
    (5)退款(退款入口、退款进度、退款结果)
    (6)对账
    资金流动(我方扣款数额正确,对方收款数额正确)数额及时效
    支付结果展示、交易明细
    支付接口安全性、接口的性能
    异常情况(卡异常、余额不足)
    连续扫码支付,每天的扫码支付次数限制及数额限制
    二维码有效期
    有无相机权限
    前后置摄像头
    像素低端的手机能否扫码成功
    兼容性(不同手机厂商自带相机功能实现不一致)

  • 相关阅读:
    iOS堆栈-内存-代码在据算机中的运行
    iOS self和super的区别
    php代码优化
    缓存雪崩现象解决方案
    缓存失效
    分布式memcache
    Linux下编译安装Memcache
    windows 下安装 php-memcached 扩展
    Linux下安装 php-memcache 扩展
    缓存之文件缓存
  • 原文地址:https://www.cnblogs.com/uestc2007/p/12459301.html
Copyright © 2020-2023  润新知