软件测试基础

简介: 软件测试基础

一、什么是软件测试?

软件测试是验证软件产品的特性是否满足用户需求。

软件测试是贯穿于软件的整个生命周期的。

二、测试和调试的区别

测试和调试主要有以下三点不同:

  • 目的不同:测试只是为了找出软件中的缺陷;调试是为了发现缺陷并进行解决。
  • 执行的阶段不同:测试贯穿于整个软件的生命周期;调试只是在编码阶段进行。
  • 参与的角色不同:测试不仅有测试人员还会有开发人员的参与,像单元测试和集成测试等;但是调试只有开发人员参与。

三、软件测试的相关概念

1、需求

所谓需求就是满足用户需求或正式规定文档所具有的条件和权能,包含用户需求和软件需求。

  • 用户需求:甲方所提出的需求,若没有甲方就是终端用户在使用产品是必须要完成的任务,用户需求一般比较简略。用户需求还要进行市场分析还技术分析来确定可行性。
  • 软件需求:开发人员必须实现的软件功能,软件需求一般比较详细。

2、BUG

当且仅当规格说明书或需求文档存在并且正确时,程序与规格之间不匹配就会出现BUG

如果需求在规格说明不存在或者错误的时候,就最终以用户为准,当程序没有正确实现用户预期的需求功能时也会出现BUG.

对于BUG,应如何进行描述?

  • 发现BUG的版本;
  • 发现BUG的版本;
  • 发现BUG的操作步骤;
  • 预期结果;
  • 实际结果;
  • 以及BUG的类型、等级等。

公司一般会对BUG进行等级划分,例如:崩溃、严重、一般、和次要。

BUG的生命周期:

● New:新发现的Bug,未经评审决定是否指派给开发人员进行修改。

● Open:确认是Bug,并且认为需要进行修改,指派给相应的开发人员。

● Fixed:开发人员进行修改后标识成修改状态,有待测试人员的回归测试验证。

● Rejected:如果认为不是Bug,则拒绝修改。

● Delay:如果认为暂时不需要修改或暂时不能修改,则延后修改。

● Closed:修改状态的Bug经测试人员的回归测斌验证通过,则关闭Bug。

● Reopen:如果经验证Bug仍然存在,则需要重新打开Bug,开发人员重新修改。


3、测试用例

测试用例就是为了实现测试而向被测试的系统提供的一组集合,在测试用例中包含了测试环境(软件+版本号+操作系统)、操作步骤、测试数据和预期结果等等。

设计测试用例需要围绕软件需求。

设计测试用例的原则:避免用后即弃。

设计测试用例的目的:

有利于理清测试的思路,避免漏测和避免重复测试测试的问题。

四、 软件的生命周期

  • 需求分析:进行软件开发之前,需要知道软件的需求,并且需要分析用户的需求是否合理。
  • 计划:根据需求来计划软件开发的时间和人员等。
  • 设计:将需求细化成小的任务,进行技术设计。
  • 编码:按照需求和设计来进行编码。
  • 测试:测试人员依据测试用例来对软件进行测试。
  • 运行维护:项目上线之后对产品进行线上的维护,有修复性维护、完善性维护和预防性维护。

五、开发模型

1、瀑布模型

  • 特点:线性的开发流程,不能应对需求的变化。
  • 缺点:由于线性开发,测试后置导致风险在后期在暴露出来,不能及时纠正,还有预留给测试的时间短,测试不充分可能会把缺陷遗留给用户。
  • 应用场景:需求固定的小项目。

瀑布模型是其他模型的基础框架。

2、螺旋模型

螺旋模型是在瀑布模型的基础上给每个阶段加上了风险风险分析,引入了全流程的风险分析,每次分析完之后都会生成一个新的模型。

缺点:时间耗费长,并且也耗费人力、财力等资源。

适用场景:规模庞大、复杂度高并且风险大的项目。

3、迭代模型

迭代模型就是先开发出一个基础版本(A、B、C),然后在基础版本上不断进行优化。

4、增量模型

假设有A、B、C三种需求,增量模型就是A、B、C三种需求相互独立并行去实现,如果A功能代码实现了就去测试A,如果B代码实现了就会测试B,不必等到所有需求的代码都完成了再去进行实现。

举一个通俗的例子:假设对画一幅人物肖像,对于迭代模型就是先勾勒出人的整体轮廓再进行染色等,而增量模型就是先画出人物脸部再来画身体等。

5、敏捷模型

敏捷模型中有一个敏捷宣言:

个体与交互重于过程和工具

可用的软件重于完备的文档 客户协作重于合同谈判

响应变化重于遵循计划

在每对比对中,后者并非全无价值,但我们更看重前者。

敏捷模型的特点:轻文档、轻流程、重目标和重产出。

