【软件测试】2、软件测试的概念和基本原则

简介: 1、测试心理 上文中曾经提到过研发和测试在思路和观念上的一些矛盾。多数情况下,研发工程师并不精通软件测试的思路,因此可能会认为测试无非就是走一个流程,认为“软件测试就是证明软件不存在错误的过程”,或者“测试的目的在于证明软件能正确完成其功能”,或者“演示软件做了应该做的流程”。

1、测试心理


上文中曾经提到过研发和测试在思路和观念上的一些矛盾。多数情况下,研发工程师并不精通软件测试的思路,因此可能会认为测试无非就是走一个流程,认为“软件测试就是证明软件不存在错误的过程”,或者“测试的目的在于证明软件能正确完成其功能”,或者“演示软件做了应该做的流程”。


实际上,几乎所有的程序代码在一开始都存在或大或小的错误,而测试的实际意义在于为了发现各种错误而执行的过程。


2、测试分类


软件测试通常有两种不同的策略:黑盒测试和白盒测试。

(1)黑盒测试

所谓黑盒测试,即为数据驱动的测试,或者叫做输入/输出驱动测试。黑盒测试不需要了解程序内部的结构,完全依赖输入和输出数据的关系判断软件的正确性。要在黑盒测试中确保完全避免所有错误,则需要遍历所有可能的输入数据,实际上这是完全不可能实现的。

(2)白盒测试

白盒测试是与黑盒测试相对应的另一种测试策略,在这种测试方法中,测试者将检查代码内部的运行流程,确保正确的路程产生正确的结果。同样,要保证白盒测试避免所有错误,则需要遍历程序运行的所有可能流程,而这更是不可能的任务。

因此综上所述,无论黑盒或白盒测试都不能单独保证代码的质量。在实践中,通常是将二者有机结合形成一种不完美却合理的方法。


3、测试原则


(1)测试用例必须定义对某个输入的预期输出或结果:不应该出现含糊不清的输入-输出关系,无论正确或错误的结果都应该有合理的判断。

(2)研发工程师和开发组织不应该测试自己的代码:原因已经在上一篇叙述过,主要是思维定式的问题。但是,由于我们这一系列博文主要是针对研发工程师,因此我们的思路却是反其道而行之,更加强调研发工程师的自测,用这种方式突破思维定式的限制,写出更加优秀的代码。

(3)测试用例不仅仅应当依据有效和预期的输入,更多地应当考虑无效和未预料到的情况:该原则呼应了软件测试的实际意义——为发现各种错误而测试。

(4)测试时不仅仅应该考虑软件“是否完成了应该完成的”,也要考虑“是否避免了不该做的”:原理同上。

(5)保留测试用例用于回归测试:在软件的bug修复后往往需要重新测试,如果不能保证测试用例一致,那么回归测试可能会漏掉某些新出现的故障。

(6)已发现的错误数量通常和仍然隐藏的错误数量成正比:错误总是倾向于聚集存在。

目录
相关文章
|
12天前
|
敏捷开发 Java 测试技术
探索软件测试中的自动化测试框架
在软件开发的生命周期中,软件测试扮演着至关重要的角色。随着技术的不断进步和软件项目的日益复杂化,传统的手动测试方法已经无法满足高效、准确的测试需求。自动化测试作为一种提高测试效率和质量的有效手段,越来越受到开发者和测试者的青睐。本文将深入探讨自动化测试框架的重要性、常见的自动化测试工具以及如何选择合适的自动化测试框架。
37 10
|
20天前
|
机器学习/深度学习 前端开发 测试技术
探索软件测试中的自动化测试框架选择与优化策略####
本文深入探讨了在当前软件开发生命周期中,自动化测试框架的选择对于提升测试效率、保障产品质量的重要性。通过分析市场上主流的自动化测试工具,如Selenium、Appium、Jest等,结合具体项目需求,提出了一套系统化的选型与优化策略。文章首先概述了自动化测试的基本原理及其在现代软件开发中的角色变迁,随后详细对比了各主流框架的功能特点、适用场景及优缺点,最后基于实际案例,阐述了如何根据项目特性量身定制自动化测试解决方案,并给出了持续集成/持续部署(CI/CD)环境下的最佳实践建议。 --- ####
|
22天前
|
jenkins 测试技术 持续交付
软件测试中的自动化测试策略
在当今快速发展的软件行业中,自动化测试已成为确保软件质量和效率的关键工具。本文将探讨自动化测试的重要性、实施策略以及面临的挑战,旨在为软件开发团队提供实用的指导和建议。
|
21天前
|
测试技术 持续交付
软件测试中的自动化测试策略与最佳实践
【10月更文挑战第31天】 在当今快速迭代的软件开发环境中,自动化测试成为确保软件质量和加速产品上市的关键。本文探讨了自动化测试的重要性、实施策略以及一些最佳实践。通过分析不同类型的自动化测试工具和框架,本文旨在为软件开发团队提供一套实用的指导方案,以提高测试效率和质量。
|
18天前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
52 3
|
2月前
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
68 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
|
3月前
|
移动开发 JSON Java
Jmeter实现WebSocket协议的接口测试方法
WebSocket协议是HTML5的一种新协议,实现了浏览器与服务器之间的全双工通信。通过简单的握手动作,双方可直接传输数据。其优势包括极小的头部开销和服务器推送功能。使用JMeter进行WebSocket接口和性能测试时,需安装特定插件并配置相关参数,如服务器地址、端口号等,还可通过CSV文件实现参数化,以满足不同测试需求。
250 7
Jmeter实现WebSocket协议的接口测试方法
|
3月前
|
JSON 移动开发 监控
快速上手|HTTP 接口功能自动化测试
HTTP接口功能测试对于确保Web应用和H5应用的数据正确性至关重要。这类测试主要针对后台HTTP接口,通过构造不同参数输入值并获取JSON格式的输出结果来进行验证。HTTP协议基于TCP连接,包括请求与响应模式。请求由请求行、消息报头和请求正文组成,响应则包含状态行、消息报头及响应正文。常用的请求方法有GET、POST等,而响应状态码如2xx代表成功。测试过程使用Python语言和pycurl模块调用接口,并通过断言机制比对实际与预期结果,确保功能正确性。
262 3
快速上手|HTTP 接口功能自动化测试
|
3月前
|
JavaScript 前端开发 测试技术
ChatGPT与接口测试
ChatGPT与接口测试,测试通过
49 5
|
2月前
|
JavaScript 前端开发 API
vue尚品汇商城项目-day02【9.Home组件拆分+10.postman测试接口】
vue尚品汇商城项目-day02【9.Home组件拆分+10.postman测试接口】
41 0