你不知道的软件测试那些事?

刚入职,软件测试岗,有点迷茫不知道下一步怎么提升自己 软件测试前景和发展都是不错,已经入了软件测试这行业就坚挺下去 阅读详情

一、写在前言

  • 作为开发人员,我们都知道我们应该测试我们的代码。我们应该写单元测试,但这也通常是我们发现没时间时跳过的第一步。
  • 作为团队的领导者或者管理者我们都知道测试是必要的,但是当截止日期临近的时候,我们倾向于减少测试,而把更多的重点放到编码上。这样看测试领域似乎很紧张。我们都知道测试对我们是有利的,但是一旦项目面临压力时我们就不再测试了。

二、我们为什么测试?

Edsger W Dijkstra 说过:测试可以用来找到显式的缺陷(bug),但是无法显示潜伏的软件缺陷(bug)。这意味着测试不能百分百保证你的软件没有缺陷(bug),但是它确实很有帮助。

我们也可以换种说法,如果我们不进行测试我们几乎可以百分百保证我们的软件会有缺陷(bug),除非我们是在编写像“hello world!”那样简单的程序。但是即使这么简单的程序你也会测试,因为一旦你输入完你的代码你就会很好奇它的输出是不是真的是“hello world!”。

而这就是第一类形式的测试,也是我们一直在做的: 手工测试. 我们编写程序,然后启动它去检验运行结果。 对于一个简单的“hello world”这可能是足够的,但是对于复杂度更高的程序这可能会导致时间的浪费,这是对一个已知的行为结果集的手工重复。这难道不是我们发明计算机的初衷吗?

对于“hello world”这不是大问题,但是当你创建一个 web 应用时,测试场景是在翻页十次,点击某些按钮,在大量表单中输入(正确的)数据之后再测试某些特定条件,你就看到自动化会节省大量的时间。如果你能通过测试运行器(testrunner)直接执行你想要测试的函数,而不是必须花费半分钟手工执行到那个函数,你会节省很多时间!但这也意味着我们需要多一点点编程,而更多的编程意味着更多的时间和精力。所以它会花费更多的时间而你的项目可能因此完工的晚些。

三、也许未必

让我们创建一个控制台应用程序来计算最大公约数(GCD)的两个整数。有很多方法可以解决这个问题,但为简单起见,我们将

1.输入两个整数

2.不管其算法怎么样,计算一下 GCD

3.显示输出

让我们浏览一下正常的开发周期。我们通常写一个 main() 函数,得到了两个整数,以及调用一个函数来计算一下 GCD,然后显示结果。测试。在你的控制台中输入 2 个整数会花一些时间,这将变得相当无聊,如果你需要多次重复你的代码。这也很容易在控制台应用程序中输入出错,导致程序崩溃。这意味着你必须重新启动程序,输入两位数,然后再次验证结果。请你要记住,我们讨论的是一个控制台应用程序,只需要两个输入值,不需要点击(在 web 应用程序中),我们已经看到,这将需要花费一些时间。

然后,我们很可能会想要测试一些更多意味着重启程序的值,进入两位数(正确地),然后测试。。。所以我们即使看到也不会立即这样做,因为它要花费太多的时间。Edge 案例将会被遗忘,错误只会在生产中被发现!此外,当我们改变一些我们需要再次运行所有的测试(手动),使用一个被遗忘的,或者使用快捷键的高风险的测试。在那儿,不会有跟踪我们的测试工作。不写入日志文件,在整个测试期间,除非你增加这个你做的事情列表工作(手动)。

四、消极反馈循环

通常,当项目(因为某种原因)延期了,则容易陷入一种消极反馈循环。有时我们会先决定跳过编写测试代码,而这则会造成情况如下图所示:

1527647558(1)

