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

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

1、测试心理


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


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


2、测试分类


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

(1)黑盒测试

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

(2)白盒测试

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

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


3、测试原则


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

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

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

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

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

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

目录
相关文章
|
5天前
|
测试技术 数据库连接 数据库
【测试开发】基础篇 · 专业术语 · 软件测试生命周期 · bug的描述 · bug的级别 · bug的生命周期 · 处理争执
【测试开发】基础篇 · 专业术语 · 软件测试生命周期 · bug的描述 · bug的级别 · bug的生命周期 · 处理争执
12 0
|
5天前
|
敏捷开发 前端开发 安全
【测试开发】概念篇 · 测试相关基础概念 · 常见开发模型 · 常见测试模型
【测试开发】概念篇 · 测试相关基础概念 · 常见开发模型 · 常见测试模型
12 0
【测试开发】概念篇 · 测试相关基础概念 · 常见开发模型 · 常见测试模型
|
23小时前
|
机器学习/深度学习 人工智能 测试技术
提升软件测试效率:智能化测试工具的应用与展望
【5月更文挑战第19天】 在快速发展的软件行业中,保证产品质量的同时提高测试效率已成为一个关键挑战。传统的手动测试方法由于其耗时且易出错的局限性,逐渐不能满足现代软件开发的需求。智能化测试工具的出现为解决这一问题提供了新的思路。本文将探讨智能化测试工具如何通过自动化和人工智能技术优化测试流程,减少重复性工作,并预测未来测试工具的发展趋势。我们将分析这些工具在实际应用中的表现,以及它们对提高软件测试效率和准确性的潜在影响。
17 8
|
4天前
|
自然语言处理 测试技术 程序员
软件测试-----黑盒测试与白盒测试
软件测试-----黑盒测试与白盒测试
13 0
|
5天前
|
架构师 安全 Java
【测试开发】答疑篇 · 什么是软件测试
【测试开发】答疑篇 · 什么是软件测试
6 0
|
5天前
|
网络协议 安全 测试技术
性能工具之emqtt-bench BenchMark 测试示例
【4月更文挑战第19天】在前面两篇文章中介绍了emqtt-bench工具和MQTT的入门压测,本文示例 emqtt_bench 对 MQTT Broker 做 Beachmark 测试,让大家对 MQTT消息中间 BenchMark 测试有个整体了解,方便平常在压测工作查阅。
136 7
性能工具之emqtt-bench BenchMark 测试示例
|
5天前
|
机器学习/深度学习 数据采集 人工智能
【专栏】AI在软件测试中的应用,如自动执行测试用例、识别缺陷和优化测试设计
【4月更文挑战第27天】本文探讨了AI在软件测试中的应用,如自动执行测试用例、识别缺陷和优化测试设计。AI辅助工具利用机器学习、自然语言处理和图像识别提高效率,但面临数据质量、模型解释性、维护更新及安全性挑战。未来,AI将更注重用户体验,提升透明度,并在保护隐私的同时,通过联邦学习等技术共享知识。AI在软件测试领域的前景广阔,但需解决现有挑战。
|
5天前
|
测试技术
如何管理测试用例?测试用例有什么管理工具?YesDev
该文档介绍了测试用例和测试用例库的管理。测试用例是描述软件测试方案的详细步骤,包括测试目标、环境、输入、步骤和预期结果。测试用例库用于组织和管理这些用例,强调简洁性、完整性和可维护性。管理者可以创建、删除、重命名用例库,搜索和管理用例,以及通过层级目录结构来组织用例。此外,还支持通过Excel导入和导出测试用例,以及使用脑图查看用例关系。后台管理允许配置全局别名,如用例状态、优先级和执行结果。
|
5天前
|
机器学习/深度学习 人工智能 运维
深入探索软件测试:策略、工具与未来趋势
【5月更文挑战第14天】在软件开发的生命周期中,测试环节扮演着至关重要的角色。它不仅保证产品能够达到预定的质量标准,还有助于提前发现并修复潜在的缺陷,从而减少维护成本和提高用户满意度。本文将深入探讨当前软件测试领域的最佳实践,包括测试策略的制定、工具的选择以及面对快速变化的技术环境如何保持测试活动的前瞻性和灵活性。通过分析自动化测试、性能测试和安全测试等关键领域,本文旨在为读者提供一个全面的软件测试指南,同时对未来的发展趋势进行预测。
|
5天前
|
SQL 测试技术 网络安全
Python之SQLMap:自动SQL注入和渗透测试工具示例详解
Python之SQLMap:自动SQL注入和渗透测试工具示例详解
29 0

热门文章

最新文章