论UT阶段重要性
测试与开发这对立的命运啊
如果是对测试从业者心存鄙视的朋友啊,请关掉此页,带着偏见不好看的~
人生就像一个旅途,每个人看到风景不一样,世界观、人生观、价值观也就不同。不要试着去改变别人,因为你的观点在他的世界里并没有例子,或者例子在他世界里最后得到的结果与你相反的。
十年前看了一本软件测试书籍,里面有一个理论:
-------------------------------
一个软件的缺陷发现成分构成:8:[2=(2:8)]
8:2, 缺陷发现分成10成,其中8成是开发UT阶段发现的,2成流到测试阶段。
2=(2:8),测试阶段这2成也看作一个10成,其中2成是测试阶段发现的,8成是发布后客户发现的。
-------------------------------
当时对这个理论是噗之以鼻,但现在对于从业测试八年的我来说,这特么 太真相、太事实。
就算多会功能,安全,性能,自动化,最多是把第二个比率加强到5:5。
所以总10成里一定有1~1.6成的缺陷流向生产环境,事实缺陷总是在软件发布后被客户发现并投诉的。
在下不会抛出这个命题求解。肯定存在一些大神可能有了解决方案,但绝对是独有的。这世界还没有贾维斯。
工作这么多年,观察了许多许多,咳~也就是所接触到的全部开发,其中仅有两位能做到UT自己的代码把这8成缺陷找完。可能是自身的层次不够高,接触不到更多的优秀开发大佬。
讲讲这两位同事吧(心里其实想吐槽那些的,不过糟心,还是讲讲正能量),
七年前,刚参加工作,那时我也是一位开发,写MFC前端,C/S项目,现在做了测试,惭愧!惭愧! 这位同事刚从部队转业出来,做事超级认真。他当时接到一个代码量为两周的大需求,花了七天,将流程图,时序图,详设,伪代码等文档都实现了,接着三天写完代码。代码三天搞定强大吧?但是,更强大的来了,看着他写Gtest,一天把自己所有的函数的Gtest全干完,然后一个一个测试,把所有传参场景都跑完了,无误后才提交测试,我全程在边上看他直播(想拍死当时的自己,坐这么近都没感染到他的优秀)。测试果然没发现几个问题的。这种匠人精神,怎么说了!现在应该还有,不过估计都存在于大厂中。这位同事与我共事的第二年就三面HW进去了。
另一位平凡一点,在一家外包公司,此时我已经转测试很久了,这位同事接了一个七天代码量的活,第一天弄好详设(后来才知道那详设里面有测试用例),码了五天代码,后面两天,一直在自己写接口测试脚本,搭建环境做功能测试,连UI的测试都不放过,等到第七天转测试给我。多数据提交经过七个阶段,七个角色层层审核,最后发布信息的大流程,一次性冒烟通过(最近项目组是全部开发包括项目经理都问我冒烟测试是啥意思,呵~),没有多余的话,三天测试,共测试了三轮功能,暴力测试,安全测试,共发了14个缺陷,啧啧~,上线后一直稳定。做完这个需求他就辞职了,理由是觉得周边没有一个懂他的人,没有一个朋友。其实吧,是拿到了一个大offer,都懂都懂,嘿嘿~
感谢人生遇到过这两位同事,朋友,匠人。
说完好的了啊,再说说那些的吧,唉~糟心~
近一年来,每天提缺陷10多个、脑补产品需求、教开发各种场景走流程、自己去抓取接口分析、给开发提供场景参数、还得去研究各种安全场景、测出一些低级的安全问题,然后软件功能上线后,弄的鸡飞狗跳的,天天紧急修复。能造成这样的情况,当然是毫无UT阶段可言啦,设计文档是啥东西,好吃么?
现在是这个潮流,快餐化、速食化,谁都不想把时间花在一些枯燥无味且自己看作没用的事情上的。UT将会在一些层次被神话了、传说了,是我层次太低吧。
最后想法:即然开发从业者都不把UT阶段这8成做到的话,{8:[2=(2:8)]} = 10,那么这10成全压在测试阶段,测试阶段仅能发现的缺陷是2~5成,还有5~8成是流向生产的。
可以想像,没有开发严格的UT阶段,一个软件发布在理论上(多年经验告诉我,需要替换成事实上)是存在着巨大的风险的。线上用户便成付费测试人员。
开发者会说:’测试也可以UT呀’?
当然,这是对的,测试里面有UT工作者。但测试工作者分为功能,性能,自动化,UT(白盒),接口安全等方向。目前业内,90%都是功能 、自动化测试从业者。且大多数是速食小白。开发者如何要求测试普遍能UT呢?
提醒开发者们:不努力UT,难搞哦!像我那两位朋友,都接到好的offer了。行动起来吧,做好UT,做一个牛逼的coder,别让测试们操碎了心,好吗~
论UT阶段重要性的更多相关文章
- UT之最后一测
经过前面几次文章的分享的UT的相关知识,今天接着分享UT相关最后一测文章,希望对大家在UT的学习中有一点点的帮助. Spring集成测试 有时候我们需要在跑起来的Spring环境中验证,Spring ...
- 转:google测试分享-SET和TE
原文: http://blog.sina.com.cn/s/blog_6cf812be0102vbnb.html 前端时间看了google测试之道,收获了一些,在此总结下并打算写一个系列blog,顺 ...
- OLAP、OLTP的介绍CBO/RBO
OLTP与OLAP的介绍 数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction processing).联机分析处理OLAP(On-Line Analytical ...
- 一个基于集成jenkins的测试平台
(一)先看测试业务的情况: 有各种各样的任务包括代码构建.部署搭建.单元测试.功能自动化测试(包括许多模块的功能自动化测试,有十几个居多),性能测试.正确性验证:复杂一点的是这些任务在不同的测试阶段中 ...
- Survey of single-target visual tracking methods based on online learning 翻译
基于在线学习的单目标跟踪算法调研 摘要 视觉跟踪在计算机视觉和机器人学领域是一个流行和有挑战的话题.由于多种场景下出现的目标外貌和复杂环境变量的改变,先进的跟踪框架就有必要采用在线学习的原理.本论文简 ...
- 第二阶段:2.商业需求分析及BRD:3.产品需求分析
产品需求收集之后就可以进行产品需求分析了. 比如微信功能的逐步完善,偏向于做加法,但有时候也会做减法. Y轴是重要跟不重要 X轴是紧急跟不紧急 然后通过各个需求的分数来确定坐标位置.同时可以根据阶段调 ...
- 你真的会玩SQL吗?之逻辑查询处理阶段
你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...
- 2016福州大学软件工程第五、六次团队作业-Alpha阶段成绩汇总
1.本次作业成绩统计结果: 本次Alpha阶段团队作业公布如下: 表格说明: PE:贡献百分比 YS:演示评分(满分15分) BK:博客评分(满分15分) SH:事后诸葛亮环节(满分5分) P:个人分 ...
- 回答阿里社招面试如何准备,顺便谈谈对于Java程序猿学习当中各个阶段的建议
引言 其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的对话都给记下来.LZ自己当初面试完以后,除了记住一些聊过的知识点以外,具体的内容 ...
随机推荐
- python_模块1
1.将指定的字符串进行加密 # 导入模块 import hashlib def get_md5(data): # 获取hashlib模块中的md5加密算法 obj = hashlib.md5() # ...
- Python 列表和元组 (2) 持续更新
数据结构就是数据的集合.Python最基本的数据结构就是序列,每个元素都会被分配一个元素的位置,也可以称为索引.注意索引都是从0开始的. Python包含6种内建的序列,分别是列表.元组.字符串.Un ...
- CSS实现按钮YES-NO按钮+Jquery获取按钮状态。
前几天我经理突然跟我说,能不能做一个开关按钮,需要过滤的一个标识.说实话,一个做后端我是懵逼状态的. 不过网上资料很多,查了一遭,发现一个不错的哥们给出的案例,模仿一下成功实现,下面就自己总结一下: ...
- qt触摸屏隐藏鼠标指针
方法1:运行加参数-nomouse 方法2:QWidget::setCursor(QCursor(Qt::BlankCursor) 例:this->setCursor(Qt::BlankCurr ...
- 001_C/C++笔试题_考察C/C++语言基础概念
(一)文章来自:C/C++笔试题-主要考察C/C++语言基础概念.算法及编程,附参考答案 (二)基础概念 2. 头文件中的ifndef/define/endif的作用? 答:防止该头文件被重复引用. ...
- 7.13 T2 Shit 题(shit)
[题目描述] 某一天,小
- MIME协议(五) -- MIME邮件的编码方式
5 MIME邮件的编码方式 由于每个ASCII码字符只占用一个字节(8个bit位),且最高bit位总为0,即ASCII码字符中的有真正意义的信息只是后面的7个低bit位,而传统的SMTP协议又是基于 ...
- Codeforces 1111 E. Tree(虚树,DP)
题意 有一棵树,q个询问,每次询问,指定一个点做树根,再给定k个点,要求把这些点分成不超过m组的方案数,分配的限制是任意两个有祖先关系的点不能分在同一组.题目还保证了所有的询问的k加起来不超过1e5. ...
- 关于phoenix构建hbase视图,更新hbase表后,视图表是否更新的验证
1:创建表 create 'MY_TABLE', 'CF1','CF2' 2:在hbase上插入一条数据 put ' ,'CF1:V1', 'uwo1' 3:在phoenix上创建视图 create ...
- Spring+shiro session与线程池的坑
在java web编程中,经常使用shiro来管理session,也确实好用 shiro来获取session的方式 SecurityUtils.getSubject().getSession() 其中 ...