在线客服
扫描二维码
下载博学谷APP
扫描二维码
关注博学谷微信公众号
软件测试对于减少程序BUG有多大帮助?有经验的程序员通常认为测试与代码同等重要,测试可以减少代码变更或扩展的不确定性。测试应该方便阅读简单且能快速运行,使用的内存也不会很多。

常见的软件错误可能会导致程序突然终止甚至损坏数据库,后果可能会非常惨重:1996年,由于一个软件错误导致阿丽亚娜-5 运载火箭爆炸。而这个错误是由浮点数数转换整数引起的,这是一个16位的有符号整数只能表示小整数值。该整数无法表示浮点数而程序在检测到这个意外的错误时停止了运行。
触发这个错误的功能不是必需的,只是作为一个子系统从早期的阿丽亚娜火箭模型中集成而来的。按照 1996 年的物价计算,这个错误的成本大约为 4 亿美元。生产正确软件的重要性早已广为人知。
几十年来优秀的科学家和工程师一直在努力确保正确性的常见策略有以下几种。例如,要做一项复杂的科学计算,那么就需要成立几个独立的团队来计算答案。
如果所有团队得出的答案都相同,则可以得出结论这个答案是正确的。这种冗余策略通常用于防范与硬件相关的故障。然而不幸的是,编写多个版本的软件通常是不切实际的。许多程序员希望能证明一个程序是正确的,抛开硬件故障不谈必须确保软件不会遇到任何错误。事实上如今的软件非常成熟可以证明程序是正确的。
程序员逐步理解了测试软件的必要性,但并非所有代码都需要测试,通常原型或示例就无需进一步验证。但任何在专业环境中设计完成、必须实现的重要功能至少应该完成部分测试。测试能够降低将来不得不面对灾难状况的可能性。
常见的测试主要有两种,单元测试和集成测试。
单元测试旨在测试软件程序的特定组件。例如,针对单个函数的单元测试。在大多数情况下,单元测试都是自动完成的,程序员只需按下按钮或输入命令,即可执行这些测试。单元测试通常会避免获取有价值的资源,例如在磁盘上创建大型文件或建立网络连接。单元测试通常不涉及操作系统的设置。
集成测试旨在验证完整的应用程序。通常这些测试需要访问网络,有时还需要访问大量数据。集成测试有时需要人工干预,而且还需要应用程序的特定知识。集成测试可能需要设置操作系统和安装软件。集成测试也可以自动化,至少应该部分自动化。大多数情况下,集成测试都会以单元测试作为基础。
单元测试通常会作为持续集成的一部分。持续集成通常会自动执行特定任务,包括单元测试、备份、应用加密签名等。持续集成可以定期执行也可以在代码发生变更时执行。
单元测试可用于建立软件开发流程和指导软件开发。在编写代码本身之前,可以先编写这些测试,也就是常说的“测试驱动开发”。通常,测试是在功能开发完成之后编写的。编写单元测试和开发功能可以由不同的程序员担任。有时,由其他开发人员提供的测试更容易发现错误,因为他们可能会做出不同的假设。
有经验的程序员通常认为测试与代码同等重要。因此将一半的工作时间花在编写测试上的情况并不少见。虽然会影响编写代码的速度,然而从长远来看,测试是一项投资,因此通常会节省时间。通常没有经过良好测试的软件的更新难度会更大。测试可以减少代码变更或扩展的不确定性。
测试应该方便阅读,简单且能快速运行,而且使用的内存也不会很多。然而,很难准确定义测试的质量。常见的统计方法有几种。例如,可以计算测试覆盖的代码行数。这里,不得不讨论一下测试覆盖率。100%的覆盖率意味着所有代码都被测试到了。然而在实践中覆盖率无法很好地表现测试的质量。
所有计算机系统都有缺陷。硬件随时可能出现故障。即使硬件可靠,程序员也几乎不可能预测软件在运行中遇到的所有情况。无论你是谁,也无论你多么努力地工作,你的软件也不会完美。尽管如此还是应该竭尽所能编写正确的代码:能够满足用户的期望。
虽然无需编写测试也可以编写正确的代码,但测试套件的好处在难度或规模较大的项目中是切实可见的。许多有经验的程序员都会拒绝使用未经测试的软件组件。编写测试的好习惯可以帮助你成长为一名更好的程序员。在编写测试的过程中你会进一步意识到人类的局限性。在与其他程序员和用户交互时,如果有一个测试套件就可以更好地思考他们的反馈。
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
软件测试需要学什么?零基础如何入门软件测试?
软件测试需要学什么?零基础如何入门软件测试?软件测试需要学习测试环境、网络环境、windows环境、数据库管理、编程技巧(java编程设计,脚本语言,设计工具,XML编程、软件测试技术,测试理论,方法,流程,文档写作,测试工具,自动测试、测试技术实践等内容。
13755
2019-05-15 10:35:04
女生可以做软件测试吗?
在互联网行业,女生大部分都是从事UI或者运营的工作。也有少部分从事编程或者测试的工作。由于编程和测试工作时间长,工作强度比较大,甚至需要的专业水平也较高,很多人就认为女孩子不适合做这个行业。其实并不是这样的,在软件测试行业,女生虽然有有一定的弊端,但相对男生,女生更适合做软件测试。下面就为大家详细分析一下为什么女生更加适合!
9204
2019-06-05 16:44:52
为什么要学软件测试?软件测试工程师有什么优势?
大部分人一直都在关注软件工程师,而忽略了测试工程师的重要性。软件测试是通过模拟真实使用场景来检验软件正确性、完整性、安全性以及质量的过程。是软件产品上线前的自我测试。这样不但可以提高软件产品的生产效率、降低企业损失,同时也能为产品赢得更好的口碑。那为什么要学软件测试呢?软件测试工程师有什么优势呢?
10430
2019-08-14 10:19:36
软件测试是做什么的?
软件测试顾名思义就是对软件产品进行测试,从而发现其中的问题。然而在实际岗位中软件测试的具体工作不仅仅是找问题那么简单。那软件测试到底是做什么的呢?
8698
2019-10-23 18:58:56
软件测试中的Bug基础知识总结
一个优秀的软件测试师不仅仅能够发现软件中的bug,还能分析出bug产生的原因。本文总结了一些软件测试入门必须要了解和学习的BUG基础知识,主要包括BUG定义、测试BUG的等级划分、Bug流程以及Bug解决优先级等内容。下面一起来梳理一遍这些基础知识吧!
7925
2020-07-08 14:44:42