项目延期,造成我们不得不去编写更多的代码。所以与其“浪费时间”去不停地测试代码,不如不停地去开发项目。而这样做的结果就是代码质量进一步下降,并最终(或早或晚)导致返工。返工又通常会在最有限的时间里变得十分紧急(有些人叫这种现象为“墨菲是个乐天派!”)。其实返工什么也改变不了,项目现在只会进一步被延迟。很奇怪吧,我们编写越多的代码,我们的项目完工越晚。一种常用应对措施是让更多的开发人员被参与到项目的研发中,然而这样的作用也只是加剧消极反馈循环而已。

若项目缺乏测试,在验收和生产环境时,通常用户则会发现许多 bug,这将会快速地降低用户对项目的信任度,从而产生消极反馈。这种反馈传递给(工作过度的)开发人员,就造成开发人员“疲劳”现象。后果就是开发人员工作积极性下降,开发人员离职,……,项目又进一步延迟了。

五、打破消极循环

我想你已经想到有一个办法可以解决这种现象。让我们来绘制一幅不同的场景:我们可以从一个理想计划“项目按时完工”开始。我们开发代码,然后立即测试它。测试最好是自动化(编码实现)的,这样我们可以轻松有效的去执行它们。我们把开发和测试紧密的结合在一起,每个开发测试循环可以很快速的执行。当一个开发测试循环结束时我们有信心保证代码质量是很高的,因为它已经通过了测试。而且用户因为发现缺陷(bug)的数目变少而对我们继续高度信任。即使他们发现了一个缺陷(这依然是有可能的),我们也可以扩充我们的测试集合,去避免相关缺陷的重现。如此下去,返工将不再是必须的,项目得有继续。如果我们的项目已经延期了,就需要我们花些时间来采用这种方法论。对新功能的冻结也许是必须的。停止开发新的代码,取而代之去为最严重的(恼人的-清晰的-高代价的)缺陷编写测试。

项目延期的情况下再去为你完整的代码库编写测试是不可行的,只针对其中的一些部分就可以,不要去浪费你的时间。但是要记住其它部分也还是需要编写测试的。我在这种情况下会去找出最严重的问题(划分优先级),然后为它们编写测试。之后“快速”修改代码就会变的更容易,并且可以保证在修改其他部分是它不会出错。自动化测试可以很频繁的执行,从而降低了缺陷(bug)重现的风险。大讲台,最实用的 IT 职业在线学习平台。好了,现在可以开始去有效的强健我们项目了

上面这些通常会要求进行代码重构,从而使它可测试化。我会在另一篇文章里介绍它。

六、总结

大部分的项目中,会考虑测试和编码之间的平衡。不过我希望大家都能清楚,测试其实是项目的加速器,而不是在浪费时间。

结语:

最后跟大家推荐一个学习资料分享群:175317069,里面大牛已经为我们整理好了许多的学习资料,有自动化,接口,性能等等的学习资料!

人生是一个逆水行舟的过程,不进则退,咱们一起加油吧!

【原创,解决CLodop安装后无法调用的问题】已经安装过CLodop,但是网页上仍然提示“clodop云打印服务(localhost本地)未安装启动,点击这里执行安装....” 在某些国内web网站中,需要安装一个名为“CLodop”的插件;但在实际使用过程中,即使安装了CLodop插件,网页试图调用它时还是会提示“clodop云打印服务(localhost本地)未安装启动,点击这里执行安装...”,且无法完成相关打印任务 本文属原创博客,分析了解决CLodop无法被调用的问题,并附上了原理和解决方法,本质上是和跨域请求以及CORS类安全组策略相关 阅读详情

相关推荐

深入浅出:.sh文件在Linux系统中的实战应用与技巧

本文深入浅出地介绍了.sh文件在Linux系统中的实战应用与技巧。从基础概念入手,详细讲解了Bash脚本的运行方法、权限管理,并通过编写自动化备份脚本等实例,展示了如何利用Shell脚本提升工作效率。文章还涵盖了脚本调试、错误处理以及函数、参数解析等进阶技巧,帮助读者从入门到精通,掌握这一强大的自动化工具。

weixin_29243279的博客 352

软件测试重要性

