📜  软件测试概述

📅  最后修改于: 2021-01-07 06:29:04             🧑  作者: Mango


软件测试是根据从用户和系统规范收集的要求对软件进行评估。测试在软件开发生命周期的阶段级别或在程序代码的模块级别进行。软件测试包括验证和验证。

软件验证

验证是检查软件是否满足用户要求的过程。它在SDLC的末尾执行。如果软件符合软件的要求,则将对其进行验证。

  • 验证可确保正在开发的产品符合用户要求。
  • 验证回答了一个问题–“我们是否正在开发可从该软件中尝试所有用户需求的产品?”。
  • 验证强调用户需求。

软件验证

验证是确认软件是否满足业务要求的过程,并且是根据适当的规范和方法开发的。

  • 验证可确保正在开发的产品符合设计规范。
  • 验证回答了以下问题:“我们是否严格遵守所有设计规范来开发该产品?”
  • 验证集中在设计和系统规范上。

测试的目标是-

  • 错误-这些是开发人员所犯的实际编码错误。另外,软件输出和期望输出存在差异,被认为是错误。

  • 故障-当错误存在时,发生故障。故障(也称为错误)是错误的结果,可能导致系统故障。

  • 故障-据说故障是系统无法执行所需任务。当系统中存在故障时,即发生故障。

手动与自动测试

测试可以手动完成,也可以使用自动测试工具完成:

  • 手动-执行此测试无需借助自动测试工具。软件测试人员为代码的不同部分和级别准备测试用例,执行测试并将结果报告给经理。

    手动测试很耗时间和资源。测试人员需要确认是否使用了正确的测试用例。测试的大部分涉及手动测试。

  • 自动化此测试是借助自动化测试工具完成的测试过程。使用自动化测试工具可以克服手动测试的局限性。

测试需要检查是否可以在Internet Explorer中打开网页。这可以通过手动测试轻松完成。但是要检查Web服务器是否可以承受100万用户的负载,完全不可能进行手动测试。

有一些软件和硬件工具可以帮助测试人员进行负载测试,压力测试,回归测试。

测试方法

可以基于两种方法进行测试–

  • 功能测试
  • 实施测试

如果在不考虑实际实现的情况下测试功能,则称为黑盒测试。另一面被称为白盒测试,其中不仅要测试功能,还要分析其实现方式。

详尽的测试是进行完美测试的最佳方法。测试输入和输出值范围内的每个单个可能值。如果值的范围很大,则无法测试现实世界中的每个值。

黑匣子测试

它被执行以测试程序的功能。这也称为“行为”测试。在这种情况下,测试仪具有一组输入值和相应的期望结果。在提供输入时,如果输出与期望的结果匹配,则将程序测试为“正常”,否则为问题程序。

黑匣子测试

在这种测试方法中,测试人员不知道代码的设计和结构,并且测试工程师和最终用户对软件进行此测试。

黑匣子测试技术:

  • 等效类-输入分为相似的类。如果类的一个元素通过了测试,则假定所有类都通过了。

  • 边界值-输入分为较高和较低的最终值。如果这些值通过测试,则假定两者之间的所有值也可以通过。

  • 因果图-在上述两种方法中,一次仅测试一个输入值。原因(输入)–效果(输出)是一种测试技术,其中以系统方式测试输入值的组合。

  • 逐对测试-软件的行为取决于多个参数。在成对测试中,成对测试多个参数的不同值。

  • 基于状态的测试-系统在提供输入时更改状态。这些系统将根据其状态和输入进行测试。

白盒测试

进行测试程序及其实现,以提高代码效率或结构。这也称为“结构”测试。

白盒测试

在这种测试方法中,测试人员知道代码的设计和结构。代码的程序员对代码进行此测试。

以下是一些白盒测试技术:

  • 控制流测试控制流测试的目的是建立涵盖所有语句和分支条件的测试用例。测试分支条件的正确与否,以便覆盖所有语句。

  • 数据流测试-这种测试技术的重点是覆盖程序中包含的所有数据变量。它测试在何处声明和定义变量以及在何处使用或更改它们。