敏捷模型中的scrum开发模式当前比较流行,scrum主要包含:

三个角色

  • 产品经理:收集用户的需求并编写需求文档,为整个项目负责。
  • 项目经理:协调项目,为研发团队进行服务。
  • 研发人员:包括测试人员和开发人员等。

五个会议

  • 发布计划会议:产品经理从需求池里面整理出需求,开展发布计划会议。
  • 迭代计划会议:将需求进行细化成小任务,将这些任务进行人员的分配。
  • 每日例会:团队成员汇报每天的任务进度,遇到的问题以及计划下一步的工作。
  • 演示会议:团队展示本次迭代的成果。
  • 回顾会议:对于本次的迭代总结经验并进行分析。

六、软件测试的生命周期

软件测试是伴随软件的整个生命周期的。

软件测试的生命周期:

需求分析->测试计划->测试设计、测试开发->测试执行->测试评估

需求分析阶段:对于用户查看需求逻辑是否正确,是否符合用户的需求以及行为习惯,对于开发人员考虑需求是否能够实现以及实现的难度。

测试计划阶段:指定测试计划,例如测试人员的安排。

测试设计、开发阶段:设计测试用例等。

执行测试:利用测试用例对软件进行测试。

测试评估阶段:测试人员需要记录测试,做好缺陷管理记忆测试的评估。

七、测试模型

1、V模型


特点:明确标注了测试的类型以及每个测试阶段对应的开发阶段。

缺点:测试后移,在编码结束后才进行测试。

2、W模型(双V模型)

缺点:

  • 上一个阶段完成后下一个阶段才能进行;
  • 开发模型和测试模型也始终保持着前后关系;
  • 重文档、重过程,不适用于敏捷模型。

目录
相关文章
|
2月前
|
测试技术 网络安全
什么是软件测试? 软件测试都有什么岗位 ?软件测试和调试的区别? 软件测试和开发的区别? 一位优秀的测试人员应该具备哪些素质? 软件测试等相关概念入门篇
文章全面介绍了软件测试的基本概念、目的、岗位分类、与开发和调试的区别,并阐述了成为优秀测试人员应具备的素质和技能。
270 1
什么是软件测试? 软件测试都有什么岗位 ?软件测试和调试的区别? 软件测试和开发的区别? 一位优秀的测试人员应该具备哪些素质? 软件测试等相关概念入门篇
|
3月前
|
监控 安全 测试技术
『软件测试1』你需要了解的软件测试基础知识
该文章介绍了软件测试的基础知识,涵盖了软件缺陷的定义、类型、处理流程以及软件测试的目标和重要性等内容。
|
4月前
|
测试技术
探索软件测试的奥秘:如何构建有效的测试策略
在软件开发的海洋中,测试是确保航船不沉没的灯塔。本文将带你领略测试的魅力,从基础概念到高级策略,我们将一起航行在软件测试的广阔海域,探寻那些隐藏在代码深处的秘密。准备好了吗?让我们启航吧!
56 1
|
4月前
|
SQL 安全 测试技术
软件测试的哲学:探索、验证与持续改进
【8月更文挑战第29天】本文将深入探讨软件测试的核心理念,从测试的本质和目的出发,阐述测试不仅是技术活动,更是一种思考方式。我们将一起探索如何通过测试来验证软件的正确性,确保其满足用户需求,并在此基础上不断改进。文章将分享实用的测试策略和方法,包括代码示例,旨在帮助读者更好地理解和实践软件测试的艺术。
|
5月前
|
敏捷开发 监控 测试技术
软件测试中的敏捷实践:如何有效整合测试与开发
【7月更文挑战第3天】在软件开发的快速迭代周期中,敏捷测试成为确保产品质量的关键。本文将探讨如何在敏捷开发环境中整合测试与开发工作,包括持续集成、测试自动化和跨功能团队协作的策略,旨在提升软件交付的速度和质量。
|
6月前
|
安全 测试技术
软件测试项目式学习二(认识软件测试及软件测试分类与案例分析)
软件测试项目式学习二(认识软件测试及软件测试分类与案例分析)
92 1
|
7月前
|
敏捷开发 分布式计算 测试技术
【软件测试学习】—软件测试的概念与软件测试模型(一)
【软件测试学习】—软件测试的概念与软件测试模型(一)
|
7月前
|
测试技术 程序员
【软件测试学习】—软件测试模型(二)
【软件测试学习】—软件测试模型(二)
|
7月前
|
测试技术
【软件测试学习】—软件测试的基本认识(一)
【软件测试学习】—软件测试的基本认识(一)
|
敏捷开发 前端开发 Devops
软件测试与质量保证基础
软件测试与质量保证基础
146 0