测试理论知识
测试介绍
1. 定义
通过手动或者工具对测试对象进行操作,从而将预期结果和实际结果对比看看是否存在差异
2. 测试流程(测试的v模型)
① 产品提需求,需求评审 ——>
② 前端后台进行开发,测试编写测试用例 ——>
③ 发新版本后,先进性冒烟测试,确保测试对象正常运行 ——>
④ 接口测试,仿真测试以及最终的线上测试,有bug通过禅道(提交bug的网站)指给开发人 员,修改后进行回归测试,要保存好测试计划、测试用例、出错统计和最终分析报告,为维护提供方便 ——>
⑤ 没有bug之后,编写测试报告给产品经理或者项目经理,进行打包上线
- 冒烟测试:程序员把新版本发给测试之后,测试先对该新版本最基本的功能进行测试,测试没问题,才会进行到下一步的测试(功能测试,集成测试,系统测试等等)。冒烟测试目的就是为了减小软件测试成本。如果拿到新版本后不进行冒烟测试,直接去做余下的测试,做着做着做不去了,因为测试过程中最基本的业务都存在bug。保证新开发功能的正确性。
- 回归测试:相对新功能的原有系统的正确性,包含,旧系统无改动,旧系统和新开发部分相兼容。
3. 软件测试的作用(目的)
① 发现并修复软件中存在的缺陷
② 记录软件在运行过程中产生的一些数据
③ 降低同类开发产品遇到的风险
4. 原则
① 证明软件存在缺陷
② 不能执行穷尽测试(穷尽测试:设计测试用例包含所有的输入,是不可能实现的)
③ 缺陷存在群集现象(2:8原则 20%核心功能 )
④ 测试应提早介入(从定义需求的时候就有了测试)
⑤ 某些测试需要依赖特殊环境(操作系统 浏览器 不同得到手机或者手机版本)
⑥ 杀虫剂现象
⑦ 不存在缺陷谬论(开发人员说自己的代码没问题的时候你怎么办?)
- 杀虫剂现象:所谓“杀虫剂”一词,用于描述软件测试越多,其免疫力越强的现象。这与农药杀虫是一样的。老用一种农药,害虫最后就有抵抗力,农药也就发挥不了效力。在用螺旋模式开发软件过程中,每一圈都要重复测试过程。软件测试员每一个轮回就会接到软件进行测试。最后,经过几个回合之后,该发现的软件缺陷都被发现了,再测试下去也不会有新的发现了。为了克服杀虫剂怪事,软件测试员必须不断编写不同的新测试程序,对程序的不同部分进行测试,以找出更多的软件缺陷。总之:总用一种测试程序去找bug,会出现找不到bug的现象,所以多试试不同的测试程序去找bug才能找得到更多的bug。
5. 测试级别
① 单元测试(UT):软件测试中,单元就是组成软件的最小单位(类、函数、组件)
② 集成测试(IT):将多个不同的模块组合在一起进行验证(接口是否ok)
③ 系统测试(ST):测试人员充当用户对软件进行测试
- 系统测试分为:
功能测试:验证当前软件的主体功能是否ok
兼容性测试:验证当前软件在不同的环境下是否ok
安全测试:验证当前软件是否只有授权用户提供功能时使用
性能测试:验证当前软件时候存在消耗其他资源的问题
验收测试:软件发布之后由客户实现买单 - 验收测试分为:
α 测试 – 内测:Alpha测试是由用户在开发环境下进行的测试,也可以是开发机构内部的用户在模拟实际操作环境下进行的测试。开发者坐在用户旁边,这是在开发者受控的环境下进行的测试。由开发者随时记录下错误情况和使用中的问题。
β 测试 – 公测:β测试是软件的多个用户在一个或多个用户的实际使用环境下进行的测试。开发者通常不在测试现场,
Beta测试不能由程序员或测试员完成。
UAT测试 – 正式
6. 按测试对象来进行分类
盒 是测试的对象
① 黑盒测试:软件的主体功能
② 白盒测试:软件的底层代码
③ 灰盒测试:介于黑盒和白盒之间(接口测试)
7. 按测试对象是否执行分类
① 静态测试:测试不执行 测试的可以有布局 页面
② 动态测试:将软件运行在真实的环境中进行测试
8. 按测试手段分类
① 手动测试:由测试人员对测试对象实现手动验证 优点: 可以灵活改变测试操作以及测试环境
② 自动化测试:1.脚本测试 2.借助第三方测试工具
9. 测试用例的编写
测试用例都是wps表来进行编写
定义:为了特定目的而设计的一组输入测试,执行条件,预期结果为了验证该功能是否满足需求。
步骤:①编号 该用例的编号 ②日期 ③测试人员 ④项目 ⑤分项目 ⑥执行条件 ⑦测试过程 ⑧预期结果 ⑨实际结果
在公司内测试人员需要大量的编写测试用例 一天至少30-50条测试用例的编写
测试用例的模板公司都不一致
10. get和post的请求区别
get是从服务器获取数据的,请求参数在地址栏之后,数据量有限制,不安全;
post是向服务器提交数据的,请求参数在请求实体中,数据量没有限制,安全。
11. 缺陷报告内容包括
bug优先级、严重程度、所属项目、所属模块、影响版本、指派给谁、bug标题、复现步骤、log日志或者截图、bug类型
12. 什么是Http协议,请求方法是什么?Http和Https的区别
Http协议是超文本传输协议,是定义客户端到服务器的请求与应答的标准,分别为请求头与响应头。
请求方式:get和post
Http和Https链接方式不同,一个端口是80,一个是443。
Http协议需要ca申请证书,要钱。
Http链接简单,是无状态的;Https是有SSL+http协议构成的可进行加密传输的协议,比Http安全。
Http是超文本传输协议,是明码协议;Https是具有安全性的SSL加密的传输协议。
13. Web测试和App测试的区别
相同点:测试流程和测试思路基本一致。
不同点:测试环境不同
- 系统架构存在差异:
web项目,主要是基于浏览器的b/s架构(升级不用发新版本,客户端自动跟新)。app项目,是c/s架构,必须有客户端,而且服务端更新以后,客户端可以选择强制更新或者选择性更新,更新之后客户端的核心内容都要进行回归测试。 - 测试方法存在差异:
功能测试:从功能测试上看,测试思路基本相似,有一点不同的是,web不支持离线浏览,而app有些已经下载的是支持离线浏览的。
性能测试:web只关心服务器的压力,页面响应的速度和时间。app除了这些之外还要关心流量、电量、CPU、内存、Memory等。
兼容性测试:web项目中,兼容性测试主要考虑浏览器的兼容性就行。app项目需要考虑的就可多:手机型号、操作系统、系统版本、屏幕分辨率、屏幕尺寸等。
专项测试:web项目没有专项测试。app项目的专项测试有电量测试、弱网测试、安装卸载、升级安装、中断测试、访问权限测试、用户体验等。
14. B/S架构和C/S架构的区别
B--browser浏览器
C--client客户端
S--server服务端
- 标准:相对于cs来说bs会显得标准一些,bs架构两端都是使用现成的成熟产品。
- 效率:cs执行效率高,客户端可以分担一些数据的处理。
- 安全:bs架构中得到的数据都是以Http协议进行传输的,Http是明文传输,可以被抓包,所以bs与cs相比不安全。
- 升级:bs架构在服务器进行数据更新,前台刷新页面就能升级,cs架构需要将两端都进行更新才可。
- 开发成本:相对bs来说,cs中的客户端需要自己开发,bs不用,所以cs成本会高一些。
15. Android手机和IOS手机,系统有什么区别
- 运行机制不同:IOS采用的是沙盒运行机制,安卓采用的是虚拟机运行机制。
- 后台制度不同:IOS中任何第三方程序都不能在后台运行,安卓任何程序都能在后台运行,知道没有内存才会关闭。
- 最高权限不同:IOS中用于UI指令权限最高,安卓中数据处理指令权限最高。
16. 写好测试用例的关键/写好测试用例要关注的维度?
要覆盖用户的需求;从使用场景出发,考虑正常和异常的使用场景;测试步骤要详细,要通俗易懂;做好用例评审,及时更新测试用例。
17. 安全行测试包括哪些方面?
用户验证、用户权限管理、系统安全保护
18. 测试分类
功能测试、用户体验测试、性能测试、UI测试、兼容性测试、安装测试、文档测试、稳定性测试等
19. 为什么要进行抓包?
- 公司没有标准的接口文档时,测试人员需要通过抓包来获取接口进行测试。
- 抓包可以快速的找到请求,通过抓包可以查看整个请求的过程,响应时间,还可以分辨bug是前台的还是后台的。
- 抓包可以获取敏感信息(用户密码、个人账户信息等)
- 通过抓包进行测试,拦截请求,修改请求数据,查看对应的响应结果,抓包本身就是接口的一部分。
20. 一般用什么工具,怎么进行抓包?
工具:Fiddler、charles
Fiddler:
1、设置Http代理,设置端口号,把手机设置与fiddler在同一网段上,设置代理ip,设置代理端口,手机上的请求就能获取到了。
2、抓取请求查看,可以过滤,找到自己域名下的请求,通过分析请求地址,请求参数,响应结果来查找问题。
Https包怎么抓?
抓取Https时,需要获取申请证书,在fiddler与charles两个工具中,可以模拟下载966证书,下载后,在手机上访问代理服务器的ip与端口,下载证书,就可以抓取到Https的请求了。
21. APP出现ANR的原因
线程阻塞、内存不足、CPU满负荷(现在手机都是8核CPU,一般不会出现CPU满负荷)
22. APP出现Crash的原因
空指针异常、数组下标越界、内存不足、CPU满负荷(8核CPU,一般不会出现)
23. 手机端测试的关注点你有哪些?
UI测试、功能测试、性能测试、安装卸载测试、软件升级测试、登录测试、安全性测试、消息推送、前后台切换、兼容性测试、网络环境测试、monkey测试。
24. 测试报告包括哪些?
- 项目的概要描述
- 测试过程缺陷的统计,一定程度反应项目的质量。
- 整个项目过程有需要改善的地方,提出建议。
- 给出结论,项目是否可以上线。