导言: 在现代软件开发中,软件测试扮演着确保质量的重要角色。通过对软件系统的验证和验证,软件测试有助于发现潜在的缺陷和问题,并确保软件在部署之前能够达到预期的质量标准。本文将深入探讨软件测试的重要性、测试的类型以及成功的软件测试策略。

kk_lzvvkpj的博客 7070

Qt自带绘图与GDI+绘图方式比较_gdi+实时绘制qt(2)

2、GDI+是Windows操作系统中的图形设备接口,它提供了一套用于绘制图形的API,包括了图形渲染、图形变换、图形剪切、图形填充等功能,使开发者可以快速地开发出各种类型的图形应用程序。1、Qt是一个跨平台的C++应用程序框架,它提供了一套用于GUI编程的类库,包括了绘图、网络、XML、数据库、多线程等模块,使开发者可以快速地开发出高质量的跨平台应用程序。Qt提供了一套用于绘图的类库,包括了QPainter、QPen、QBrush等类,使开发者可以快速地进行图形绘制。

qq_17136213的博客 918

测试是一件浪费时间的事吗?

让我们详细地说明作为开发人员,我们都知道我们应该测试我们的代码。我们应该写单元测试,但这也通常是我们发现没时间时跳过的第一步。作为团队的领导者或者管理者我们都知道测试是必...

哲洛不闹的专栏 546

学术类PPT制作总结

本文分享了科技类PPT的制作技巧,希望相关的信息能帮助到读者。

奇妙水果的技术博客,欢迎交流技术~ 2884

Windows Server+SqlServer Always On实战:5步搞定高可用集群搭建

本文详细介绍了在Windows Server环境中,通过5个关键步骤搭建SQL Server Always On高可用集群的实战指南。内容涵盖从底层故障转移集群配置、SQL Server实例启用Always On功能,到创建可用性组和侦听器的完整流程,并提供了核心运维与故障排查思路,帮助企业构建稳定可靠的数据库高可用架构。

milk5的博客 859

为什么需要软件测试

一款软件从无到有会经历很多的开发阶段,并且由不同的人来参与开发,所以最终产出的软件功能会存在问题,因此为了保证软件的功能是可用的,所以必须要进行软件测试。 当前的软件行业已经不再是功能为王,用户不仅仅只盯着软件的功能是否满足需求,还会对软件是否容易上手、执行效率等,一系列其他体验都有了更高的要求,所以这也需要我们对软件进行大量的测试。 ...

Hern(宋兆恒) 1915

实测对比:DINOv2、CLIP、ResNet在图像相似度任务上谁更强?(含Python代码与避坑指南)

本文通过实测对比DINOv2、CLIP和ResNet在图像相似度任务中的表现,提供Python代码实现与避坑指南。实验结果显示,DINOv2在精度上表现最佳,CLIP在多模态场景中优势明显,而ResNet则在计算效率上更优。文章还针对不同业务场景给出了具体选型建议,帮助开发者在图像搜索和版权检测等项目中做出更明智的技术决策。

weixin_30588381的博客 286

软件测试面试必问:为什么要选择软件测试?

经常会遇到一些面试官没事的时候问,为什么选择软件测试? 我都在这个行业,你怎么还问我为什么选择软件测试?

测试萌萌 829

揭秘LLM如何预测下一个词

Transformer结构的大语言模型(LLM)通过自回归训练学习预测下一个词汇,其核心能力源自权重矩阵的动态优化。自注意力层的Wq/Wk/Wv矩阵捕捉语义关联,前馈网络的W1/W2矩阵进行非线性特征提取,LM Head的W_{lm}矩阵将语义映射到词汇概率。训练过程中,这些矩阵通过反向传播不断调整,最终使模型能够根据上下文(如"我"→"爱")生成合理的后续词汇。这种基于矩阵变换的数学机制是LLM智能生成文本的本质原因。(150字)

ZhangJiqun&191cm&85kg 376

微信小程序报错:“errno“:600001,“errMsg“:“uploadFile:fail errcode:-105 cronet_error_code:-105 error_msg:net::

