软件工程 测试
软件测试是根据从用户和系统规范收集的需求对软件进行评估。测试在软件开发生命周期的阶段级别或程序代码的模块级别进行。软件测试包括验证和确认。
软件验证
验证是检查软件是否满足用户要求的过程。它在 SDLC 结束时执行。如果软件符合它的要求,他就会被验证。
- 验证确保正在开发的产品是按用户的要求。
- 验证回答了这个问题 - “我们是否正在开发能够从该软件中满足用户所有需求的产品?"。
- 验证注重用户的需求。
软件确认
确认是确认软件是否满足业务需求的过程,并按照正确的规范和方法进行开发。
- 确认确保正在开发的产品是符合设计规范。
- 确认回答了这个问题 - “我们是否严格遵循所有设计规范来开发这个产品?"。
- 确认集中在设计和系统规范上。
测试的目标是:
- 错误:这些是开发人员所犯的实际编码错误。此外,软件的输出与期望的输出存在差异,被视为错误。
- 故障:当错误存在时发生故障。故障,也称为错误,是可能导致系统故障的报错结果。
- 失败:失败是指系统无法执行所需的任务。故障发生在系统存在故障时。。
手动与自动测试
测试可以手动完成,也可以使用自动化测试工具:
- 手动 - 此测试是在不借助自动化测试工具的情况下执行的。软件测试人员为代码的不同部分和级别准备测试用例,执行测试并将结果报告给经理。
手动测试既费时又费资源。测试人员需要确认是否使用了正确的测试用例。测试的主要部分设计手动测试。 - 自动 - 该测试是借助自动化测试工具完成的测试过程。使用自动化测试工具可以克服手动测试的局限性。
测试需要检查网页是否可以在 Internet Explorer 中打开。这可以通过手动测试轻松完成。但是要检查网络服务器是否可以承受 100 万用户的负载,手动测试是完全不可能的。
有软件和硬件工具可以帮助测试人员进行负载测试、压力测试、回归测试。
测试方法
可以基于两种方式进行测试:
- 功能测试
- 实施测试
当在不考虑实际实现的情况下测试功能时,它被称为黑盒测试。另一方面被称为白盒测试,其中不仅测试功能,还分析其实现方式。
详尽的测试是完美测试的最佳方法。测试输入和输出值范围内的每个可能值。如果值的范围很大,则不可能在现实世界场景中测试每个值。
黑盒测试
执行它是为了测试程序的功能,它也被称为“行为”测试。在这种情况下,测试仪具有一组输入值和相应的期望结果。在提供输入时,如果输出与期望的结果匹配,则程序被测试为“OK”,否则就会出现问题。
在这种测试方法中,测试人员不知道代码的设计和结构,测试工程师和最终用户对软件进行这种测试。
黑盒测试技术:
- 等价类 - 输入被分成类似的类。如果一个类中的一个元件通过了测试,则假定所有类都通过了。
- 边界值 - 输入被分为较高端值和较低端值。如果这些值通过测试,则假定它们之间的所有值也可以通过。
- 因果图 - 在之前的两种方法中,一次只测试一个输入值。原因(输入) - 效果(输出)是一种测试技术,其中以系统的方式测试输入值的组合。
- 成对测试 - 软件的行为取决于多个参数。在成对测试中,对多个参数的不同值进行成对测试。
- 基于状态的测试 - 系统在提供输入时改变状态。这些系统根据它们的状态和输入进行测试。
白盒测试
它用于测试程序及其实现,以提高代码效率或结构。它也被称为“结构”测试。
在这种测试方法中,测试人员知道代码的设计和结构。代码的程序员对代码进行此测试。
以下是一些白盒测试技术:
- 控制流测试 - 控制流测试的目的建立涵盖所有语句和分支条件的测试用例。测试分支条件的真假,以便覆盖所有语句。
- 数据流测试 - 这种测试技术强调覆盖程序中包含的所有程序变量。它测试变量的声明和定义位置以及它们被使用或更改的位置。
测试级别
测试本身可以在 SDLC 的各个级别进行定义。测试过程与软件开发并行运行。在进入下一阶段之前,需要对一个阶段进行测试、验证和确认。
单独进行测试只是为了确保软件中没有隐藏的错误或问题。软件在不同级别上进行测试:
单元测试
在编码时,程序员对该程序单元执行一些测试以了解它是否没有错误。测试是在白盒测试方法下进行的。单元测试帮助开发人员确定程序的各个单元是否按要求工作并且没有错误。
集成测试
即使软件单元单独运行良好,也需要确定这些单元如果集成在一起是否也能正常工作。例如,参数传递和数据更新等。
系统测试
软件被编译为产品,然后作为一个整体进行测试。这可以使用以下一项或多项测试来完成:
- 功能测试 - 根据要求测试软件的所有功能。
- 性能测试 - 该测试证明了该软件的效率。它测试软件完成所需任务的有效性和平均时间。性能测试通过负载测试和压力测试来完成,其中软件在各种环境条件下处于高用户和数据负载下。
- 安全性和便携性 - 这些测试是在软件要在各种平台上运行并由多人访问时完成的。
验收测试
当软件准备交给客户就必须经过测试,它是用户交互和响应测试的最后阶段。这是很重要的,因为即使软件符合所有用户要求,并且如果用户不喜欢它的外观和工作方式,它也可能被拒绝。
- Alpha测试 - 开发团队自己通过使用系统来执行 alpha 测试,就好像它是在工作环境中使用一样。他们试图找出用户将如何对软件中的某些操作做出反应以及系统应如何响应输入。
- Beta测试 - 软件经过内部测试后,交给用户在生产环境下使用,仅供测试使用。这还不是交付的产品。开发者期望用户在这个阶段会带来细微的问题,这些问题被跳过了。
回归测试
每当使用新代码、特性或功能更新软件产品时,都会对其进行彻底测试,以检测添加的代码是否有任何负面影响。这称为回归测试。
测试文档
测试文档在不同阶段准备:
测试前
测试从测试用例生成开始,需要以下文件作为参考:
- SRS文档 - 功能需求文档。
- 测试策略文档 - 这描述了在发布产品之前应该进行多远的测试。
- 测试战略文档 - 这提到了测试团队、责任矩阵以及测试经理和测试工程师的权利、责任的细节方面。
- 可追溯矩阵文档 - 这是 SDLC 文档,与需求收集过程相关。随着新需求的出现,它们被添加到这个矩阵中。这些矩阵帮助测试人员了解需求的来源。它们可以向前和向后追溯。
在接受测试时
在开始和进行测试时可能需要以下文档:
- 测试案例文档 - 本文档包含需要进行的测试列表。它包括单元测试计划、集成测试计划、系统测试计划和验收测试计划。
- 测试说明 - 本文档详细描述了所有测试用例和执行它们的过程。
- 测试案例报告 - 本文档包含作为测试结果的测试用例报告。
- 测试日志 - 本文档包含每个测试用例报告的测试日志。
测试后
测试后可能会生成以下文件:
- 测试总结 - 此测试总结是对所有测试报告和日志的集体分析。它总结并推断了软件是否准备好启动。如果准备好启动,该软件将在版本控制系统下发布。
测试与质量控制,质量保证和审计
我们需要了解软件测试不同于软件质量保证、软件质量控制和软件审计。
- 软件质量保证 - 这些是软件开发过程监控手段,通过它可以确保所有措施都按照组织标准采取。进行这种监视是为了确保遵循正确的软件开发方法。
- 软件质量控制 - 这是一个维护软件产品质量的系统。它可能包括软件产品的功能性和非功能性方面,从而增强组织的商誉。该系统确保客户收到符合其要求的优质产品,并且产品被认证为“适合使用”。
- 软件审计 - 这是对组织用于开发软件的程序的审计。独立于开发团队的审计员团队检查 SDLC 的软件过程、程序、要求和其他方面。软件审计的目的是检查软件及其开发过程是否符合标准、规则和规定。