#31) 非功能测试
这项测试由组织中独立的团队来完成,通过称为非功能测试(NFT)团队或性能测试团队。
非功能测试包括非功能性需求的测试,比如负载测试、压力测试、安全测试、容量测试、可恢复性测试等。NFT 测试的目的是确保软件或应用程序的响应时间是否可以满足业务需求。
加载页面或系统不应该花费太多时间,且在负载高峰期也应该保持这样。
#32) 性能测试
该术语通常与“压力”和“负载”测试互换使用。
性能测试的目的是检查系统性能是否满足业务需求。通常会使用不同的性能和负载工具进行此测试。
#33) 可恢复性测试
该项测试用来检查系统或应用程序崩溃后的恢复情况。
可恢复性测试会验证系统是否能从故障中恢复使用。比如,应用程序正在通过网线接收数据时,网线被拔掉了。
一段时间后,插入网线,系统应该可以从网络电缆被拔掉而失去连接的地方开始接收数据。
#34) 回归测试
模块或功能修改后,把应用程序作为一个整体重新进行的测试被称为回归测试。
回归测试很难覆盖到所有系统,因此通常使用自动化测试工具来进行回归测试。
#35) 基于风险的测试 (RBT)
基于风险的测试,是根据功能或需求的优先级进行测试。基于风险的测试包括测试高关键功能,这些功能对业务影响最大,失效概率也很高。
基于业务需求做优先级决策,一旦设置好优先级,就会首先执行高优先级的功能测试,然后是中优先级的功能测试,最后是低优先级的功能测试。
低优先级的功能是否测试取决于是否有充足的时间。如果留给测试的时间不足以支撑测试完整个软件,但软件必须要按期发布,那这种情况下就要进行基于风险的测试了。
只有客户和组织的高层管理人员谈论同意后,才可使用这个测试策略。
#36) 健全性测试
健全性测试,指一个初始化的测试,以决定一个新的软件版本是否足以执行下一步的测试。
如果一个应用程序在初次使用时就崩溃了,那么是无法进行下一步测试的。因此要重新构建或用应用程序来修复。
#37) 安全测试
这项测试是由专门的测试团队执行的,系统是可以被黑客攻击到的。
安全测试就是检查软件、应用程序或网站是否可以抵御任何内部或外部的威胁。
检查软件可以免受多少恶意程序、病毒的侵害,以及它的授权和身份验证过程的安全性和强度是多高。
还检查软件如何应对黑客攻击和恶意程序攻击,以及在遭受黑客攻击后如何守护住数据的安全。
#38) 冒烟测试
每当开发团队提供新构建的版本时,软件测试团队就会对该版本进行测试,确保不会有基本功能问题。
测试团队在确认版本是稳定的后,会进一步进行详细级别的测试。冒烟测试中发现版本有阻塞缺陷,就不会进一步进行详细级别的测试了。
如果测试人员在初始阶段发现主要功能无法使用,那么测试团队会拒绝接收该版本并通知开发团队。冒烟测试结束后,会进行详细级别的功能测试或回归测试。
#39) 静态测试
静态测试是无需执行被测代码的一种测试。会对交付文件进行检查。
包括代码走查、技术评审、代码检查等。静态测试不用执行代码,但会检查代码的语法和命名。
静态测试也可以有测试用例、测试计划和测试设计文档。开发团队和测试团队一起执行静态测试,从项目的角度来看,在静态测试中发现缺陷是最具有成本效益的。
#40) 压力测试
压力测试是,让系统承受超出其规格的压力,检查系统如何以及何时会发生故障。
这是在重负载下执行的,比如输入大量的数据以超出系统的存储能力,复杂的数据库查询条件。对系统的持续输入或对数据库加负载。
#41) 系统测试
运用系统测试技术,对整个系统按照要求进行测试。它是一种基于总体需求规范并涵盖系统所有组合部分的黑盒测试。
#42) 单元测试
单个软件组件或模块的测试称为单元测试。
通常由开发人员而不是测试人员完成,因为需要详细了解内部程序设计和代码。还可能需要开发测试驱动模块或测试工具来进行测试。
#43) 可用性测试
在可用性测试中,会检查用户友好性。
通过检查应用程序流程,来确认新用户是否可以轻松理解该应用程序。如果用户在任何时候卡住,都会有相应的帮助文档。系统导航一般也会在该项测试中进行。
#44) 漏洞测试
找出软件、硬件和网络中的薄弱点,称为漏洞测试。如果系统容易受到恶意程序的攻击、病毒、蠕虫等,黑客就可以控制系统。
我们需要在生产前检查系统是否进行了漏洞测试。漏洞测试可以发现安全方面的关键缺陷。
#45) 容量测试
容量测试是由性能测试团队执行的一种非功能测试。
软件或应用程序接收庞大的数据输入,容量测试就是在这个背景下检查系统的行为和响应时间。
这种庞大的数据输入可能会影响系统的性能和响应的速度。
#46) 白盒测试
白盒测试需要了解应用程序的内部逻辑。
它也被称为玻璃盒测试。执行白盒测试需要了解软件的内部行为。在此基础上去测试代码语句、分支、路径、条件等的覆盖情况。
结论
上述软件测试类型只是测试的一部分。
还有超过 100+ 种的测试类型,但并非所有的项目中都要覆盖所有的测试类型。因此,我们介绍了在软件生命周期中最常见的一些测试类型。
此外,在不同的组织中使用不同的定义和流程,但在任何地方基本概念都是一样的。这些测试类型、过程及其实施方法都会随着项目、需求和范围的变化而不断变化。
{测试窝原创译文,译者:喜安}