在线客服
扫描二维码
下载博学谷APP扫描二维码
关注博学谷微信公众号
软件测试对于减少程序BUG有多大帮助?有经验的程序员通常认为测试与代码同等重要,测试可以减少代码变更或扩展的不确定性。测试应该方便阅读简单且能快速运行,使用的内存也不会很多。
常见的软件错误可能会导致程序突然终止甚至损坏数据库,后果可能会非常惨重:1996年,由于一个软件错误导致阿丽亚娜-5 运载火箭爆炸。而这个错误是由浮点数数转换整数引起的,这是一个16位的有符号整数只能表示小整数值。该整数无法表示浮点数而程序在检测到这个意外的错误时停止了运行。
触发这个错误的功能不是必需的,只是作为一个子系统从早期的阿丽亚娜火箭模型中集成而来的。按照 1996 年的物价计算,这个错误的成本大约为 4 亿美元。生产正确软件的重要性早已广为人知。
几十年来优秀的科学家和工程师一直在努力确保正确性的常见策略有以下几种。例如,要做一项复杂的科学计算,那么就需要成立几个独立的团队来计算答案。
如果所有团队得出的答案都相同,则可以得出结论这个答案是正确的。这种冗余策略通常用于防范与硬件相关的故障。然而不幸的是,编写多个版本的软件通常是不切实际的。许多程序员希望能证明一个程序是正确的,抛开硬件故障不谈必须确保软件不会遇到任何错误。事实上如今的软件非常成熟可以证明程序是正确的。
程序员逐步理解了测试软件的必要性,但并非所有代码都需要测试,通常原型或示例就无需进一步验证。但任何在专业环境中设计完成、必须实现的重要功能至少应该完成部分测试。测试能够降低将来不得不面对灾难状况的可能性。
常见的测试主要有两种,单元测试和集成测试。
单元测试旨在测试软件程序的特定组件。例如,针对单个函数的单元测试。在大多数情况下,单元测试都是自动完成的,程序员只需按下按钮或输入命令,即可执行这些测试。单元测试通常会避免获取有价值的资源,例如在磁盘上创建大型文件或建立网络连接。单元测试通常不涉及操作系统的设置。
集成测试旨在验证完整的应用程序。通常这些测试需要访问网络,有时还需要访问大量数据。集成测试有时需要人工干预,而且还需要应用程序的特定知识。集成测试可能需要设置操作系统和安装软件。集成测试也可以自动化,至少应该部分自动化。大多数情况下,集成测试都会以单元测试作为基础。
单元测试通常会作为持续集成的一部分。持续集成通常会自动执行特定任务,包括单元测试、备份、应用加密签名等。持续集成可以定期执行也可以在代码发生变更时执行。
单元测试可用于建立软件开发流程和指导软件开发。在编写代码本身之前,可以先编写这些测试,也就是常说的“测试驱动开发”。通常,测试是在功能开发完成之后编写的。编写单元测试和开发功能可以由不同的程序员担任。有时,由其他开发人员提供的测试更容易发现错误,因为他们可能会做出不同的假设。
有经验的程序员通常认为测试与代码同等重要。因此将一半的工作时间花在编写测试上的情况并不少见。虽然会影响编写代码的速度,然而从长远来看,测试是一项投资,因此通常会节省时间。通常没有经过良好测试的软件的更新难度会更大。测试可以减少代码变更或扩展的不确定性。
测试应该方便阅读,简单且能快速运行,而且使用的内存也不会很多。然而,很难准确定义测试的质量。常见的统计方法有几种。例如,可以计算测试覆盖的代码行数。这里,不得不讨论一下测试覆盖率。100%的覆盖率意味着所有代码都被测试到了。然而在实践中覆盖率无法很好地表现测试的质量。
所有计算机系统都有缺陷。硬件随时可能出现故障。即使硬件可靠,程序员也几乎不可能预测软件在运行中遇到的所有情况。无论你是谁,也无论你多么努力地工作,你的软件也不会完美。尽管如此还是应该竭尽所能编写正确的代码:能够满足用户的期望。
虽然无需编写测试也可以编写正确的代码,但测试套件的好处在难度或规模较大的项目中是切实可见的。许多有经验的程序员都会拒绝使用未经测试的软件组件。编写测试的好习惯可以帮助你成长为一名更好的程序员。在编写测试的过程中你会进一步意识到人类的局限性。在与其他程序员和用户交互时,如果有一个测试套件就可以更好地思考他们的反馈。
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
软件测试工程师薪水平均是什么水平?前景发展如何?
如今,软件测试工程师已然成为了香饽饽职业。从短期看,从事这份岗位的工程师,薪资待遇确实远远高于其他行业的同龄人。从长期来看,软件测试职业发展可期,无论是向技术还是管理岗位发展,都能有极大的上升空间。那么,软件测试工程师薪水平均是什么水平呢?前景发展究竟如何?
7504
2019-09-12 16:56:00
软件测试的5个基本流程阶段是什么?
软件测试的5个基本流程阶段是什么?软件测试从开始一个项目测试到结束,一般中间要经过五大基本环节,即单元测试、集成测试、确认测试、系统测试、验收测试。这些基本流程的每个阶段都可以详细展开来进行探讨,本文就为大家梳理一下软件测试的5个基本流程的各个阶段内容。
15710
2019-10-16 14:44:57
Python Web自动化测试学习路线
学习手工测试转型自动化测试技能、自动化测试selenium基础、HTML基础、学习selenium中常见元素定位、利用selenium进行自动化测试、selenium进行自动化测试的中级操作、selenium进行自动化测试高级操作、自动化测试框架。
7234
2020-02-07 16:21:10
Pytest安装新手详细教程
相信软件测试的从业者对Pytest都不会感到陌生,它是一个功能丰富的Python测试框架,因其简单灵活,支持复杂的功能测试和丰富的第三方插件而备受大家喜爱。下面我将手把手教大家如何安装Pytest,一起来看看Pytest安装新手详细教程吧~
6616
2020-05-04 17:03:03
自学软件测试需要多久?能掌握吗?
参加培训班学软件测试需要5-6个月,自学软件测试时间长短因人而异,与学习资料及个人的毅力有关,排除资料问题假设能够弄到靠谱的资料然后开始自学,按照制定好的学习计划走至少需要5个月。
5191
2021-05-18 15:30:48