测试岗知识记录
生而为人,我很抱歉
你吃饭吃到一半,电话来了,你停了下来接了电话,接完后继续吃饭,这说明你支持并发。
你吃饭吃到一半,电话来了,你一边打电话一边吃饭,这说明你支持并行。并发的关键是你有处理多个任务的能力,不一定要同时。
并行的关键是你有同时处理多个任务的能力。
知识点
- 对测试开发的认识,为什么想做测试开发,测试测开的理解
- 测试有哪些方法
- 讲一讲接口测试
- 黑盒测试的方法
- 白盒测试的方法
- 中断测试
参考链接
(30条未读通知) 字节跳动测试开发1.5w字面经(已入职),附部门直推_笔经面经_牛客网 (nowcoder.com)
测试理论
白盒测试
白盒测试也称为结构测试或逻辑驱动测试,是针对被测单元内部是如何进行工作的测试。
检查程序内部逻辑结构,对所有的逻辑路径进行测试,是一种穷举路径的测试方法,
常见的白盒测试的方法有:语句覆盖,条件覆盖,判定覆盖,条件组合覆盖,基本路径覆盖等等。
优点:可以检测代码的每条分支和路径;可以揭示隐藏在代码中的错误;对代码的测试比较彻底。
缺点:耗费比较大;不能检测到代码中遗漏的逻辑;不能直接验证需求的正确性
黑盒测试
黑盒测试也称功能测试或数据驱动测试,它不看代码内部的逻辑,只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数锯而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。
常见方法有:
- 等价类划分法;
- 边界值分析法;
- 因果图法;
- 场景法;
- 正交实验设计法;
- 判定表驱动分析法;
- 错误推测法;
- 功能图分析法。
优点:容易实施,不需要关注内部实现;贴近用户需求。
缺点:覆盖率比较低,因为不知道内部逻辑
单元测试
单元测试:软件组成单元进行测试,其目的是检验软件基本组成单位的正确性,通常情况下是白盒的,能够尽早的发现错误,降低修改成本。
项目中的测试类就是测试接口类的,属于单元测试,一般由开发人员测试。
性能测试
指标,包括但不限于:
- 响应时间(RT)
- 每秒能完成的响应数(TPS)
- CPU利用率
- 内存占用
- 网络(带宽使用率)
- 手机app的话还考虑耗电量
考虑负载加大时,各项指标如何变化,联网的考虑各种不同的网络环境(正常网、超快网、网速慢、断网)时指标的变化
压力测试
并发用户数和在线用户数的区别
在线用户数:用户同时在一定时间段的在线数量
并发用户数:某一时刻同时向服务器发送请求的用户数
你吃饭吃到一半,电话来了,你停了下来接了电话,接完后继续吃饭,这说明你支持并发。
你吃饭吃到一半,电话来了,你一边打电话一边吃饭,这说明你支持并行。并发的关键是你有处理多个任务的能力,不一定要同时。
并行的关键是你有同时处理多个任务的能力。
(在线用户只要在线就好了,并发用户计算的是和服务器有交流的用户,一般比例5%-20%)
集成测试
集成测试也称综合测试、组装测试、联合测试,将程序模块采用适当的集成策略组装起来,对系统的接口及集成后的功能进行正确性检测的测试工作。
其主要目的是检查软件单位之间的接口是否正确,集成测试的对象是已经经过单元测试的模块。
系统测试
系统测试是对整个系统的测试,将硬件、软件、操作人员看作一个整体,检验它是否有不符合系统说明书的地方,主要包括功能测试、界面测试、可靠性测试、易用性测试、性能测试。
功能测试主要针对包括功能可用性、功能实现程度(功能流程&业务流程、数据处理&业务数据处理)方面测试,在集成测试之后。
集成测试和系统测试之间的比较
1、测试内容:集成测试是测试各个单元模块之间的接口,系统测试是测试整个系统的功能和性能;
2、测试角度:集成测试偏重于技术的角度进行测试,系统测试是偏重于业务的角度进行测试。
验收测试(交付测试)
针对用户需求、业务流程进行的正式的测试,以确定系统是否满足验收标准,由用户、客户或其他授权机构决定是否接受系统。
验收测试包括alpha测试和beta测试,alpha测试是由开发者进行的软件测试,beta测试是由用户在脱离开发环境下进行的软件测试。
回归测试
回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。
测试的类型
功能测试:关注功能正常(包含兼容性测试),除了下面分类都测;
性能测试:关注(比如前端性能、后端性能);
安全测试:关注传输、存储等安全;
特性测试:特性指平台差异(即部分兼容性测试),如PC端鼠标,键盘操作特性(Tab键等);如手机触屏操作,横竖屏,中断恢复(来电)等
QPS(每秒查询率)
QPS:每秒查询率QPS是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准
用来衡量服务器的机器性能。
QPS和TPS的区别
TPS:Transactions Per Second(每秒传输的事务处理个数),即服务器每秒处理的事务数。
TPS包括一条消息入和一条消息出,加上一次用户数据库访问。
是软件测试结果的测量单位。
测试生命周期
测试周期是指从测试项目计划建立到BUG提交的整个测试过程。
包括:
软件项目测试计划,
测试需求分析,
测试用例设计,
测试用例执行,
BUG提交五个阶段。
软件测试周期并行与软件生命周期,存在于软件生命周期的各个阶段。
软件生命周期
软件生命周期是指软件的产生直到报废的生命周期。
包括问题的定义及规划,需求分析,软件设计(概要,详细),软件编码,软件测试(单元测试,集成测试,系统测试,验收测试),运行维护
测试用例的组成元素
- 用例编号
- 用例标题
- 功能模块名称
- 前置条件
- 输入数据
- 操作步骤
- 预期结果
- 优先级
- 执行结果
- 编写人
- 执行人
- 其他补充项
BUG描述、评级
对bug的描述尽量简短但要求清晰,
对bug出现的条件进行详细的描述,包括输入的测试用例、使用的环境、有没有和其他软件同时运行,以及需要写清bug出现的位置,帮助开发更好定位。
按照用户体验(bug是否很严重的影响用户体验)、影响系统的程度进行评级。
一条bug记录的组成
(1)bug内容
(2)bug发现时间
(3)测试条件(系统配置信息、环境、软件版本、浏览器版本…)
(4)预期结果和实际结果的对比,相关的分析
(5)如何重现这个bug的步骤
(6)这个bug的严重性(会多大程度的影响系统或用户使用)
(7)bug发生的位置
瀑布模型和敏捷模型
瀑布模型:
把软件开发模型分为好几个阶段,包括软件计划、需求分析、设计、实现、软件测试、软件运行维护。
具有一种比较明显的分层,每一阶段的结果文档会作为下一阶段的输入,强调文档,整个周期完成的差不多了才能看到结果;
没有迭代和反馈,只能一步一步来,流程没有回头路。不能适应客户不断变化的需求,后期需要改动时成本也比较大
测试比较晚,基本上是在软件完成之后进行的测试
敏捷开发:
按一个短的迭代周期工作,强调“快”,每次迭代交付一些成果,(或者说先做出一个不完美但能实现一定的功能的版本);
让客户参与进来,有新需求就,快速响应变化,迭代产生新版本,缩短软件版本的周期。
强调开发软件而不是文档。
特点:让客户参与进来,客户需求的变动和软件有些不符合需求的地方可以第一时间进行了解和改动; 缩短版本周期; 每隔一段时间(一个迭代周期),团队可以在工作方面进行反省和改进,调整自己的行为; 强调开发软件而不是文档,提高编程人员的积极性。
敏捷测试:
以用户需求为中心,在每一个迭代周期都需要进行测试,
基于自动化测试->速度快、敏捷
更强调测试的速度和适应性,侧重计划的不断调整以适应需求的变化
强调面对面的沟通、协作,强调团队的责任,不太关注对缺陷的记录与跟踪。缺陷修复的成本也较低
V模型和W模型
V模型:把测试过程作为在需求分析、系统设计及编码之后的一个阶段,忽视了测试对需求分析,系统设计的验证,需求的满足情况一直到后期的验收测试才被验证。(应该比较多包括系统测试和验收测试)
测试靠后
W模型:测试的活动与软件开发同步进行,测试的对象不仅仅是程序,还包括需求和设计。因为在需求阶段测试就已经介入了,后面每一阶段的开发都需要经过测试,能够尽早发现软件的缺陷,降低debug的成本
Web和app测试的区别
首先是web和app的区别:
web是b/s架构的,基于浏览器;app是c/s架构的,必须要有客户端;Web测试中只要更新了服务器,客户端就会同步更新,保证每个用户用的客户端一样;app就不能保证完全一致,因为app客户端需要用户主动更新,如果app测试中修改了服务器,就意味着客户端用户使用的所有核心版本都要进行回归测试
性能方面:web主要看响应速度;app还看电量、流量、CPU、内存…
兼容方面:web基于浏览器,主要看电脑硬件、电脑系统;app依赖于手机或平板,关注的系统主要是安卓和ios,还要关心分辨率、屏幕尺寸
App比web测试多一些专项测试:弱网测试,安装、卸载、更新,界面操作、触摸手势等
参考链接
(30条未读通知) 已上岸,感谢牛客,这是一个测试开发岗的基础知识整理。_笔经面经_牛客网 (nowcoder.com)