uploadFile:fail errcode:-105 cronet_error_code:-105 error_msg:net::ERR_NAME_NOT_RESOLVED,uniApp微信小程序使用uni.uploadFile出现报错,微信小程序如何解决wx.uploadFile报错,如何解决这个问题,微信小程序真机报错,微信小程序报错"errno":600001,"errMsg":"uploadFile:fail errcode:-105 cronet_error_code:-105 error_m

✅ 精选推荐文章 3830

软件测试是干什么的?它为什么需要这个岗位?

1.软件测试概念: 软件测试:为了发现软件错误和缺陷(统称bug)而执行程序的一个过程。 软件测试是软件开发过程的重要组成部分,是用来确认一个程序的功能或性能是否符合开发之前所提出的一些要求。软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。 2.软件测试目的: 最直观的目的肯定是通过对软件系统或程序的测试,发现其中的错误。 软件测试的目的具体如下: 验证软件需求和功能是否得到了完整的实现 尽可能早的发现软件中的bug 尽可能多的...

jj2772367224的博客 1万+

深度学习实战35-图卷积神经网络GCN模型的搭建与应用

大家好,我是微学AI,今天给大家介绍一下深度学习实战35-图卷积神经网络GCN模型的搭建与应用,GCN是一种用于处理图结构数据的深度学习模型,它可以捕捉节点之间的拓扑关系和局部特征,并进行图级别的预测和分类任务。下面将介绍如何搭建并应用GCN模型。

微学AI的博客 2226

盘点你不知道的软件测试那些事?

**一、**写在前言作为开发人员,我们都知道我们应该测试我们的代码。我们应该写单元测试,但这也通常是我们发现没时间时跳过的第一步。作为团队的领导者或者管理者我们都知道测试是必要的,但是当截止日期临近的时候,我们倾向于减少测试,而把更多的重点放到编码上。这样看测试领域似乎很紧张。我们都知道测试对我们是有利的,但是一旦项目面临压力时我们就不再测试了。 **二、**我们为什么测试?Edsger W Dijkstra 说过:测试可以用来找到显式的缺陷(bug),但是无法显示潜伏的软件缺陷(bug)。这意味着测试不能

别人的故事,是参考答案,而不是标准答案 172

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

软件测试必须知道的精华总结

上学时的总结,现在看不论是考试还是工作都很有用

少说,多做。 1万+

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

关于软件测试,你需要知道的一切都在这里了

测试行业小故事 我曾今不止一次见过:对软件测试行业不甚了解的新人与已经在测试行业摸爬滚打几年的前辈之间的互相指责和争执。 新人因为不了解测试行业,也不了解提问的艺术,所以问的都是自己比较关注的问题和一些基础问题。前辈因为对测试行业有一定的了解,掌握一定的知识技术,早就明白了有些问题是无解或者无用的。 所以矛盾就产生了 ——新人认为前辈都是很傲慢的,不屑回答问题还要冷嘲热讽。 ——前辈...

每天学习一点,今后必成大神 3万+

软件测试人员所不知道的软件测试七项原则

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

2401_88326437的博客 847

软件测试实习总结,那些实习了我才知道的事

先后在两家小厂分别担任软件测试和游戏测试实习生,现在对这两份工作负责的内容和日常工作做一个总结回顾 希望能帮助到那些对这份职业有向往的人

2301_76387166的博客 1321

软件测试人员所不知道的软件测试7项原则,必须知道!

这是一道关于软件测试理论的题,大部分测试人员并不care软件测试理论,遵循理论无用论。

. 285

不会还有人不知道软件测试报告模板怎么写吧?_软件测试模块怎么写(1)

总结“提测通过”和“提测不通过”这两种情况的测试报告,总结基本模块划分大致如下:测试报告基本模块以上是一份报告的基本骨架,缺了任何一部分都不能算是合格的报告。三、测试报告如何才能达到优秀?报告的基本骨架已经知道了,是不是就可以开始整活儿了?别急,上一步只是有了骨架,最多能拿60分。那么如何拿90分甚至100分?答案马上揭晓。1、内容要清晰完整骨架有了,还要让它饱满起来。每个模块的内容不用很详细说明细节,但是一定要表述清楚。比如风险说明:风险是什么?原因是什么?可能造成的后果是什么?

