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