软件测试简介
软件测试是对软件进行检测和评估,以确定其是否满足所需结果的过程和方法。它是在规定的条件下对程序进行操作,发现程序错误,从而衡量软件质量,并对其是否满足设计要求进行评估的过程。
与计算机系统操作有关的计算机程序、文档及数据都可称为软件。程序、文档、数据这三者结合起来就是完整的软件。
软件开发模型
瀑布模型
优点:软件开发的各个阶段比较清晰,强调早期计划和需求调查,比较适合需求稳定的产品开发
缺点: 整个过程是线性的,测试排在最后,系统的早期错误可能后期才能被发现。
敏捷开发模型
适用于产品需求频繁变化和产品需要快速开发的场景。常见的敏捷开发模型有XP和Scrum。
XP(Extreme Programming,极限编程)
XP是一种近螺旋式的开发模型。它是把复杂的周期分解为一个个相对简单的小周期。极限编程从编程方法、小组实践、交付与发布三个维度来组织开发流程。
Scrum
在Scrum模型中,最基本的概念就是Sprint。Sprint通俗来说就是一个迭代周期。
DevOps开发模型
DevOps(Dev和Ops的组合词)涉及软件整个开发生命周期中的各个阶段。DevOps是一个非常关注开发人员(Dev)、运维人员(Ops)以及测试人员之间沟通合作的开发模型。DevOps是通过自动化方式完成软件测试交付流程的,以便在构建、测试、发布软件能够更加快捷、频繁和可靠的运行。
DevOps生命周期:
(1)持续开发
- 计划阶段
- 编码阶段
- 构建阶段
(2)持续测试
(3)持续集成(CI)
(4)持续部署
(5)持续监控
常见测试流程
单元测试
单元测试是对软件中的基本组成单位进行的软件测试。目的是检验软件的基本组成单位的正确性
测试方法:白盒测试
集成测试
集成测试是对软件系统集成过程中进行的测试,目的是检查软件模块之间的接口是否正确
测试方法:黑盒与白盒结合
冒烟测试
冒烟测试是在软件开发过程中针对软件基本功能的一种快速验证,是对软件基本功能进行确认验证的手段
测试方法:黑盒测试(手工或自动化测试方式)
系统测试
系统测试是对已集成好的软件系统进行彻底的测试,验证软件系统的正确性和性能等是否满足其规约所指定的要求。一般系统的主要测试工作都集中在系统测试阶段。在系统测试中,又包括功能测试、性能测试、安全测试、兼容性测试
测试方法:黑盒测试
验收测试
验收测试是部署软件之前的最后一种测试。验收测试的目的是确保软件准备就绪。
测试方法:黑盒测试
软件测试模型
V模型
V模型是开发模型中瀑布模型的一种改进。瀑布模型将软件生命周期划分为计划、分析、设计、编码、测试和维护这六个阶段。V模型改进了瀑布模型的缺点,在软件开发时期,开发活动和测试活动几乎同时开始。
优点:明确标注了测试过程中存在着哪些不同的测试类型,并且可以清楚地表达测试和开发各阶段的对应关系。
缺点:顺序性,进入测试后发现的bug不容易找到根源。如果有较大的需求变更,会导致返工量较大。
W模型
W模型是从V模型演化过来,相对于V模型,在软件各开发阶段中W模型增加了应同步进行的验证和确认环节。W模型由两个V组成,分别代表测试过程和开发过程。测试与开发同步进行,有利于尽早、全面地发现系统中的问题。
优点:测试与开发同步进行,而且测试对象不仅仅是程序,还包括需求和设计。这样可以尽早发现软件缺陷,降低软件开发成本。
缺点:开发与测试依然是线性关系,项目的需求变更和调整依然不方便。如果前期工作中没有产生文档,根本无法执行W模型。
H模型
H模型把测试完全独立出来,形成一个完成独立的工作。将测试准本工作和测试执行工作清晰地体现出来。
图中的其他流程可以是任意的开发流程。测试流程是灵活的,只要满足测试条件,并且完成测试准备活动,测试就可以进行了。
优点:在H模型中软件测试活动可以尽早准备、尽早执行,具有很强的灵活性。而且软件测试可以根据被测对象的不同而分层次、分阶段、分次序执行,同时也是可以被迭代的。
缺点:对于项目管理要求很高、对于测试人员的技能要求也很高、测试就绪点的分析也比较困难。
3种测试模型对比:
- V模型适用于中小企业
- W模型适用于中大型企业
- H模型对测试人员的技能要求非常高,使用比较少
系统测试工作流程
Bug管理流程