软件测试概述
软件测试是根据从用户和系统规范收集到的需求对软件进行的评估。测试在软件开发生命周期的阶段级别或程序代码的模块级别进行。软件测试包括验证和确认。
软件验证
验证是检查软件是否满足用户需求的过程。它在 SDLC 结束时进行。如果软件符合开发要求,则该软件已通过验证。
- 验证可确保正在开发的产品符合用户要求。
- 验证回答了以下问题 - "我们开发的产品是否满足了用户对该软件的所有需求?"。
- 验证强调用户需求。
软件验证
验证是确认软件是否满足业务要求并遵循正确的规范和方法进行开发的过程。
- 验证确保正在开发的产品符合设计规范。
- 验证回答了以下问题:"我们是否严格遵循所有设计规范来开发此产品?"
- 验证专注于设计和系统规范。
测试的目标是 -
错误 - 这些是开发人员实际犯下的编码错误。此外,软件输出和期望输出之间存在差异,这被视为错误。
故障 - 当存在错误时,就会发生故障。故障,也称为错误,是可能导致系统故障的错误的结果。
失败 - 失败是指系统无法执行所需的任务。当系统存在故障时,就会发生故障。
手动测试与自动测试
测试可以手动进行,也可以使用自动测试工具:
手动 - 此测试无需借助自动测试工具即可完成。软件测试人员为代码的不同部分和级别准备测试用例,执行测试并将结果报告给经理。
手动测试耗费时间和资源。测试人员需要确认是否使用了正确的测试用例。测试的主要部分涉及手动测试。
自动 此测试是借助自动测试工具完成的测试程序。可以使用自动测试工具克服手动测试的局限性。
测试需要检查网页是否可以在 Internet Explorer 中打开。这可以通过手动测试轻松完成。但要检查网络服务器是否能承受 100 万用户的负载,手动测试几乎是不可能的。
有软件和硬件工具可以帮助测试人员进行负载测试、压力测试和回归测试。
测试方法
测试可以基于两种方法进行 -
- 功能测试
- 实施测试
当测试功能而不考虑实际实施时,这被称为黑盒测试。另一方称为白盒测试,其中不仅测试功能,还分析其实施方式。
详尽测试是完美测试的最佳方法。测试输入和输出值范围内的每个可能值。如果值的范围很大,则不可能在现实世界场景中测试每个值。
黑盒测试
它用于测试程序的功能。它也被称为"行为"测试。在这种情况下,测试人员有一组输入值和相应的期望结果。在提供输入时,如果输出与期望结果匹配,则程序测试"正常",否则有问题。

在这种测试方法中,测试人员不知道代码的设计和结构,测试工程师和最终用户对软件进行此测试。
黑盒测试技术:
等价类 - 将输入分为相似的类。如果一个类的一个元素通过测试,则假定所有类都通过了测试。
边界值 - 将输入分为较高和较低的端值。如果这些值通过了测试,则假定其间的所有值也都可以通过。
因果图 - 在前两种方法中,每次只测试一个输入值。因(输入)-果(输出)是一种测试技术,其中以系统的方式测试输入值的组合。
成对测试 - 软件的行为取决于多个参数。在成对测试中,多个参数会成对测试其不同值。
基于状态的测试 - 系统在提供输入时会改变状态。这些系统根据其状态和输入进行测试。
白盒测试
它用于测试程序及其实现,以提高代码效率或结构。它也被称为"结构"测试。

