在线客服
扫描二维码
下载博学谷APP扫描二维码
关注博学谷微信公众号
软件测试对于减少程序BUG有多大帮助?有经验的程序员通常认为测试与代码同等重要,测试可以减少代码变更或扩展的不确定性。测试应该方便阅读简单且能快速运行,使用的内存也不会很多。
常见的软件错误可能会导致程序突然终止甚至损坏数据库,后果可能会非常惨重:1996年,由于一个软件错误导致阿丽亚娜-5 运载火箭爆炸。而这个错误是由浮点数数转换整数引起的,这是一个16位的有符号整数只能表示小整数值。该整数无法表示浮点数而程序在检测到这个意外的错误时停止了运行。
触发这个错误的功能不是必需的,只是作为一个子系统从早期的阿丽亚娜火箭模型中集成而来的。按照 1996 年的物价计算,这个错误的成本大约为 4 亿美元。生产正确软件的重要性早已广为人知。
几十年来优秀的科学家和工程师一直在努力确保正确性的常见策略有以下几种。例如,要做一项复杂的科学计算,那么就需要成立几个独立的团队来计算答案。
如果所有团队得出的答案都相同,则可以得出结论这个答案是正确的。这种冗余策略通常用于防范与硬件相关的故障。然而不幸的是,编写多个版本的软件通常是不切实际的。许多程序员希望能证明一个程序是正确的,抛开硬件故障不谈必须确保软件不会遇到任何错误。事实上如今的软件非常成熟可以证明程序是正确的。
程序员逐步理解了测试软件的必要性,但并非所有代码都需要测试,通常原型或示例就无需进一步验证。但任何在专业环境中设计完成、必须实现的重要功能至少应该完成部分测试。测试能够降低将来不得不面对灾难状况的可能性。
常见的测试主要有两种,单元测试和集成测试。
单元测试旨在测试软件程序的特定组件。例如,针对单个函数的单元测试。在大多数情况下,单元测试都是自动完成的,程序员只需按下按钮或输入命令,即可执行这些测试。单元测试通常会避免获取有价值的资源,例如在磁盘上创建大型文件或建立网络连接。单元测试通常不涉及操作系统的设置。
集成测试旨在验证完整的应用程序。通常这些测试需要访问网络,有时还需要访问大量数据。集成测试有时需要人工干预,而且还需要应用程序的特定知识。集成测试可能需要设置操作系统和安装软件。集成测试也可以自动化,至少应该部分自动化。大多数情况下,集成测试都会以单元测试作为基础。
单元测试通常会作为持续集成的一部分。持续集成通常会自动执行特定任务,包括单元测试、备份、应用加密签名等。持续集成可以定期执行也可以在代码发生变更时执行。
单元测试可用于建立软件开发流程和指导软件开发。在编写代码本身之前,可以先编写这些测试,也就是常说的“测试驱动开发”。通常,测试是在功能开发完成之后编写的。编写单元测试和开发功能可以由不同的程序员担任。有时,由其他开发人员提供的测试更容易发现错误,因为他们可能会做出不同的假设。
有经验的程序员通常认为测试与代码同等重要。因此将一半的工作时间花在编写测试上的情况并不少见。虽然会影响编写代码的速度,然而从长远来看,测试是一项投资,因此通常会节省时间。通常没有经过良好测试的软件的更新难度会更大。测试可以减少代码变更或扩展的不确定性。
测试应该方便阅读,简单且能快速运行,而且使用的内存也不会很多。然而,很难准确定义测试的质量。常见的统计方法有几种。例如,可以计算测试覆盖的代码行数。这里,不得不讨论一下测试覆盖率。100%的覆盖率意味着所有代码都被测试到了。然而在实践中覆盖率无法很好地表现测试的质量。
所有计算机系统都有缺陷。硬件随时可能出现故障。即使硬件可靠,程序员也几乎不可能预测软件在运行中遇到的所有情况。无论你是谁,也无论你多么努力地工作,你的软件也不会完美。尽管如此还是应该竭尽所能编写正确的代码:能够满足用户的期望。
虽然无需编写测试也可以编写正确的代码,但测试套件的好处在难度或规模较大的项目中是切实可见的。许多有经验的程序员都会拒绝使用未经测试的软件组件。编写测试的好习惯可以帮助你成长为一名更好的程序员。在编写测试的过程中你会进一步意识到人类的局限性。在与其他程序员和用户交互时,如果有一个测试套件就可以更好地思考他们的反馈。
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
零基础软件测试学什么?学软件开发难吗
软件测试所在的IT行业门槛低简单易学且薪资高,小白初入IT行业的不二选择。零基础软件测试学什么?软件测试学习课程分为三个阶段,软件测试基础、编程开发技术、自动化测试工具。软件测试就是利用测试工具按照测试方案和流程对产品进行功能和性能测试,甚至根据需要编写不同的测试工具,设计和维护测试系统,对测试方案可能出现的问题进行分析和评估。
7980
2019-05-30 10:02:15
软件测试工程师你的测试用例应该具备哪些特点?
软件测试工程师最核心的工作之一就是编写测试用例。测试用例是是测试执行的依据,也是测试具体量化的方式之一。因此在编写测试用例的过程中,一定要保障其完整性以及完善性,那一个合格的测试用例应该具备哪些特点呢?软件测试工程师应该如何编写测试用例呢?
10550
2019-08-14 10:21:21
软件测试容易学吗?软件测试自学步骤
软件测试容易学吗?事实上,大多数非计算机出身的初学者,通过正确的学习方法也能比较容易的学会软件测试,几个月就可以上手工作。当然如何学软件测试是学好软件测试的关键。在自学的路上,不少学习者就是没有掌握正确的学习方法,而走了不少弯路,从而认为学习软件测试很难。接下来小编就来和大家谈谈软件测试自学步骤。
4874
2019-08-26 18:32:43
软件测试工作流程是怎样的?有哪些注意事项?
软件测试工作流程是怎样的?一般来说,分为以下好几步:需求评审、制定测试计划、测试用例设计、测试用例评审、冒烟测试、一轮测试、N轮测试、回归测试、撰写文档。在这些工作流程中我们又有哪些注意事项呢?下面小编就来详细分析一下软件测试的工作流程。
8444
2019-08-30 18:32:02
自动化测试工具有哪些?好用的自动化测试工具推荐
为了提高工作效率和节省人力资源,自动化测试应运而生。正如古语说的那样,工欲善其事必先利其器。对于许多软件测试者来讲,好用的自动化测试工具是必不可少的。本文为大家总结了几款自动化测试工具,有Appium、Selenium、Robot、QTP,并详细地介绍了它们的优势和特点,希望对大家能够有所帮助。
5564
2019-12-24 10:16:24