测试面试题
- 1、请分别说明黑盒测试与白盒测试的优缺点
- 2、你认为测试与开发的关系是怎样的,当开发认为你提交的bug 不算bug 时应该如何处理?
- 3、请写出对应的SQL语句
- 4、将字符串类似:"k:1|k3:2|k2:9|...|kn:m",处理成 json 格式,比如{"k":"1", "k3":"2", ... , "kn":"m"},语言不限。
- 5、请根据淘宝 App 立即购买界面设计测试用例,同时也可以简述平时使用时,发现的 Bug 或用户体验不好的地方。
- 6、QC,QA,QM
- 7、JIRA
- 8、简述APP 测试、web 测试的区别
- 9、 简述 C/S 和 B/S架构各自的优缺点
- 10、什么是软件的生命周期?有哪些阶段?
- 11、软件开发周期的V模型
- 12、软件测试的目的是什么?
- 13、什么是测试用例?编写测试用例有哪些方法?
- 14、简述bug的生命周期
- 15、selenium常见八大定位
1、请分别说明黑盒测试与白盒测试的优缺点
黑盒测试的优点:
比较简单,不需要了解程序内部的代码及实现;
与软件的内部实现无关;
从用户角度出发,能很容易的知道用户会用到哪些功能,会遇到哪些问题;
基于软件开发文档,所以也能知道软件实现了文档中的哪些功能;
在做软件自动化测试时较为方便;
黑盒测试的缺点:
不可能覆盖所有的代码,覆盖率较低,大概只能达到总代吗量的30%;
自动化测试的复用性较低;
白盒测试的优点:
帮助软件测试人员增大代码的覆盖,提高代码的质量,发现代码中隐藏的问题;
白盒测试的缺点:
程序运行会有很多不同的路径,不可能测试所有的运行路径;
测试基于代码,只能测试开发人员做的对不对,而不能知道设计的正确与否,可能会漏掉一些 功能需求;
系统庞大时,测试开销会非常大;
2、你认为测试与开发的关系是怎样的,当开发认为你提交的bug 不算bug 时应该如何处理?
程序员和测试程序员相爱相杀,开发人员还是测试人员都是为了公司的产品能够更好发展,
测试本质是为了发现软件缺陷,在开发项目的过程中将测试看作是一个标准项目,
如果交流无法分清对错,可找产品部交谈评论,或是请教产品经理
3、请写出对应的SQL语句
用户表 User(U),包括用户 ID(Uid)、姓名 UN、年龄 UA、性别 Usex ; 产品表 Prod§ 包括 产品 id(Pid), 产品名称 (Pn) 发布时间(T);
投资表 Invest(I),包括投资 ID (Iid)、产品 id (Pid)、用户 ID(Uid), 投资金额 m(M);
结合上述定义的数据表,用 SQL 语句查出
① 产品名称为 XXX 的产品的用户投资数(按性别分组) (6 分)
②19 年 3 月内发布的每个产品的名称,总投资金额及用户平均投资金额,按时间倒序排列
(投资表存在单个用户同一个产品下多笔投资记录)( 9 分)
(1)
select P.Pn,U.Usex,count(U.Uid) as user_num
from Invest I join Prod P on P.Pid = I.Pid join User U on U.Uid = I.Uid
group by U.Usex;
(2)
select P.Pn,sum(m),avg(m)
from Invest I join Prod P on P.Pid = I.Pid
group by P.Pid order by T desc
where T between "19-03-01" and "19-04-01";
4、将字符串类似:“k:1|k3:2|k2:9|…|kn:m”,处理成 json 格式,比如{“k”:“1”, “k3”:“2”, … , “kn”:“m”},语言不限。
Python实现:
import json
def string_to_dict(string):
d = {}
for kv in string.split("|"):
k,v = kv.split(":")
if v.isdigit():
v=int(v)
d[k]=v
else:
v=str(v)
d[k] = v
return json.dumps(d)
print(string_to_dict("k1:1|k3:2|k2:9|...|kn:m"))
5、请根据淘宝 App 立即购买界面设计测试用例,同时也可以简述平时使用时,发现的 Bug 或用户体验不好的地方。
测试用例:
用户体验不好的地方,特色服务这一块显示在购买界面这一块有点显得内容太多,还有就是特色服务这一块应该标明一些特色服务的价格
6、QC,QA,QM
- QC(quality aontral)品质控制 —基础测试人员
- QA(quality assurance)品质保证 —负责人
- QM (quality manage)品质管理
7、JIRA
项目与事务跟踪工具,可用于需求管理,BUG管理
bug管理系统 JIRA 的优势:自定义工作流
8、简述APP 测试、web 测试的区别
单纯从功能测试的层面上来讲的话,APP 测试、web 测试 在流程和功能测试上是没有区别的。
根据两者载体不一样,则区别如下:
系统结构方面
web项目,b/s架构,基于浏览器的;web测试只要更新了服务器端,客户端就会同步会更新。
app项目,c/s结构的,必须要有客户端;app 修改了服务端,则客户端用户所有核心版本都需要进行回归测试一遍。
性能方面
web项目 需监测 响应时间、CPU、Memory
app项目 除了监测 响应时间、CPU、Memory外,还需监测 流量、电量等
兼容方面
web项目:
-
浏览器(火狐、谷歌、IE等)
-
操作系统(Windows7、Windows10、Linux等)
app项目: -
设备系统: iOS(ipad、iphone)、Android(三星、华为、联想等) 、Windows(Win7、Win8)、OSX(Mac)
-
手机设备可根据 手机型号、分辨率不同
相对于 Wed 项目,APP有专项测试 -
干扰测试:中断,来电,短信,关机,重启等
-
弱网络测试(模拟2g、3g、4g,wifi网络状态以及丢包情况);网络切换测试(网络断开后重连、3g切换到4g/wifi 等)
-
安装、更新、卸载
安装:需考虑安装时的中断、弱网、安装后删除安装文件等情况
卸载:需考虑 卸载后是否删除app相关的文件
更新:分强制更新、非强制更新、增量包更新、断点续传、弱网状态下更新 -
界面操作:关于手机端测试,需注意手势,横竖屏切换,多点触控,前后台切换
-
安全测试:安装包是否可反编译代码、安装包是否签名、权限设置,例如访问通讯录等
-
边界测试:可用存储空间少、没有SD卡/双SD卡、飞行模式、系统时间有误、第三方依赖(QQ、微信登录)等
-
权限测试:设置某个App是否可以获取该权限,例如是否可访问通讯录、相册、照相机等
测试工具方面
自动化工具:APP 一般使用 Appium; Web 一般使用 Selenium
性能测试工具:APP 一般使用 JMeter; Web 一般使用 LR、JMeter
9、 简述 C/S 和 B/S架构各自的优缺点
CS的优缺点
(1)优点:
●能充分发挥客户端PC的处理能力,很多工作可以在客户端处理后再提交给服务器,所以CS客户端响应速度快。
●操作界面漂亮、形式多样,可以充分满足客户自身的个性化要求。
●C/S结构的管理信息系统具有较强的事务处理能力,能实现复杂的业务流程。
●安全性能可以很容易保证,C/S一般面向相对固定的用户群,程序更加注重流程,它可以对权限进行多层次校验,提供了更安全的存取模式,对信息安全的控制能力很强。一般高度机密的信息系统采用C/S结构适宜。
(2)缺点:
●需要专门的客户端安装程序,分布功能弱,针对点多面广且不具备网络条件的用户群体,不能够实现快速部署安装和配置。
●兼容性差,对于不同的开发工具,具有较大的局限性。若采用不同工具,需要重新改写程序。
●开发、维护成本较高,需要具有一定专业水准的技术人员才能完成,发生一次升级,则所有客户端的程序都需要改变。。
●用户群固定。由于程序需要安装才可使用,因此不适合面向一些不可知的用户,所以适用面窄,通常用于局域网中。
BS的优缺点
(1)优点:
●分布性强,客户端零维护。只要有网络、浏览器,可以随时随地进行查询、浏览等业务处理。
●业务扩展简单方便,通过增加网页即可增加服务器功能。
●维护简单方便,只需要改变网页,即可实现所有用户的同步更新。
●开发简单,共享性强。
(2)缺点:
●个性化特点明显降低,无法实现具有个性化的功能要求。
●在跨浏览器上,BS架构不尽如人意。
●客户端服务器端的交互是请求-响应模式,通常动态刷新页面,响应速度明显降低(Ajax可以一定程度上解决这个问题)。无法实现分页显示,给数据库访问造成较大的压力。
●在速度和安全性上需要花费巨大的设计成本。
●功能弱化,难以实现传统模式下的特殊功能要求。
10、什么是软件的生命周期?有哪些阶段?
软件的生命周期是软件开始研制到最终被废弃不用这一整个过程,整个生命周期包括 问题定义及规划 , 需求分析 , 系统设计 , 软件编程 , 软件测试 , 软件维护 等阶段
简要概括:立项–>需求分析–>设计、编码、测试–>发布–>运行维护–>淘汰
11、软件开发周期的V模型
12、软件测试的目的是什么?
测试本质:发现软件缺陷
13、什么是测试用例?编写测试用例有哪些方法?
测试用例 (TestCase) 是为项目需求而编制的一组测试输入 ,执行条件以及预期结果. 以便测试某个程序是否满足客户需求
可以总结为: 每一个测试点的数据设计和步骤设计
编写测试用例的八大方法
- 等价类划分法
- 边界值分析法
- 因果图法
- 判定表驱动法
- 正交实验法
- 场景法
- 状态迁徙图法
- 测试大纲法
其他测试用例设计方法
- 探索性测试法
- 猴子测试(随意性测试)
14、简述bug的生命周期
新建 – 提交 – 确认 – 分配 – 修复 – 验证 – 关闭
15、selenium常见八大定位
find_element_by_id()
find_element_by_name()
find_element_by_xpath()
find_element_by_tay_name()
find_element_by_calss_name()
find_element_by_css_serector()
find_element_by_link_text()
find_element_by_partial_link_text()