测试水平

可以在SDLC的各个级别定义测试本身。测试过程与软件开发并行进行。在进入下一个阶段之前,必须对一个阶段进行测试,验证和验证。

单独进行测试只是为了确保软件中没有隐藏的错误或问题。软件已在各个级别上进行了测试-

单元测试

在编码时,程序员对程序的那个部分执行一些测试,以了解它是否没有错误。测试是在白盒测试方法下进行的。单元测试可帮助开发人员确定程序的各个单元是否按要求工作并且没有错误。

整合测试

即使软件单元可以单独正常工作,也需要找出将它们集成在一起是否也可以正常工作。例如,参数传递和数据更新等。

系统测试

将该软件编译为产品,然后进行整体测试。这可以使用以下一项或多项测试来完成:

  • 功能测试-根据要求测试软件的所有功能。

  • 性能测试-此测试证明软件的效率。它测试软件完成所需任务的效率和平均时间。性能测试是通过负载测试和压力测试来完成的,其中将软件置于高用户和各种环境条件下的数据负载下。

  • 安全性和可移植性-当该软件可以在各种平台上运行并且可以被许多人访问时,才进行这些测试。

验收测试

当软件准备好交付给客户时,它必须经历测试的最后阶段,在该阶段中要测试用户的交互和响应。这很重要,因为即使软件符合所有用户要求,并且用户不喜欢它的外观或工作方式,也可能会拒绝该软件。

  • Alpha测试-开发人员团队本身通过使用该系统执行Alpha测试,就像在工作环境中使用该系统一样。他们试图找出用户如何对软件中的某些动作做出反应以及系统应如何响应输入。

  • Beta测试-在对该软件进行内部测试之后,将其移交给用户以仅在测试环境下在其生产环境中使用该软件。这还不是交付的产品。开发人员期望在此阶段用户会遇到一些细微的问题,这些问题被忽略了。

回归测试

每当使用新代码,功能或特性更新软件产品时,都会对其进行彻底测试,以检测所添加代码是否有负面影响。这称为回归测试。

测试文件

测试文件在不同阶段准备-

测试之前

测试从生成测试用例开始。需要以下文件作为参考–

  • SRS文档-功能需求文档

  • 测试政策文档-描述发布产品之前应进行的测试。

  • 测试策略文档-提及测试团队,责任矩阵以及测试经理和测试工程师的权利/责任的详细信息。

  • 可追溯性矩阵文档-这是SDLC文档,与需求收集过程有关。随着新需求的到来,它们被添加到该矩阵中。这些矩阵可以帮助测试人员了解需求的来源。它们可以向前和向后追溯。

在测试中

在开始和完成测试时,可能需要以下文档:

  • 测试用例文档-该文档包含需要执行的测试列表。它包括单元测试计划,集成测试计划,系统测试计划和验收测试计划。

  • 测试描述-本文档详细描述了所有测试用例以及执行它们的过程。

  • 测试案例报告-该文档包含测试结果的测试案例报告。

  • 测试日志-本文档包含每个测试案例报告的测试日志。

经过测试

经过测试可能会产生以下文件:

  • 测试摘要-此测试摘要是对所有测试报告和日志的集体分析。它总结并总结了该软件是否已准备好启动。如果准备启动,则该软件将在版本控制系统下发布。

测试与质量控制,质量保证和审核

我们需要了解,软件测试不同于软件质量保证,软件质量控制和软件审核。

  • 软件质量保证-这些是软件开发过程的监视手段,通过这种手段可以确保已按照组织的标准采取了所有措施。进行此监视是为了确保遵循正确的软件开发方法。

  • 软件质量控制-这是维护软件产品质量的系统。它可能包括软件产品的功能性和非功能性方面,可以增强组织的信誉。该系统可确保客户收到符合其要求的优质产品,并证明该产品“适合使用”。

  • 软件审核-这是对组织用于开发软件的过程的审查。独立于开发团队的审核员团队将检查软件流程,过程,要求和SDLC的其他方面。软件审核的目的是检查软件及其开发过程是否符合标准,规则和法规。