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
给你一个全新的软件,你就是负责人,你怎么去开展测试工作
解题分析:这道题其实就是考察面试者对项目测试流程的掌握情况,可以从测试流程详细说明,各个阶段的注意要点,输出,准入准出标准,方面进行说明
参考回答:
第一步:需求分析:我会对这个全新的软件需求进行全面分析,主要分析的点有: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)对账
资金流动(我方扣款数额正确,对方收款数额正确)数额及时效
支付结果展示、交易明细
支付接口安全性、接口的性能
异常情况(卡异常、余额不足)
连续扫码支付,每天的扫码支付次数限制及数额限制
二维码有效期
有无相机权限
前后置摄像头
像素低端的手机能否扫码成功
兼容性(不同手机厂商自带相机功能实现不一致)