`
ronghao
  • 浏览: 450073 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
E9473dd5-1985-3883-ac98-962354ca10b3
张小庆,在路上
浏览量:8575
社区版块
存档分类
最新评论

关于测试的问与答(上)

阅读更多

作为芸芸众程序员的一员,我对软件开发中的一切都有着自己的问题。今天是关于测试,作为一名唯物主义者,我相信众物都有其神,于是我找到了测试之神。

我问:神仙哥哥,为什么我们需要测试呀?

大神用他那一贯充满怜悯的眼神看着我,说到:我可怜的孩子们啊,愿上帝保佑你们。之所以需要测试,都是上帝的错啊,上帝创造了你们,但是因为没有测试,所以你们都是不完美的、不理智的,你们会犯错。

我说:我明白了,因为我们每个人都各不相同,我们会被情绪、环境左右,不理智、价值驱动,而我们的大脑也是有限的,更糟糕的是那狭小的大脑只有该死的5%得到了开发,所以我们需要测试。

大神点点头,他对5%这个数字充满了怜悯,当然,他对任何事情都充满怜悯。我想,我该叫他怜悯之神。

我接着问:我们需要测试,可是,为什么我看测试人员只是天天敲键盘而已啊?

怜悯之神说:你的工作难道不也是天天敲键盘吗?

我想了一下,说:那不一样,我敲键盘是在写代码,那些漂亮的页面、增删改查都是代码实现的。

怜悯之神说:开发人员敲键盘是在写代码,测试人员敲键盘是在获取当前系统的信息,这两者真正的工作都是那些脑力活动,是在敲击键盘这个物理行为之前以及伴随这些物理行为的脑力活动。如果你敲击键盘的时候没有进行思考,那么你就不是在进行开发和测试;而且,如果你在思考但是没有敲击键盘,你还是可能在进行开发和测试。

我说:关键是思考。

怜悯之神说:是的。他显然对后半句犹豫了一下,但是还是说了,人类一思考,上帝就带领我们发笑。

我想,这有什么好笑的吗,连朝鲜昨晚都进球了。我说,其实对软件开发人员来说,我们也应该通过使用自己的产品来对他进行测试。

怜悯之神点点头,说,如果你都对自己的产品感到担心和鄙夷,别人为什么要买它?

我说,可是,除非我们开发的是开发工具,否则我们根本不可能用它。地球人都知道,在某个神奇的地方,做减肥药的从来不喝自己的减肥药,买火腿肠的从来不吃火腿肠....人人都需要是化学家。

怜悯之神说:完全由软件开发人员构成的测试样本不太可能代表整个用户群。

我自言自语道,所以我们需要测试人员,需要另一个角度的思考。

等等,我说,尽管测试人员测试了,但是为什么系统还是存在缺陷哩,难道他们不对所有可能性都进行测试的吗?

怜悯之神翻了我一个白眼,他叹了口气,说道,该死的5%啊。作为报复,在下面的叙述中,我将称他为白眼之神。

白眼之神说,对任何程序而言,可能进行的测试数据都是无限的。测试也许可以令人信服的表明存在缺陷,但是永远无法表明不存在缺陷。

我想了想,说,你说的有道理,我们现在的系统需要导入客户的遗留数据,光报表就多达20万,如果一张张的校验报表内容和样式,那么一定会死人的。

白眼之神说,那你们是怎样测试的哩?

我说,抽取样本测试哈。我说,我明白了,由于我们无法测试所有的可能性,那么任何测试实际上都是某种程度的样本测试,这些样本以某种方式代表整个可能测试集合的一个部分或者片段。测试只是采样!

白眼之神点点头,说,实际上,采样也是一个心理过程,而且是一个感性过程,令某人满意的样本也许会让另外一个觉得一点都不满意。

我接着说,由于不可能进行穷举测试,所以我们往往在两个目标间徘徊:希望测试能够覆盖所有令人感兴趣的条件,希望测试集减少到可以管理和承受的程度。就像吃自助餐,希望吃到所有东西,但是又要不把肚皮撑破。

白眼之神说,所以我们需要尽可能选择那些具有最强代表性的样本进行测试,而这是专业测试人员的优势。另外,多样化样本发现的问题可能超过大样本发现的问题,同样,测试团队多样化也可能发现更多的问题。

我说,我想想,我们现在也在进行测试,在开发中,我们采用了TDD的方式,我们单元功能测试的覆盖率很不错,这样,我想单元测试可以减少测试人员?减少系统测试?

神说,你会因为一架飞机保证它所有的部件在组装前都进行了测试而乘坐它的处女航吗?

我说,哦,罗老号发射失败了。

神说,但是,良好的单元测试能够为系统测试去除噪音。

我说,缺陷都不是自己钻进去的,而是开发人员放前去的。单元测试能够在一定程度上阻挡开发过程中缺陷的进入,同时阻挡一些简单的缺陷,系统测试不能捕获所有缺陷,相对单元测试,会花费更长的时间和成本,这些时间和成本能够通过单元测试得到部分节约。

神说,开发人员的测试保证了他对需求的理解和实现的一致,但是开发人员对需求的理解和真正的需求一定一致吗?

我说,所以需要测试人员来即时验收。

神说,另外,从心理学的角度说,一个人很难发现自己的错误,所以TDD和结对编程一起实践会有比较好的效果。

我说,好吧,测试很重要,可是为什么很多项目最后的集成测试阶段会那么长哩?这总是导致我们的项目延期

神说,说说你们的集成测试阶段都在做些什么?

我说,噢,我们拉出一个发布分支,冻结代码提交,开始进行测试,查明缺陷原因,根据重要性修改缺陷,然后重新测试,以此循环。恩,问题在于我们每修复一些缺陷总会引入新的缺陷,所以这个时间拉得很长。

神说,修复缺陷的同时引入新缺陷,这叫做故障反馈率(FFR),也就是一个修复让系统中产生了另一个缺陷的情况所占的百分比。这个数值如果在50%以下就很幸福了,另外,压力和试图提高缺陷修复速度都会提高FFR。

我说,也就是修复缺陷的同时引入新缺陷是个正常情况。恩,可是我的问题是为什么最后的测试阶段需要花费这么长时间?

神说,难道你不觉得是你们经理错误的估计了最后集成测试阶段所应该花费的时间

我说,oh。

神说,测试不等于除错,把整个集成测试阶段归于测试是不公平的。

我说,是的,如果区分开,相比测试,除错占据了更多时间。恩,我们现在的一个项目特性,由于开发时没有考虑性

能问题,导致上线时花费了大量时间。

神说,项目延期的主要问题在于测试推迟

我说,是的,这个给我的印象很深,如果在开发阶段就进行大数据的测试,那么会节省很多时间。

神说,所以要测试先行,并且测试往往在项目开始开发前都已经开始了,测试需要贯穿于整个开发过程,而是不推迟到最后的集成测试阶段。TDD和持续集成是很不错的实践,但是它们仅仅是一部分。

我说,还好,我们还有测试,不像某些疫苗,直接上市。那么,测试保证了质量?

神说,你觉得蒙牛没有测试吗?

我说,....

神说,测试只是提供信息。至于这些信息的定义、重要性以及所要采取的反应都取决于人,而人做出的决定都是感性的,利益驱动的。

我叹口气,说,测试能够保证软件质量。

神说,如果开发的产品本身就质量低劣,进行测试你不觉得是浪费大家的时间吗?一段时间发现的缺陷越多,并不意味着剩下的缺陷越少,而是意味着会出现更多的缺陷。

我说,我明白了,测试只是反馈信息,除此之外,并不能做其他任何事情。正如我们去体检,体检报告只能反映当时我们的身体状态,至于健不健康,则取决于我们平时的生活习惯,这是两个分开的事情,体检并不保证我的健康。

神说,是的。

我说,那么,很多大公司非常看重测试部门,原因其实是他们无法看清楚他们自己的开发过程,于是只能从测试里获取信息,而这些信息对整个软件开发来说只是一部分而已。我看到过有项目经理向测试人员询问是否可以交付,这根本上就是在推卸责任,信息和作出决定根本是两回事,如果是这样,不如让测试人员来当经理好了。

 

(未完待续)

分享到:
评论
1 楼 BlueAeri 2010-07-20  
期待下集。。。

相关推荐

    20210525-方正证券-谱尼测试-300887-系列报告之二:“十问十答”篇.pdf

    20210525-方正证券-谱尼测试-300887-系列报告之二:“十问十答”篇.pdf

    软件测试面试题.pdf

    测试程序员必备

    学习探索式测试的问与答

    学习探索式测试的问与答.本文摘录自《探索式测试实践之路》第1.3节,用对话的形式讨论探索式测试的概念与实践。提问者是本书的一位虚拟读者,回答者是本书的作者们。问:探索式测试中的“探索”该如何理解?  本文...

    关于软件测试的问与答(与神仙的对话)

    今天是关于测试,作为一名唯物主义者,我相信众物都有其神,于是我找到了测试之神。大神用怜悯的眼神看着我,说到:我可怜的孩子,之所以需要测试,都是上帝的错啊,上帝创造了你们,但是因为没有测试,所以你们都是...

    常见软件测试工程师面试题

     如果别人问我这些题目,我想我会大致这样回答,各位从事软件测试的同志们帮我看看回答的怎么样。  01. 为什么要在一个团队中开展软件测试工作?  答:软件测试在整个一个团队中占有非常重要的地位,具体来说就是...

    软件测试那些事儿

    目录: 一:软件测试-一般测试场景 二:软件性能测试常见问题“问”与“答” 三:软件安全性测试“Checklist” 四:移动APP测试中的非功能测试 分享方式:免费

    《基于seq2seq和注意力机制训练对中文话机器人 (可以实现基于原始的对话语料(一问一答形式)训练深度学习对话)》+源代码

    可以实现基于原始的对话语料(一问一答形式)训练深度学习对话机器人。 - 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分...

    VMLogin 浏览器自动化测试工具介绍

    问: VMLogin 浏览器自动化测试工具 能做什么? 答: 能够实现VMLogin用户配置浏览器的一些自动化控制操作,如:打开指定网页、寻找网页中指定的位置进行输入文字/点击等操作,并且可以执行用户自定义的JS脚本等功能...

    详细的测试面试题,题及答案

     答:对我来说,测试并不枯燥,我会认真的对每个项目都进行测试,因为每个项目都有它不同的地方,比天天打字的打字员好多了.. 如果我觉得枯燥了,我会想想其他的事情,放松自己的情绪,以达到调节的目的.因为工作,不管什么...

    B/S测试通用case

    测试实质是对数据处理是否符合预期的校验,测试过程是报着发现程序问题执行程序的过程。 实际接手测试工作后会遇到很多的灵魂拷问,如 问: 1 B/S架构的测试工程需要测试哪些内容? 蒙圈,一句话说不清楚… 2 测试...

    软件测试工具关于Rational与软件质量保证

    rationalRational软件测试工具关于Rational与软件质量保证软件质量保证,即SQA,全称是SoftwareQualityAssurance。问:SQA目的是什么?答:对于任何的行业,讲到质量控制,归根结底都是为客户提供更高品质的产品,更...

    react-testing:可靠的用户界面和React组件测试

    问与答 使用测试堆栈 单元/集成测试 端到端测试 必备软件 创建一个 从头开始创建测试框架的说明 转到1-test-framework文件夹 参见README.md 使用Jest和React测试库编写单元和服务测试的说明 转到2-react-testing-...

    软件测试工具在PB中如何使用软件测试工具rationalteamtest

    kukoc答:很简单啊,启动PB,启动robot,点击GUI图标开始录制,再运行PB程序,完成后停止录制,会自动软件测试工具在PB中如何使用软件测试工具rationalteamtest jbgsn问: 软件测试工具中有个robot,不知道该怎么...

    Visual Basic 2010入门经典.part1.rar

    1.10 问与答 34 1.11 作业 35 1.11.1 测验 35 1.11.2 答案 35 1.11.3 练习 35 第二章 Visual Basic 2010导航 36 2.1 使用Visual Basic 2010起始页 36 2.1.1 创建新项目 37 2.1.2 打开现有项目 38 2.2 导航...

    Visual Basic 2010入门经典.part2.rar

    1.10 问与答 34 1.11 作业 35 1.11.1 测验 35 1.11.2 答案 35 1.11.3 练习 35 第二章 Visual Basic 2010导航 36 2.1 使用Visual Basic 2010起始页 36 2.1.1 创建新项目 37 2.1.2 打开现有项目 38 2.2 导航...

    软件测试工具QTP常见问题及解决办法

    答:直接删掉P软件测试工具QTP常见问题及解决办法问:安装QTP的时候报这个错,是什么原因啊?“安装程序检测到您使用的pdm.dll版本存在问题。Microsoft已报告此版本DLL中存在错误。由于QuickTestProfessional使用此...

    iphone开发入门经典源码

    11.4 3 震动iPhone 11.5 小结 11.6 问与答 11.7 作业 11.7 1测验 11.7.2 答素 11.7.3 练习 11.8 进一步探索 第12章 使用工具栏创建简单的多视图应用程序 12.1 探索单视图应用程序和多视图应用程序 12.2 创建多视图...

    SQL21日自学通

    问与答 38 校练场 38 练习 39 第三天表达式条件语句与运算 40 第四天函数对数据的进一步处理 60 目标 60 汇总函数 60 COUNT61 SUM 61 AVG 63 MAX 63 MIN 64 VARIANCE65 STDDEV66 日期/时间函数66 ADD_MONTHS 67 ...

Global site tag (gtag.js) - Google Analytics