在这种测试方法中,测试人员知道代码的设计和结构。代码程序员对代码进行此测试。
以下是一些白盒测试技术:
控制流测试 - 控制流测试的目的是设置涵盖所有语句和分支条件的测试用例。分支条件既要测试为真,又要测试为假,这样才能覆盖所有语句。
数据流测试 - 这种测试技术强调覆盖程序中包含的所有数据变量。它测试变量的声明和定义位置以及使用或更改的位置。
测试级别
测试本身可以在 SDLC 的各个级别定义。测试过程与软件开发并行进行。在进入下一阶段之前,将对一个阶段进行测试、验证和确认。
单独进行测试只是为了确保软件中没有隐藏的错误或问题。软件在各个级别进行测试 -
单元测试
编写代码时,程序员会对程序单元执行一些测试,以了解其是否无错误。测试采用白盒测试方法。单元测试可帮助开发人员确定程序的各个单元是否按要求运行且无错误。
集成测试
即使软件的各个单元单独运行良好,也需要确定如果将各个单元集成在一起是否也能无错误地运行。例如,参数传递和数据更新等。
系统测试
软件被编译为产品,然后作为一个整体进行测试。这可以使用以下一个或多个测试来完成:
功能测试 - 根据要求测试软件的所有功能。
性能测试 - 此测试证明软件的效率。它测试软件执行所需任务的有效性和平均时间。性能测试是通过负载测试和压力测试完成的,其中软件在各种环境条件下承受高用户和数据负载。
安全性和可移植性 - 当软件要在各种平台上运行并由许多人访问时,就会进行这些测试。
验收测试
当软件准备好交给客户时,它必须经过测试的最后阶段,即测试用户交互和响应。这很重要,因为即使软件符合所有用户要求,如果用户不喜欢它的外观或工作方式,它也可能被拒绝。
Alpha 测试 - 开发团队自己使用系统进行 alpha 测试,就像它在工作环境中使用一样。他们试图找出用户对软件中某些操作的反应,以及系统应如何响应输入。
Beta 测试 - 软件经过内部测试后,将交给用户在生产环境中使用,仅用于测试目的。这还不是交付的产品。开发人员预计此阶段的用户会带来微小的问题,但这些问题被忽略了。
回归测试
每当软件产品更新新代码、特性或功能时,都会对其进行彻底测试,以检测添加的代码是否会产生任何负面影响。这称为回归测试。
测试文档
测试文档在不同阶段准备 -
测试前
测试从测试用例生成开始。需要参考以下文档 –
SRS 文档 - 功能需求文档
测试政策文档 - 描述了在发布产品之前应进行多远的测试。
测试策略文档 - 提到了测试团队、责任矩阵以及测试经理和测试工程师的权利/责任的详细方面。
可追溯性矩阵文档 - 这是与需求收集过程相关的 SDLC 文档。随着新需求的出现,它们被添加到此矩阵中。这些矩阵帮助测试人员了解需求的来源。它们可以向前和向后追溯。
测试时
在开始和进行测试时可能需要以下文档:
测试用例文档 - 本文档包含需要进行的测试列表。它包括单元测试计划、集成测试计划、系统测试计划和验收测试计划。
测试说明 - 本文档详细描述了所有测试用例及其执行程序。
测试用例报告 - 本文档包含测试结果的测试用例报告。
测试日志 - 本文档包含每个测试用例报告的测试日志。
测试后
测试后可能会生成以下文档:
测试摘要 - 本测试摘要是对所有测试报告和日志的集体分析。它总结并得出结论,判断软件是否已准备好启动。如果软件已准备好发布,则在版本控制系统下发布。
测试与质量控制、质量保证和审计
我们需要了解软件测试与软件质量保证、软件质量控制和软件审计不同。
软件质量保证 - 这些是软件开发过程监控手段,通过这些手段可以确保所有措施都按照组织的标准采取。进行这种监控是为了确保遵循正确的软件开发方法。
软件质量控制 - 这是一个维护软件产品质量的系统。它可能包括软件产品的功能性和非功能性方面,从而增强组织的信誉。该系统确保客户收到符合其要求的优质产品,并且产品经过认证为"适合使用"。
软件审计 - 这是对组织用于开发软件的程序的审查。独立于开发团队的审计员团队负责检查软件流程、程序、要求和 SDLC 的其他方面。软件审计的目的是检查软件及其开发过程是否符合标准、规则和规定。