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

常见的软件错误可能会导致程序突然终止甚至损坏数据库,后果可能会非常惨重:1996年,由于一个软件错误导致阿丽亚娜-5 运载火箭爆炸。而这个错误是由浮点数数转换整数引起的,这是一个16位的有符号整数只能表示小整数值。该整数无法表示浮点数而程序在检测到这个意外的错误时停止了运行。
触发这个错误的功能不是必需的,只是作为一个子系统从早期的阿丽亚娜火箭模型中集成而来的。按照 1996 年的物价计算,这个错误的成本大约为 4 亿美元。生产正确软件的重要性早已广为人知。
几十年来优秀的科学家和工程师一直在努力确保正确性的常见策略有以下几种。例如,要做一项复杂的科学计算,那么就需要成立几个独立的团队来计算答案。
如果所有团队得出的答案都相同,则可以得出结论这个答案是正确的。这种冗余策略通常用于防范与硬件相关的故障。然而不幸的是,编写多个版本的软件通常是不切实际的。许多程序员希望能证明一个程序是正确的,抛开硬件故障不谈必须确保软件不会遇到任何错误。事实上如今的软件非常成熟可以证明程序是正确的。
程序员逐步理解了测试软件的必要性,但并非所有代码都需要测试,通常原型或示例就无需进一步验证。但任何在专业环境中设计完成、必须实现的重要功能至少应该完成部分测试。测试能够降低将来不得不面对灾难状况的可能性。
常见的测试主要有两种,单元测试和集成测试。
单元测试旨在测试软件程序的特定组件。例如,针对单个函数的单元测试。在大多数情况下,单元测试都是自动完成的,程序员只需按下按钮或输入命令,即可执行这些测试。单元测试通常会避免获取有价值的资源,例如在磁盘上创建大型文件或建立网络连接。单元测试通常不涉及操作系统的设置。
集成测试旨在验证完整的应用程序。通常这些测试需要访问网络,有时还需要访问大量数据。集成测试有时需要人工干预,而且还需要应用程序的特定知识。集成测试可能需要设置操作系统和安装软件。集成测试也可以自动化,至少应该部分自动化。大多数情况下,集成测试都会以单元测试作为基础。
单元测试通常会作为持续集成的一部分。持续集成通常会自动执行特定任务,包括单元测试、备份、应用加密签名等。持续集成可以定期执行也可以在代码发生变更时执行。
单元测试可用于建立软件开发流程和指导软件开发。在编写代码本身之前,可以先编写这些测试,也就是常说的“测试驱动开发”。通常,测试是在功能开发完成之后编写的。编写单元测试和开发功能可以由不同的程序员担任。有时,由其他开发人员提供的测试更容易发现错误,因为他们可能会做出不同的假设。
有经验的程序员通常认为测试与代码同等重要。因此将一半的工作时间花在编写测试上的情况并不少见。虽然会影响编写代码的速度,然而从长远来看,测试是一项投资,因此通常会节省时间。通常没有经过良好测试的软件的更新难度会更大。测试可以减少代码变更或扩展的不确定性。
测试应该方便阅读,简单且能快速运行,而且使用的内存也不会很多。然而,很难准确定义测试的质量。常见的统计方法有几种。例如,可以计算测试覆盖的代码行数。这里,不得不讨论一下测试覆盖率。100%的覆盖率意味着所有代码都被测试到了。然而在实践中覆盖率无法很好地表现测试的质量。
所有计算机系统都有缺陷。硬件随时可能出现故障。即使硬件可靠,程序员也几乎不可能预测软件在运行中遇到的所有情况。无论你是谁,也无论你多么努力地工作,你的软件也不会完美。尽管如此还是应该竭尽所能编写正确的代码:能够满足用户的期望。
虽然无需编写测试也可以编写正确的代码,但测试套件的好处在难度或规模较大的项目中是切实可见的。许多有经验的程序员都会拒绝使用未经测试的软件组件。编写测试的好习惯可以帮助你成长为一名更好的程序员。在编写测试的过程中你会进一步意识到人类的局限性。在与其他程序员和用户交互时,如果有一个测试套件就可以更好地思考他们的反馈。
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
黑盒测试是什么?黑盒测试的优缺点分析
在软件测试中,黑盒测试被频繁地提起,那么到底黑盒测试是什么?本文就黑盒测试的优缺点来详细分析黑盒测试。
12764
2019-07-30 20:00:45
做软件测试工资高吗?薪资待遇怎么样?
做软件测试工资高吗?薪资待遇怎么样?初级软件测试月薪大概5K~7K左右。薪资水平高于同龄人1K-2K,2-3年的软件测试月薪在9K~12K左右,工作5年后可以达到年薪20万以上。软件测试人员缺口30万左右,就业竞争压力小于同类其它岗位。
6638
2019-10-07 17:48:05
软件测试工程师为什么要写测试用例?
软件测试工程师为什么要写测试用例?相信从事软件测试行业的从业者来讲,测试用例并不陌生。因为测试用例不仅仅是一组简单的文档,它包含前提条件、输入、执行条件和预期结果等等重要内容,并且能够完成一定的测试目的和需求。下面本文将从测试用例的定义、作用和做法三方面,带大家全面认识测试用例。
7540
2020-02-10 13:04:20
软件测试行业怎么样?职业发展如何规划?
随着软件工程活动的不断演化,软件测试岗位已经成为了软件开发中极其重要的一个环节,因而市场对于软件测试人才的需求也在日益扩大。相信不少想入行软件测试的小伙伴都难免会有这样的疑问,软件测试行业究竟怎么样?职业发展应该如何规划?本篇就软件测试小白的一系列疑问和困惑,为大家整理了相应问题的答案,下面一起来看看吧!
5617
2020-04-01 09:46:08
adb命令实战详解
今天我们要来学习一下关于adb命令实战的内容,包括获取系统版本、滑动操作、点击操作等等步骤都会有详解,大家一起来看看吧!
5823
2020-07-23 10:54:33
