在攻读本科期间,我遇到了“软件测试”一词,我发现它很有趣,并开始寻找各种资源来获取足够的知识。在我的途中,我发现没有特定的来源包含有关软件测试基础知识的所有概念。因此,本文总结了软件测试的基本概念及其重要性。
什么是软件测试?
根据技术定义,软件测试是评估系统或其组件以确定其是否满足指定要求的过程。它是“验证和确认”的元素。软件测试至关重要,因为它表明了软件的质量和可靠性,从而提高了客户满意度。
软件可测试性
如果要发布无错误的软件,测试至关重要,但是并非所有软件都易于测试。软件支持测试的程度称为软件可测试性。软件的可测试性取决于以下因素:
可分解性:可以单独测试软件的不同组件。
可观察性:输入的任何更改都会反映在软件的输出中。
可控制性:这是可以控制被测组件状态的程度。
简单:软件的每个组件都是不言自明的(记录良好的)。
稳定性:软件更改很少,但是可以很好地控制。
良好测试的品质
测试是为了发现错误而执行程序的过程。好的测试既不是太简单也不是太复杂,并且最有可能在测试组中发现一整类错误。
在编写测试时,请尝试回答以下问题:一组特定的测试将如何充分覆盖产品?
这将帮助您编写该软件的有效测试。
软件测试生命周期(STLC)
它是在测试过程中进行的一系列特定活动,以确保满足软件质量目标。STLC包括:
产品需求分析
测试计划
测试用例开发
测试环境设置
执行测试
评估结果
在整个测试过程中,最重要的任务是设计一个好的测试用例并采用合适的策略对软件产品进行测试。以下将进一步解释这两个术语:
> Software Testing Classification (Diagram by author)
测试用例设计方法
测试用例通常是单一步骤,或偶尔一系列步骤,以测试应用程序的正确功能和特征。
成功的测试用例是一种可以检测到尚未发现的错误的案例。
测试用例设计是软件测试的重要方面,因为它为开发人员提供了系统的测试方法。任何工程产品都可以通过以下两种方式之一进行测试:
1.白盒测试(玻璃盒测试)
这是一种测试用例设计方法,其中包括对软件内部逻辑和结构的详细研究,即它可以发现软件源代码的逻辑和结构中的错误。它又分为两类:
路径测试:这是一种使测试用例设计人员能够得出程序的逻辑复杂性度量的方法。在这种方法中,我们确保通过程序的每个路径都已用最少的测试用例执行了至少一次。
结构测试:它与软件的内部设计和实现有关。它主要包括数据流测试(与数据流中的错误有关,即变量声明和用法)和变异测试(通过确保程序使变异/编辑的源代码失败来确保程序的健壮性)。
2.黑匣子测试(行为测试)
这是一种测试用例设计方法,它专注于软件的功能需求,而对软件产品的内部工作一无所知。这包括 :
等效类分区:这是一种黑盒测试方法,它将程序的输入域划分为可从中导出测试用例的数据类。它定义了一个发现错误类别的测试用例,从而减少了测试用例的总数。
边界值分析:它是对等价类划分的补充。与其选择等效类的任何元素,不如在类的边缘选择测试用例。
决策表测试:一种系统方法,其中以表格形式捕获各种输入条件及其各自的系统行为。它涵盖了所有可能的测试用例。(完整性属性)
因果图(鱼骨图):以图形方式说明给定结果与影响该结果(输出/效果)的所有因素(输入条件)之间的关系。
软件测试策略
软件测试策略将软件测试用例设计方法学集成到精心计划的一系列步骤中,从而成功构建了软件。软件测试从组件级别开始,并逐步扩展到整个基于计算机的系统的集成。这包括:
1.单元测试(组件测试)
在这种测试方法中,将测试软件的各个单元(组件)。它是面向白盒的,由开发人员完成。
单元可以是单个功能,方法,模块或对象。
2.集成测试
这是一种用于构造程序结构,同时进行测试以发现与软件的不同单元之间的交互相关的错误的系统技术。这包括 :
大爆炸集成:将所有组件一次性集成并作为一个单元进行测试时
增量集成:两个或两个以上逻辑相关的组件进行集成和测试时。它包括两种方法,即自上而下(首先测试高级模块时)和自下而上(首先测试较低级模块时)。
回归测试:进行测试以确保最近的代码更改不会对软件的现有功能产生不利影响。
冒烟测试:确定软件构建是否稳定的测试。
构建包含实现一个或多个产品功能所需的所有数据文件,库和模块。
3.系统测试
这是一种黑箱测试技术,旨在根据指定要求评估整个系统的合规性。这包括 :
恢复测试:验证万一发生故障,是否可以正确执行软件恢复。
安全测试:发现系统漏洞。
压力测试:旨在应对程序中的异常情况。
性能测试:用于测试程序的速度,稳定性和可伸缩性。
4.用户验收测试(UAT)
它由最终用户(客户端)执行,以在将软件移至生产环境之前对其进行验证。这包括 :
Alpha测试:由测试人员执行,以通过执行典型用户可能执行的任务来识别软件中存在的所有可能的错误。
Beta测试:由真实用户在真实环境中进行。它包括将软件发布给有限数量的用户的过程,以获得可以改进产品的反馈。
结论
软件测试是一个广泛而多样的领域,专注于交付给客户的产品质量。产品质量优先考虑客户满意度,这使软件测试成为IT行业最具挑战性和满意度的工作之一。本文介绍了软件测试及其分类的基础知识,它们可以帮助您培养对该领域的兴趣或完成大学作业!
参考
[1] Pressman,Roger S.。软件工程:从业人员的方法。英国,麦格劳·希尔(McGraw Hill),2001年。
[2]软件测试教程
[3]手动测试教程播放列表
(