软件测试是检查系统的过程,目的是识别任何错误,缺失的需求或与实际需求的差距。这篇文章将详细讨论什么是软件测试,它的目标,类型,不同的方法,测试级别和文档。
什么是软件测试
软件测试是一个用于识别已开发软件的完整性、正确性和质量的过程。程序/应用程序通过手动或自动测试在正或负条件下执行。测试是软件开发生命周期的关键元素。它检查软件的规格、功能和性能。
图1 -软件测试简介
软件测试的主要目标
目标包括:
- 在给定的产品中发现尽可能多的错误(或bug)。
- 检查软件是否与需求规格相符。
- 软件测试的质量应该用最小的成本和努力来维持。
- 创建测试用例,执行测试并发布测试报告。
图2 -测试目的
软件测试的目标是通过以下方法实现的:
- 验证
- 验证
验证
验证是评估系统或组件的过程,以检查和分析给定开发阶段的产品是否满足该阶段开始时施加的条件。它可以是与规定的要求有关的审查、测试、审核、检查或记录的形式。
简单地说,验证检查“X”是否满足其规范;其中“X”可以是代码、模型、设计图、需求等。
验证
验证在开发过程中或在开发过程结束时对系统进行评估。它也被称为“端到端”验证。它确保产品或软件是否适合操作使用。
软件测试方法
测试软件的两种方法是:
- 黑盒测试
- 白盒测试
黑盒测试
- 不要求了解内部工作结构,程序设计或代码。
- 它也被称为功能测试、数据驱动测试或闭盒测试。
- “黑盒测试”中的测试基于需求和功能。
白盒测试
- 了解内部工作结构,程序设计和代码。
- 它也被称为结构测试、透明盒测试、基于代码的测试和透明测试。
- 白盒测试中的测试基于代码语句、分支、路径和条件的覆盖率。
灰盒测试
- 部分了解内部工作结构,程序设计和代码要求。
- 它是黑盒和白盒测试方法的组合。
软件测试类型
下面是根据要测试的应用程序选择的测试类型。
- 手工测试
- 自动化测试
手工测试
手动测试是指手动测试软件,不使用任何自动化工具或脚本。测试人员手动执行所有测试用例,以满足预期的结果或用户的观点。
自动化测试
自动化测试(也称为测试自动化)意味着使用特殊的自动化测试软件工具测试软件。该工具执行使用各种脚本语言生成的测试脚本。
图3 -手动和自动化测试过程示意图
软件测试级别
以下是软件测试的主要级别:
- 功能测试
- 非功能测试
功能测试
功能测试是一种黑盒测试,它根据功能需求验证软件系统。对整个系统进行软件功能测试,评估系统是否符合规定的要求。下面是测试应用程序功能的五个步骤。
- 确定预期应用程序要执行的功能。
- 根据应用程序的规范创建测试数据。
- 基于测试数据和应用程序规范的输出。
- 编写测试场景并执行测试用例。
- 基于已执行测试用例的实际结果和预期结果的比较。
功能测试的类型
以下是重要的和常用的功能测试类型:
- 单元测试
- 集成测试
- 系统测试
- 回归测试
- 验收测试
单元测试
分别测试每个模块。它由开发人员在源代码的各个单元上完成,并确保各个模块满足软件需求规范。
集成测试
集成测试用于测试两个软件模块或单元之间的接口。
系统测试
对整个系统进行测试,以发现错误并验证所有系统元素是否正常工作。它基本上是在一个完整的集成系统上进行的,以评估系统的指定功能。
回归测试
软件应用程序中的更改可能会影响应用程序中的其他区域。因此,进行回归测试是为了确保在最近的程序或代码中所做的更改没有影响到应用程序的现有功能。
验收测试
执行该测试是为了确定软件系统是否满足需求规格。它也被称为用户验收测试或最终测试,其中测试活动按照验收测试计划进行。它检查应用程序的行为是否符合预期。
图4 -软件测试级别
非功能测试
它涉及测试软件的属性,这些属性在本质上是非功能性的,如性能,安全性,用户界面等。
非功能测试的类型
以下是重要和常用的非功能测试方法:
- 性能测试
- 可用性测试
- 安全性测试
- 可移植性测试
性能测试
执行该测试是为了确定工作负载下计算机、网络、软件程序或设备的速度、响应性和稳定性等任何性能问题。
可用性测试
执行它是为了确定一个设计对用户来说有多容易使用。
安全性测试
执行它是为了从安全和漏洞的角度识别任何缺陷。
可移植性测试
执行它是为了确定软件组件或应用程序集成到环境中的难易程度。
软件测试文档
该阶段包括在软件测试之前或期间开发的所有需求的文档。下面是一些常用的与测试软件相关的文档化工件,例如:
- 测试计划
- 测试场景
- 测试用例
- 跟踪矩阵
图5 -表示有多个测试用例的测试场景
测试计划
测试计划列出用于测试软件应用程序的方法、将在其中执行测试的测试环境、将使用多少资源、测试的限制和测试活动的时间表等。基本上,它概述了预期测试活动的范围、目标、方法、时间表和估计。
测试场景
测试场景是一行语句,说明要测试软件应用程序中的哪个模块。测试场景用于确保对应用程序中的所有功能进行从头到尾的测试。根据应用程序的规模和复杂性,应用程序的特定模块可以拥有至少一个测试场景到几百个场景。
测试用例
测试用例是执行软件应用程序测试任务时使用的输入和条件的集合。此活动的主要目的是确保软件应用程序在功能和其他方面是通过还是失败。
在测试时使用许多类型的测试用例,如功能测试用例、否定测试用例、基于错误猜测的测试用例、逻辑测试用例、物理测试用例、UI测试用例等。
跟踪矩阵
可追溯矩阵是一个将所有需求追溯到测试用例的文档,测试用例反过来反映了正在构建的系统。这个矩阵是在测试执行过程之前创建的,在说服客户所有的需求都得到满足方面起着主要作用,这有助于顺利的产品传输。
图6 -样本RTM(需求可追溯矩阵)
结论
软件发布前的测试有助于交付无错误的高质量产品或应用程序。
还读:软件测试生命周期(STLC)——特征和各个阶段SCADA系统-组件,硬件和软件架构,类型SDLC过程中的软件开发模型——瀑布、迭代、螺旋、V &敏捷RAID -类型,实现,架构,应用和优势