2401_84265830的博客 2055

对不起,不知道这些,我劝你还是别做软件测试员了!

到今年,我从事软件测试行业,已经有七、八个春秋了,也算是一个资深的软件测试工程师,目前在上海一家500强企业任职软件测试架构师。我知道,在当今高速发展的信息社会, 计算机和电子技术越来越受到人们的重视,以软件为代表的计算机行业正在以一种井喷式的发展趋势。软件测试得到了许多科研单位和企业公司的大力重视,我国的软件测试行业发展迅速。软件测试工程师的就业前景和薪资待遇也大大提升。 下面我就以我多年的经验谈谈软件测试这一行的困境和解决办法,也许可以帮助你走出现在的疑惑和不解。 要说测试人员职业生涯当中最在

程序员二黑 2602

你想知道软件测试的这些事?——条不落都在这里了

测试行业小故事 我曾今不止一次见过:对软件测试行业不甚了解的新人与已经在测试行业摸爬滚打几年的前辈之间的互相指责和争执。 新人因为不了解测试行业,也不了解提问的艺术,所以问的都是自己比较关注的问题和一些基础问题。前辈因为对测试行业有一定的了解,掌握一定的知识技术,早就明白了有些问题是无解或者无用的。 所以矛盾就产生了 ——新人认为前辈都是很傲慢的,不屑回答问题还要冷嘲热讽。 ——前辈认为新人只会坐享其成,不愿动手动脑也不会提问。 究其原因,还是信息不对称。各自掌握的信息都是仅限于自己所了解的,所以很难做到.

weixin_53183636的博客 268

不知道测试什么?这些是你需要知道的软件测试类型和常识

我们作为测试人员了解很多种不同的软件测试类型,例如功能测试(Functional Test)、非功能测试、自动测试、敏捷测试、以及它们的各种子类型. 尽管在我们的测试过程中会接触很多种测试类型, 或者听说过某些测试类型,但是很少人敢说精通所有的测试类型.

q—qun1150305204的博客 1799

软件测试实习生的一天,那些实习了我才知道的事(二)

大家好,今天我来更新一下软件测试实习的后续,我的第一篇帖子响应不错,很多牛友现身说法通过大家的描述,让各位还没入行的小白更加了解了这份工作的日常贴一下图片和链接软件测试实习工作总结,那些实习了我才知道的事现在是上午11点半,楼主正在工位上敲键盘,是的你没猜错,带薪搞副业(发帖子),同时和室友约着周末出去嗨皮公司的待遇确实很不错,基本上是大厂一下最好的,组内氛围也很融洽,没有啥勾心斗角,但是岗位成长确实有限。

chowley的博客 2094

不知道软件测试什么?这些是你需要知道的软件测试类型和常识

文章篇幅较长,阅读完大概20min,建议收藏阅读, 读完会有收获。欢迎点赞关注 原文链接:https://www.softwaretestinghelp.com/types-of-software-testing/ 有多少软件测试类型呢? 我们作为测试人员了解很多种不同的软件测试类型,例如功能测试(Functional Test)、非功能测试、自动测试、敏捷测试、以及它们的各种子类型. 尽管在我们的测试过程中会接触很多种测试类型, 或者听说过某些测试类型,但是很少人敢说精通所有的测试类型. 每个测试类型.

爱码小哥 988

软件测试人员那些不能做的事

作为软件测试从业者,以下是一些禁忌和忌讳的行为: 1. 不随意修改代码:作为测试人员,你的职责是发现和报告问题,而不是在未经允许的情况下修改代码。尊重开发人员的职责和权威,避免在没有明确指示的情况下更改代码。

伤心的辣条 1160
上一篇: 一招教你成为大内密探:诊断优化找出消耗CPU性能的内鬼
下一篇: 软件测试模式
TestingGDR
博客等级 码龄8年 496粉丝 72原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值