测试的概念:
验证软件特性是否符合用户需求
测试和测试开发的区别:
相同点:主要工作都是软件测试,保证业务质量
不同点:开发指的是,测试开发工程师在完成业务测试后,余有时间需要做一些技术事务(性能测试、自动化测试)
调试与测试的区别:
开发与测试出现冲突怎么办?
1.自我反思 bug描述不清楚 误操作
2.站在用户角度
3.提出的bug要有理有据
4.不光提出bug,还要有解决方案
5.组织bug评审大会,开发、测试、产品代表入会
需求:
用户需求:未经合理评估的需求
软件需求:经过合理评估的,可以实现的需求
黑盒测试:
不关注软件内部实现细节,仅从软件外部接口和功能需求出发的测试方法。测试人员将软件视为一个不透明的黑盒子,只关心输入和输出,不考虑软件内部的逻辑结构和实现细节。黑盒测试主要用于检查软件的功能是否符合需求规格说明书的要求,以及软件是否能正确接收输入并产生预期的输出。
白盒测试:
一种基于软件内部实现细节的测试方法。测试人员需要了解软件的内部结构和实现逻辑,通过检查程序的源代码、数据结构、算法等内部信息来设计测试用例。白盒测试主要用于检查软件内部逻辑的正确性,确保程序中的每个分支、每条路径都得到了充分的测试。
软件的生命周期就是软件的开发模型
软件的生命周期:
需求分析--计划--设计--编码--测试--维护
开发模型、测试模型的特点与适用场景
瀑布模型:
特点:每个流程只执行一次、线性的开发流程
缺点:
测试后置
1.前面各阶段遗留的风险推迟到测试阶段才被发现,导致项目大面积返工,失去了及早修复的机会
2.必须留有足够的时间给测试活动,否则导致测试不充分,将缺陷直接暴露给用户(产品质量差)
周期太长
1.产品很迟才能被看到和使用,可能会导致需求/功能过时
适用于:需求固定的小项目
螺旋模型:
特点:
各阶段引入风险分析+原型,避免风险后置
强调严格的全过程风险管理。
强调各开发阶段的质量。
增加风险分析和原型
缺点:
项目中可能存在的风险性与风险管理人员的技能水平有直接关系
需求人员、资金、时间的增加和投入,可能会导致项目的成本太高
适用于:
规模大、复杂度高、风险高
增量模型、迭代模型
增量开发:
增量模型是一种软件开发过程模型,它将软件产品作为一系列的增量构件来设计、编码、集成和测试。每个增量都向用户提供一个特定的功能集,并且每一个增量都是建立在前一个增量的基础上。它允许软件在多个时间点上被分批地开发、测试和交付
特点:
- 分批交付:软件被划分为多个增量(或批次),每个增量都包含一系列的功能。每个增量完成后,都会经过严格的测试,并交付给客户使用。
- 灵活性:由于增量是按需开发的,因此可以根据客户的反馈调整后续增量的开发计划,增加必要的特性或删除不必要的部分。
- 降低风险:通过将软件划分为较小的增量,可以在早期就交付部分功能,从而尽早获取客户反馈,降低项目风险。
迭代模型:
通过一系列的迭代来逐步构建软件产品。每次迭代都包括需求分析、设计、编码、测试和集成等阶段,但每次迭代的目标是完成一个相对较小的、可运行的系统子集。
特点:
- 快速反馈:通过短周期的迭代,开发团队可以更快地获取客户反馈,从而及时调整开发方向。
- 适应性强:迭代模型能够很好地适应需求的变化,因为每次迭代都是基于当前最新的需求进行的。
- 质量提升:通过不断的迭代和测试,软件的质量会逐渐提高,从而减少最终产品的缺陷。
敏捷模型
主要困难包括在项目开发期间处理来自客户的变更请求以及合并这些变更所需的高成本和时间。为了克服瀑布模型的这些缺点,在1990年代中期提出了敏捷软件开发模型。
敏捷宣言
轻文档 轻流程 重目标 重产出
scrum是敏捷模型的一种 又称迭代式软件开发模型
主要有三角色、五会议
三角色:产品经理、项目经理、研发团队
product owner负责整理user story(用户故事),定义其商业价值,对其进行排序,制定发布
刘,对产品负责。
scrum master负责召开各种会议,协调项目,为研发团队服务。
研发团队则由不同技能的成员组成,通过紧密协同,完成每一次迭代的目标,交付产品。
五会议:
测试模型
V模型
优点:明确的标注了测试过程中存在的不同类型的测试
缺点:仅仅把测试作为在编码之后的一个阶段,未在需求阶段就介入测试。缺点同瀑布模型。
W模型:
增加了软件各开发阶段中应同步进⾏的验证和确认活动
特点:测试的对象不仅是程序,需求、设计等同样要测试,测试与开发是同步进⾏的
优点:
• 有利于尽早地全⾯的发现问题。例如,需求分析完成后,测试⼈员就应该参与到对需求的验证和确 认活动中,以尽早地找出缺陷所在。同时,对需求的测试也有利于及时了解项⽬难度和测试⻛险, 及早制定应对措施,显著减少总体测试时间,加快项⽬进度。
缺点:
•需求、设计、编码等活动被视为串⾏的;
• 测试和开发活动也保持着⼀种线性的前后关系,上⼀阶段完全结束,才可正式开始下⼀个阶段⼯ 作。
• 重流程,⽆法⽀持敏捷开发模式。