1. 软件的生命周期?
软件生命周期是软件从提出,实现,使用,到停止使用的过程。是从可行性研究到需求分析、软件设计、编码、测试、软件发布维护的过程。
2. 常见的测试用例设计方法?
(1)等价类划分法
(2)边界值分析法
(3)错误推测法
(4)因果图法
(5)正交表分析法
(6)场景分析法
3. 为什么要做接口测试?
- 绕过前端,发现界面操作发现不了的Bug
- 检查对系统异常处理能力,异常恢复能力
- 确保系统的安全性
- 保证服务端的质量
4. 遇见无法复现的Bug怎么办?
- 确保是在发现Bug的版本进行复现
- 和开发一起沟通,描述Bug情况,开发核查代码
- 记录操作过程
- 实在复现不到,评估Bug影响范围及出现概率,将问题抛出来,与需求和研发一起评判是否可以遗留
5. 给你一杯水如何测试?
围绕软件质量模型6大特性来回答:功能性、可靠性、易用性、效率、维护性、可移植性
- 功能:装水会不会漏,水能不能被喝到
- 安全性:杯子有没有毒或细菌,材质是否达标
- 可靠性:杯子从不同高度落下的损坏程度
- 可移植性:杯子在不同地方和温度下是否正常使用
- 兼容性:杯子是否可以容纳果汁、白水、汽油等
- 易用性:是否烫手,是否有防滑措施,方便饮用
- 压力测试:用根针在针上不断加重量,看多大压强可以将杯子扎穿
- 用户文档:使用文档手册是否有具体规定
6. Web的兼容性如何测试?
- 操作系统兼容性:同一应用在不同操作系统上可能有兼容性问题
- 浏览器兼容性:国内主流的浏览器内核主要有3种:IE内核、Firefox内核和Chrome内核;针对三大内核的主流浏览器进行兼容性测试
- 分辨率兼容性:同一个页面在不容分辨率下,显示的样式可能会不一样,所以需要进行分辨率的兼容性测试
- 网速测试:待测项目在不同网络环境下能正常地运行测试,可以通过Fiddler、360等软件进行设置限速测试
7. 如何提交一条完整的Bug信息?
缺陷标题、缺陷步骤、预期结果、实际结果,指定给哪位开发人员,缺陷严重等级,优先级
8. 什么是sql注入?如何避免sql注入?
SQL注入就是在用户输入的字符串中加入SQL语句,如果在设计不良的程序中忽略了检查,那么这些注入进去的SQL语句就会被数据库服务器错误认为是正常的SQL语句而运行,攻击则就可以执行计划外的命令或访问未被授权的数据
- 过滤输入内容,校验字符串
- 参数化查询
- 安全测试、安全审计
10. Monkey测试如何执行?
它是一种Android系统自带的命令行工具,可以运行在模拟器或者真机中,monkey向系统发送伪随机的用户事件,实现对正在开发的应用程序进行压力测试。Monkey主要用于Android的稳定性测试,自动的一个压力测试小工具,主要目的就是为了app是否会Crash(崩溃)。
11. 如何定位一个Bug属于前端还是后端?
(1)服务器日志
查看前端请求是否正常,请求参数不正确,前端问题;请求参数正确,查看服务器返回结果,返回结果错误,后端问题;返回结果正确,分析是不是前端解析接口返回时候出现问题。
(2)操作后若没有日志,可以看数据库,若没有变更记录则是后端问题。
12. http和https的区别?
- https需要到ca申请证书,一般免费证书很少,因而需要一定的费用
- http是超文本传输协议,信息是明文传输;https是具有安全性的ssl加密传输协议
- http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443
- http的连接很简单,是无状态的;https协议是由SSL+HTTP协议构建的可进行加密传输,身份认证网络协议,比http协议安全
13. get请求和post请求的区别?
- get请求一般是去获取数据(其实也可以提交,但常见的是获取数据),post请求一般是去提交数据
- get请求参数会放在url中,所以隐私性差,安全性差,请求的数据长度是有限制的,不同浏览器和服务器限制长度不同;post请求没有长度限制,请求数据放在body中
- get请求刷新服务器或者退回没有影响,post请求回退时会重新提交数据请求
- get请求可以被缓存,post请求不会被缓存
- get请求会保存在浏览器历史记录当中,可以被收藏为书签,但post不能
- get请求只能进行url编码(application-x-www-form-urlencode),post请求支持多种(mutilpart/form-data等)
14. cookie和session的区别?
- cookie的数据存放在客户的浏览器上,session数据放在服务器上
- cookie不是很安全,别人可以分析放在本地的cookie并进行欺骗,考虑到安全应该使用session
- session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie
- 单个cookie保存的数据不能超过4k,很多浏览器限制一个站点最多保存20个cookie,而session则存储于服务端,浏览器对其没有限制
15. 测试过程分为哪些阶段?
软件测试分为四个阶段:单元测试、集成测试、系统测试、验收测试
- 单元测试:单元测试是最小单位测试,也是最初期的测试,一般是一个函数方法窗口,一个功能模块,都可以看作是一个单元,主要以白盒为主,一般由开发人员完成。
- 集成测试:在单元测试的基础上把软件逐渐组装起来一起继续测试的过程。逐渐组装的过程中会出现很多临时版本(迭代测试)。集成测试主要以黑盒为主(当然接口测试也在这阶段进行)
- 系统测试:整个功能全部完成后对集成了硬件和软件的完整系统进行模拟真实的环境模拟、测试重点主要在于:整个系统能否正常运行,整个系统的兼容性测试
- 验收测试:由用户参与完成的过程
- alpha阶段:在软件开发过程中由最终用户对软件进行检查
- beta阶段:在最终用户的实际环境中由最终用户对软件进行检查
16. 每天提多少个Bug?
一般项目前期Bug会比较多,一天三四十,二三十都有,不仅限功能,还有UI,提示语之类的,项目后期相对较少,一天几个,多的时候十几个。
17. 每天写多少条测试用例?
没有具体留意过每天写多少条,一般2、3天写一个模块,一个模块的测试用例大概150条左右。
18. B/S架构和C/S架构有什么区别?
B/S:
- 为浏览器/服务器架构,通过浏览器访问,使用方便;
- 访问速率相对较慢
- 只需要更新服务器数据,更易维护更新
- 安全性相对较低
C/S - 为客户端/服务器架构,需下载客户端应用程序,相对来说不易使用
- 由于有部分数据存储在客户端,所有访问速率相对较快
- 维护更新较为复杂
- 安全性相对更高
19. B/S架构的系统从哪些点去测?
- 功能:链接测试,导航菜单,页面的跳转,表单测试,数据测试,业务逻辑测试
- 兼容性:和客户确认其经常会使用的浏览器,再加上IE、火狐,和谷歌等兼容性测试
- 界面:字体颜色大小、图标和字段间距离
- 性能:连接速度,负载测试,压力测试
- 安全性:权限控制,链接封装,日志记录的测试,登录密文,修改密码后重新登录,登录失效时间
- web系统属于B/S架构
20. 测试用例内容有哪些?
- ID
- 标题
- 优先级
- 预置条件
- 操作步骤
- 预期结果
- 实际结果
- 测试人
- 测试时间