在线客服
扫描二维码
下载博学谷APP扫描二维码
关注博学谷微信公众号
软件测试对于减少程序BUG有多大帮助?有经验的程序员通常认为测试与代码同等重要,测试可以减少代码变更或扩展的不确定性。测试应该方便阅读简单且能快速运行,使用的内存也不会很多。
常见的软件错误可能会导致程序突然终止甚至损坏数据库,后果可能会非常惨重:1996年,由于一个软件错误导致阿丽亚娜-5 运载火箭爆炸。而这个错误是由浮点数数转换整数引起的,这是一个16位的有符号整数只能表示小整数值。该整数无法表示浮点数而程序在检测到这个意外的错误时停止了运行。
触发这个错误的功能不是必需的,只是作为一个子系统从早期的阿丽亚娜火箭模型中集成而来的。按照 1996 年的物价计算,这个错误的成本大约为 4 亿美元。生产正确软件的重要性早已广为人知。
几十年来优秀的科学家和工程师一直在努力确保正确性的常见策略有以下几种。例如,要做一项复杂的科学计算,那么就需要成立几个独立的团队来计算答案。
如果所有团队得出的答案都相同,则可以得出结论这个答案是正确的。这种冗余策略通常用于防范与硬件相关的故障。然而不幸的是,编写多个版本的软件通常是不切实际的。许多程序员希望能证明一个程序是正确的,抛开硬件故障不谈必须确保软件不会遇到任何错误。事实上如今的软件非常成熟可以证明程序是正确的。
程序员逐步理解了测试软件的必要性,但并非所有代码都需要测试,通常原型或示例就无需进一步验证。但任何在专业环境中设计完成、必须实现的重要功能至少应该完成部分测试。测试能够降低将来不得不面对灾难状况的可能性。
常见的测试主要有两种,单元测试和集成测试。
单元测试旨在测试软件程序的特定组件。例如,针对单个函数的单元测试。在大多数情况下,单元测试都是自动完成的,程序员只需按下按钮或输入命令,即可执行这些测试。单元测试通常会避免获取有价值的资源,例如在磁盘上创建大型文件或建立网络连接。单元测试通常不涉及操作系统的设置。
集成测试旨在验证完整的应用程序。通常这些测试需要访问网络,有时还需要访问大量数据。集成测试有时需要人工干预,而且还需要应用程序的特定知识。集成测试可能需要设置操作系统和安装软件。集成测试也可以自动化,至少应该部分自动化。大多数情况下,集成测试都会以单元测试作为基础。
单元测试通常会作为持续集成的一部分。持续集成通常会自动执行特定任务,包括单元测试、备份、应用加密签名等。持续集成可以定期执行也可以在代码发生变更时执行。
单元测试可用于建立软件开发流程和指导软件开发。在编写代码本身之前,可以先编写这些测试,也就是常说的“测试驱动开发”。通常,测试是在功能开发完成之后编写的。编写单元测试和开发功能可以由不同的程序员担任。有时,由其他开发人员提供的测试更容易发现错误,因为他们可能会做出不同的假设。
有经验的程序员通常认为测试与代码同等重要。因此将一半的工作时间花在编写测试上的情况并不少见。虽然会影响编写代码的速度,然而从长远来看,测试是一项投资,因此通常会节省时间。通常没有经过良好测试的软件的更新难度会更大。测试可以减少代码变更或扩展的不确定性。
测试应该方便阅读,简单且能快速运行,而且使用的内存也不会很多。然而,很难准确定义测试的质量。常见的统计方法有几种。例如,可以计算测试覆盖的代码行数。这里,不得不讨论一下测试覆盖率。100%的覆盖率意味着所有代码都被测试到了。然而在实践中覆盖率无法很好地表现测试的质量。
所有计算机系统都有缺陷。硬件随时可能出现故障。即使硬件可靠,程序员也几乎不可能预测软件在运行中遇到的所有情况。无论你是谁,也无论你多么努力地工作,你的软件也不会完美。尽管如此还是应该竭尽所能编写正确的代码:能够满足用户的期望。
虽然无需编写测试也可以编写正确的代码,但测试套件的好处在难度或规模较大的项目中是切实可见的。许多有经验的程序员都会拒绝使用未经测试的软件组件。编写测试的好习惯可以帮助你成长为一名更好的程序员。在编写测试的过程中你会进一步意识到人类的局限性。在与其他程序员和用户交互时,如果有一个测试套件就可以更好地思考他们的反馈。
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
软件测试工程师的思维模式你具备吗?
软件测试是一个贯穿整个软件开发的重要环节,包括前期需求分析到研发,在上线之前软件测试的作用非常重要。因此对于软件测试人才而言,需要具备的素质与软件开发工程师也是非常不同的。至少从工作思维方面,不仅仅是简单的将软件的测试完成就可以了,而是更多的需要多角度的衡量软件产品的价值。那软件测试工程师的思维模式你有吗?
8707
2019-07-08 17:58:40
测试软件工程师待遇怎么样?如何突破职业瓶颈?
软件测试平均薪资11k左右,据不完全统计该类职位的需求主要集中在沿海发达城市,其中北京和上海的需求量分别占去33%和29%。民企需求量最大占19%,外商独资欧美类企业需求排列次之占15%。
4968
2019-11-12 17:22:58
Pytest框架如何快速入门?
众所周知,Pytest框架作为一个功能全面的Python测试框架,它的优点是显而易见的,简单灵活易上手的操作方式,加上支持参数化和简单的单元测试、复杂的功能测试,以及可以自定义扩展的第三方插件,都成为了软件测试从业者不得不学习它的理由。那么,Pytest框架如何快速入门呢?
5411
2020-04-09 23:28:48
自动化测试的测试模型有哪些?优缺点分别是什么?
自动化测试的测试模型有哪些?测试行业从业者需要掌握的测试模型有线性测试、模块化驱动测试、数据驱动测试以及行为驱动测试 ,这些测试模型的优缺点也十分鲜明。下面我们一起来详细分析一下吧!
5723
2020-07-15 11:47:58
学软件测试需要多久时间?怎么选班型?
零基础自学软件测试花的时间比较长;参加软件测试培训班,有老师按照设计好的大纲进行系统授课,学习中遇到技术问题能够快速得到解决,一般需要4~5个月左右的时间能具备找工作的技能。
4902
2021-01-27 15:53:31