作为测试人员,我们知道各种类型的软件测试,例如功能测试,非功能测试,自动化测试,敏捷测试及其子类型等。

我们每个人在测试过程中都会遇到几种类型的测试。我们可能听过一些,也许已经做了一些工作,但是并不是每个人都了解所有测试类型。

每种测试都有其自身的功能,优点和缺点。但是,在本文中,我几乎涵盖了我们在日常测试生活中通常使用的每种软件测试。

不同类型的软件测试

下面列出了一些常见的软件测试类型:

功能测试类型包括:

非功能测试类型包括:

包括但不限于以上列举内容,下面是详细概念。

Alpha 测试

它是软件行业中最常用的测试类型。该测试的目的是在将其发布到市场或用户之前,确定所有可能的问题或缺陷。

Alpha 测试在软件开发阶段的最后但 Beta 测试之前进行。尽管如此,作为此类测试的结果,可能会进行较小的设计更改。

Alpha 测试是在开发人员的网站上进行的。可以为这种类型的测试创建内部虚拟用户环境。

验收测试

的验收测试是由客户端执行,并验证结束系统的流量到底是否是按照业务需求与否,如果是按照最终用户的需求。仅当所有功能部件均按预期工作时,客户端才接受该软件。

这是测试的最后阶段,此后该软件将投入生产。这也称为用户验收测试(UAT)。

临时测试

名称本身表明该测试是在临时基础上执行的,即不参考测试用例,也没有针对此类测试的任何计划或文档。

该测试的目的是通过执行应用程序的任何流程或任何随机功能来发现缺陷并破坏应用程序。

临时测试是一种发现缺陷的非正式方法,项目中的任何人都可以执行。没有测试用例就很难识别缺陷,但是有时可能无法使用现有的测试用例来识别临时测试期间发现的缺陷。

辅助功能测试

可访问性测试的目的是确定残疾人是否可以访问该软件或应用程序。

在这里,残疾是指聋哑,色盲,智障,盲人,老年和其他残疾群体。执行各种检查,例如用于视觉障碍的字体大小,用于色盲的颜色和对比度等。

Beta 测试

Beta 测试是由客户执行的正式类型的软件测试。它是在 Real Environment 中执行的,然后再将产品发布给实际的最终用户。

进行 Beta 测试是为了确保软件或产品没有重大故障,并且从最终用户的角度来看,它可以满足业务需求。客户接受软件后,Beta 测试成功。

通常,此测试通常由最终用户或其他用户完成。这是在发布用于商业目的的应用程序之前完成的最终测试。通常,发布的软件或产品的 Beta 版本仅限于特定区域中的一定数量的用户。

因此,最终用户实际上使用了该软件并将反馈共享给公司。然后,公司在将软件发布给全球之前会采取必要的措施。

后端测试

只要在前端应用程序上输入了输入或数据,它就会存储在数据库中,并且这种数据库的测试称为数据库测试或后端测试。

有不同的数据库,例如 SQL Server,MySQL 和 Oracle 等。数据库测试涉及表结构,架构,存储过程,数据结构等的测试。

在不涉及后端测试的 GUI 中,测试人员通过适当的访问权限直接连接到数据库,并且测试人员可以通过在数据库上运行一些查询来轻松地验证数据。

在此后端测试期间,可能会发现诸如数据丢失,死锁,数据损坏等问题,这些问题对于在系统投入生产环境之前修复至关重要。

浏览器兼容性测试

它是兼容性测试的子类型(在下面进行说明),由测试团队执行。

浏览器兼容性测试是针对 Web 应用程序执行的,它确保该软件可以在不同浏览器和操作系统的组合下运行。这种类型的测试还可以验证 Web 应用程序是否在所有浏览器的所有版本上运行。

向后兼容性测试

这是一种测试,用于验证新开发的软件或更新的软件是否与旧版本的环境兼容。

向后兼容性测试将检查新版本的软件是否与旧版本软件创建的文件格式兼容;它也可以与该软件的旧版本创建的数据表,数据文件和数据结构很好地配合使用。

如果对任何软件进行了更新,则它应该可以在该软件的先前版本之上正常运行。

黑匣子测试

在这种类型的测试中不考虑内部系统设计。测试基于要求和功能。

有关黑盒测试的优缺点和类型的详细信息,请参见此处。

边值测试

这种类型的测试在边界级别检查应用程序的行为。

执行边界值测试以检查边界值是否存在缺陷。边界值测试用于测试不同范围的数字。每个范围都有一个上下边界,并在这些边界值上进行测试。

如果测试要求测试范围是 1 到 500,则对值分别为 0、1、2、499、500 和 501 进行边界值测试。

分支测试

它是白盒测试的一种,在单元测试期间执行。分支测试,其名称本身暗示通过遍历每个分支对代码进行彻底测试。

比较测试

将产品与以前版本或其他类似产品的优缺点进行比较称为比较测试。

兼容性测试

它是一种测试类型,可在其中验证软件在不同环境,Web 服务器,硬件和网络环境中的行为方式和运行方式。

兼容性测试可确保软件可以在不同的配置,不同的数据库,不同的浏览器及其版本上运行。兼容性测试由测试团队执行。

