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

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

1、测试心理


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


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


2、测试分类


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

(1)黑盒测试

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

(2)白盒测试

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

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


3、测试原则


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

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

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

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

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

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

目录
相关文章
|
2月前
|
Java 测试技术 Maven
JAVA单元测试概念与实战
单元测试是软件开发中的一个测试方法,用于验证软件代码中最小的、独立的单元是否按照预期工作。在Java中,这通常指的是单个的方法或者一个类的个别功能。单元测试的目的是隔离代码的每个部分,并确保各个部分是正确的。
51 4
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
提升软件测试效率与质量:AI驱动的自动化测试策略
【2月更文挑战第19天】 在快速迭代的软件发展环境中,传统的手动测试方法已无法满足高效率和高质量的要求。本文探讨了人工智能(AI)技术如何革新现有的软件测试流程,通过引入AI驱动的自动化测试策略,旨在提高测试覆盖率,减少人为错误,优化资源分配,并缩短产品上市时间。我们将分析AI在识别潜在缺陷、生成测试用例、执行测试以及结果分析中的应用,并讨论实施这些策略时可能遇到的挑战和限制。
106 3
|
13天前
|
jenkins 测试技术 持续交付
软件测试|docker搭建Jenkins+Python+allure自动化测试环境
通过以上步骤,你可以在Docker中搭建起Jenkins自动化测试环境,实现Python测试的自动化执行和Allure报告生成。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
33 6
|
24天前
|
安全 测试技术
【软件设计师备考 专题 】软件测试的原则与方法:确保软件质量的关键步骤
【软件设计师备考 专题 】软件测试的原则与方法:确保软件质量的关键步骤
41 0
|
28天前
|
机器学习/深度学习 人工智能 自然语言处理
提升软件测试效率:AI驱动的自动化测试策略
【2月更文挑战第30天】随着人工智能(AI)在软件开发周期中的日益普及,其在提高软件测试效率方面的潜力正受到越来越多的关注。本文探讨了如何通过集成AI技术来优化自动化测试流程,从而减少重复工作、提高错误检测率和加快反馈速度。我们将分析当前AI在自动化测试中的应用,并提出一系列策略以利用AI改进测试案例生成、执行和维护过程。
65 0
|
2月前
|
关系型数据库 MySQL 测试技术
【软件测试】 初识软件测试
【软件测试】 初识软件测试
|
9天前
|
测试技术 C语言
网站压力测试工具Siege图文详解
网站压力测试工具Siege图文详解
19 0
|
1月前
|
JavaScript jenkins 测试技术
这10款性能测试工具,收藏起来,测试人的工具箱!
这10款性能测试工具,收藏起来,测试人的工具箱!
|
1月前
|
人工智能 监控 测试技术
利用AI辅助工具提升软件测试效率
【2月更文挑战第17天】 随着科技的不断发展,人工智能(AI)在各个领域的应用越来越广泛。在软件测试领域,AI技术也发挥着重要作用。本文将探讨如何利用AI辅助工具提升软件测试效率,包括自动化测试、智能缺陷识别和预测等方面。通过引入AI技术,软件测试过程将变得更加高效、准确和可靠。
159 1
|
1月前
|
Web App开发 前端开发 测试技术
探索自动化测试工具:Selenium的威力与应用
探索自动化测试工具:Selenium的威力与应用
探索自动化测试工具:Selenium的威力与应用