组件测试

它主要由开发人员在完成单元测试后执行。组件测试涉及将多个功能作为单个代码进行测试,其目的是在将多个功能相互连接后确定是否存在任何缺陷。

端到端测试

与系统测试类似,端到端测试涉及在模拟实际使用的情况下测试完整的应用程序环境,例如与数据库进行交互,使用网络通信或与其他硬件,应用程序或系统进行交互(如果需要)适当。

等效分区

它是一种测试技术,是黑匣子测试的一种。在此等效分区期间,将选择一组组,并选取一些值或数字进行测试。可以理解,该组中的所有值都生成相同的输出。

该测试的目的是删除特定组中的冗余测试用例,这些特定用例会生成相同的输出,但不会产生任何缺陷。

假设应用程序接受介于-10 到 +10 之间的值,因此使用对等划分将用于测试的值分为零,一个正值,一个负值。因此,此测试的等效分区为-10 到-1、0 和 1 到 10。

测试示例

这意味着实时测试。示例测试包括实时场景,它还包含基于测试人员经验的场景。

探索性测试

探索性测试是由测试团队执行的非正式测试。该测试的目的是探索应用程序并查找应用程序中存在的缺陷。

有时,可能会在测试过程中发现主要缺陷甚至导致系统故障。

在探索性测试期间,建议跟踪特定流程开始之前已测试的流程以及进行的活动。

无需文件和测试用例即可执行探索性测试技术。

功能测试

这种类型的测试会忽略内部零件,仅关注输出以检查其是否符合要求。这是针对应用程序功能要求的黑盒型测试。有关功能测试的详细信息,请单击此处。

图形用户界面(GUI)测试

此 GUI 测试的目的是根据业务需求验证 GUI。在 “详细设计文档” 和 “ GUI 样机” 屏幕中提到了应用程序的预期 GUI。

GUI 测试包括屏幕上显示的按钮和输入字段的大小,所有文本,表格和表格内容的对齐方式。

在选择了不同的菜单和菜单项之后,它还验证了应用程序的菜单,它验证了页面没有波动,并且在将鼠标悬停在菜单或子菜单上之后,对齐方式保持不变。

大猩猩测试

大猩猩测试是由测试人员执行的测试类型,有时也由开发人员执行。在大猩猩测试中,对一个模块或模块中的功能进行了彻底而严格的测试。该测试的目的是检查应用程序的健壮性。

快乐路径测试

Happy Path Testing 的目的是在正向流上成功测试应用程序。它不查找否定条件或错误条件。重点仅在于应用程序通过其生成预期输出的有效和正输入。

增量集成测试

增量集成测试是一种自下而上的测试方法,即在添加新功能时对应用程序进行连续测试。应用程序功能和模块应足够独立,可以分别进行测试。这是由程序员或测试人员完成的。

安装/卸载测试

安装和卸载测试是在不同硬件或软件环境下的不同操作系统上对完整,部分或升级安装/卸载过程进行的。

集成测试

在集成后对所有集成模块进行测试以验证组合后的功能称为集成测试。

模块通常是代码模块,单个应用程序,网络上的客户端和服务器应用程序等。此类测试尤其与客户端/服务器和分布式系统相关。

负载测试

这是一种非功能测试,负载测试的目的是检查系统可以处理多少负载或最大工作负载而不会降低性能。

负载测试有助于找到特定负载下的最大系统容量以及任何导致软件性能下降的问题。使用 JMeter,LoadRunner,WebLoad,Silk performer 等工具执行负载测试。

猴子测试

猴子测试由测试人员执行,假设如果猴子使用该应用程序,那么猴子将如何随机输入数值,而无需对该应用程序有任何知识或了解。

猴子测试的目的是通过提供随机输入值/数据来检查应用程序或系统是否崩溃。猴子测试是随机执行的,没有编写测试用例的脚本,因此不需要

猴子测试是随机执行的,没有编写测试用例的脚本,也不必知道系统的全部功能。

变异测试

突变测试是一种白盒测试,其中一个程序的源代码已更改,并验证现有测试用例是否可以识别系统中的这些缺陷。

程序源代码中的更改非常小,因此不会影响整个应用程序,只有具有影响的特定区域和相关的测试用例才能识别系统中的那些错误。

负面测试

测试人员本着 “破坏的态度” 的心态并使用否定测试来验证系统或应用程序是否中断。负测试技术是使用错误的数据,无效的数据或输入执行的。它可以验证系统是否抛出无效输入错误并按预期方式运行。

非功能测试

这是一种测试,每个组织都有一个单独的团队,通常称为非功能测试(NFT)团队或性能团队。

非功能测试涉及对非功能需求的测试,例如负载测试,压力测试,安全性,容量,恢复测试等。NFT 测试的目的是确保软件或应用程序的响应时间是否足够快。业务需求。

加载任何页面或系统都不会花费太多时间,并且应该在高峰加载期间保持正常。

性能测试

该术语通常与 “压力” 和 “负载” 测试互换使用。执行性能测试以检查系统是否满足性能要求。使用不同的性能和负载工具进行此测试。

恢复测试

这是一种测试,用于验证应用程序或系统从崩溃或灾难中恢复的情况。

恢复测试确定系统在灾难后是否能够继续运行。假定应用程序正在通过网络电缆接收数据,并且突然断开了网络电缆的连接。

稍后再插入网络电缆。然后系统应从由于网络电缆拔出而失去连接的位置开始接收数据。

回归测试

对应用程序进行整体测试以对任何模块或功能进行修改,这称为回归测试。很难在回归测试中涵盖所有系统,因此通常将自动化测试工具用于这些类型的测试。

基于风险的测试(RBT)

在基于风险的测试中,功能或需求是根据其优先级进行测试的。基于风险的测试包括对高度关键的功能的测试,该功能对业务的影响最大,并且失败的可能性非常高。

优先级决定基于业务需求,因此,一旦为所有功能设置了优先级,便会先执行高优先级功能或测试用例,然后再执行中优先级功能,再执行低优先级功能。

低优先级功能可以根据可用时间进行测试,也可以不进行测试。

如果没有足够的时间来测试整个软件,则需要执行基于风险的测试,并且需要按时实施软件,而不会出现任何延迟。仅在客户和组织高级管理人员讨论并批准之后,才采用这种方法。

健全性测试

进行完整性测试可以确定新软件版本的性能是否足以接受主要测试工作。如果应用程序在初次使用时崩溃了,则系统不够稳定,无法进行进一步的测试。因此,分配了构建或应用程序来修复它。

安全测试

这是由一组特殊的测试人员执行的测试。可以通过任何黑客方式渗透系统。

已进行安全测试,以检查软件或应用程序或网站如何免受内部和外部威胁的影响。该测试包括从恶意程序,病毒保护多少软件,以及授权和身份验证过程的安全性和强度。

它还会检查软件对任何黑客攻击和恶意程序的行为,以及在此类黑客攻击后如何维护软件以确保数据安全。

冒烟测试

每当开发团队提供新的构建时,软件测试团队都会验证该构建并确保不存在重大问题。

测试团队确保构建稳定并进一步执行详细的测试级别。冒烟测试(Smoke Testing)检查构建中是否没有显示停止器缺陷,这将阻止测试团队详细测试应用程序。

如果测试人员发现主要的关键功能在初始阶段就被破坏了,那么测试团队可以拒绝该构建,并相应地通知开发团队。冒烟测试在所有功能或回归测试的详细级别上进行。

静态测试

静态测试是一种无需任何代码即可执行的测试。在测试阶段对文档进行执行。

它涉及对项目可交付成果的审查,演练和检查。静态测试不执行代码而不是代码语法,而是检查命名约定。

静态测试还适用于测试用例,测试计划,设计文档。有必要由测试团队执行静态测试,因为从项目的角度来看,在这种类型的测试中发现的缺陷具有成本效益。

压力测试

当系统承受的压力超出其规格以检查其故障方式和时间时,将进行此测试。这是在繁重的负载下执行的,例如将大量存储容量,复杂的数据库查询,对系统的连续输入或数据库负载。

系统测试

在系统测试技术下,按照要求对整个系统进行测试。这是一种黑盒型测试,它基于总体需求规范,涵盖了系统的所有组合部分。

单元测试

对单个软件组件或模块的测试称为单元测试。它通常是由程序员而不是测试人员完成的,因为它需要内部程序设计和代码的详细知识。它还可能需要开发测试驱动程序模块或测试工具。

可用性测试

在 “ 可用性测试” 下,完成了用户友好性检查。测试了应用程序流程,以了解新用户是否可以轻松理解该应用程序,如果用户在任何时候陷入困境,都可以提供适当的帮助。基本上,在此测试中检查系统导航。

漏洞测试

涉及确定软件,硬件和网络中漏洞的测试称为漏洞测试。如果恶意程序容易受到此类攻击,病毒和蠕虫的攻击,则黑客可以控制该系统。

因此,有必要在生产前检查那些系统是否经过漏洞测试。它可能会识别出关键缺陷,安全缺陷。

音量测试

容量测试是性能测试团队执行的一种非功能测试。

该软件或应用程序需要处理大量数据,当系统遇到大量数据时,Volume Testing 会检查系统行为和应用程序的响应时间。如此大量的数据可能会影响系统的性能和处理时间。

白盒测试

白盒测试基于有关应用程序代码内部逻辑的知识。

也称为玻璃箱测试。应该知道内部软件和代码的工作方式才能进行这种类型的测试。在这些测试下,基于代码语句,分支,路径,条件等的覆盖范围。

结论

上述软件测试类型只是测试的一部分。但是,仍然有超过 100 多种测试类型的列表,但是并非所有类型的项目都使用所有测试类型。因此,我介绍了一些常见的软件测试类型,这些类型通常用于测试生命周期中。

同样,在不同的组织中使用替代定义或过程,但是基本概念在任何地方都是相同的。随着项目,需求和范围的变化,这些测试类型,过程及其实现方法会不断变化。

技术类文章精选

非技术文章精选


↙↙↙阅读原文可查看相关链接,并与作者交流