转自:http://kan.weibo.com/con/3522877245597301
作者:@测试仔刘毅
前言&摘要
工作中总难免遇到一些不想见到的问题,但是遇到问题总需要去解决。解决问题的时候我们不提倡一条路走到黑,但是也绝不鼓励“朝三暮四”、“朝秦暮楚”等各种浅尝辄止。就像我们在做自动化测试的过程中,有些问题是始终无法回避的,如:测试工具缺陷、测试数据使用难以及开发人力投入较多等诸多妖魔鬼怪。我们若不去逐个斗过,也不知道自己战斗力到底有多强,最终也无法取得真经、修成正果。
阅读关键字
自动化测试QTP SELENIUM 测试数据测试工具
摆一摆自动化测试中的问题
大约前几天,一位同事为了Selenium处理模态窗口问题而纠结,而她之前是常年与QTP为伍的,她悻悻地说:这破玩意,以前用QTP的时候根本就不会存在这个问题!我奸笑一声,对她狠狠地说:既然QTP那么好用,那你之前还不好好写你的脚本,现在领导觉得QTP在你的系统可能不适用了才开始推行Selenium,你还抱怨……那你得怨恨到什么时候呢?作为一个习惯了我“叫兽”风格的同事,她对我给予的挖苦不以为意,嘿嘿一笑继续忙她的了。当然,她最终搞定了这个问题,自然地,欢呼雀跃一下也是在所难免的。我后来跟她说:其实你之前只要多花一点时间把你的QTP开发质量提高一个档次,现在也不会有人逼着你花时间来解决这个问题,而且接下来前面还有什么问题等着你谁也不知道;现在是花很多时间,以前也要花很多时间,什么时候花都一样,自动化测试在我们这里绝不是应付了事,所以,我们始终都得面对开发投入这个现实!而且,早一点投入,产出效益也会更加明显一些。
再往前几个月,有一个开发经理向我们组同事咨询QTP在自动化测试中的使用情况,可碰巧被咨询的这位同事是个QTP盲。出于对技术仔的仰慕,我主动找到他,问他想了解一些什么东西,他说他想在集成环境中用QTP做集成测试。我就问:你们的单元测试做的咋样嘛?他说:还不错啊,用JUnit尝试了一下,不过JUnit测试完了还是无法确保移交的版本质量和可测性。我又问:你们尝试过Selenium么?那玩意是开源的,对你们来说应该很好用,如果用JAVA来做,估计你们单元测试代码可以复用不少呢。他回了一句:测试数据不好弄啊,数据又少又复杂,不知道QTP在这方面有没有什么优势?我就瞬间丢失了作为一个粉丝应有的姿态,嘟囔了一句:优势个屁,如果想绕过测试数据这关来做你的集成测试,你趁早还是别做了,早点移交给我们,让我们多点系统测试时间吧。当然这个我不敢明说,只好书面的回了一句:不管我们用什么工具,测试数据的使用、管理都是我们不得不面对的问题,这是测试的核心要素,所以没有什么UI工具能跨越业务逻辑来使用测试数据。
再往前一两年的样子,部门里有个QTP技术仔同事私下里和我探讨,他对QTP运行环境要求高和运行速度慢、对象经常莫名其妙不识别等等问题深恶痛绝。他问我:据说LR运行不是基于页面的,你懂吗?我说:略懂,LR是基于协议的,靠模拟客户端请求去执行测试的。他立马来了劲,兴奋地说:那就是不受页面对象变化的影响咯?如果这样,你觉得我们如果用LR去写脚本做回归测试会不会很爽?至少速度快,受环境影响非常小。我一身冷汗,心想别让我又造了孽,误导了别人吧,赶紧劝阻:千万别,要是这样,WEB页面最基本的JS控制项都被可以忽略了,测试结果根本不可信啊。看他将信将疑,我赶快找了几份生产缺陷事件报表发给他看,后来他研究了很久,好歹总算把这个想法给否定了。同样,我们可以看得出,无论技术是否过硬,测试工具本身的弱点是无法回避的,但是既然被称为工程师,我们始终要面对这些问题,并且必须要尝试解决它们。否则,就算是换一种测试工具那又能如何,这世界上存在完美的东西么?
该如何面对自动化测试的学习
其实稍微想一下我们就知道,自动化测试的学习和研究也是我们不得不面对的问题之一。《师说》有云:“人非生而知之者,孰能无惑?”所以我们在自动化测试学习或者实施的过程中也难免会遇到很多不可预知的问题,遇到问题的时候是该“求鱼”还是该“求渔”,是该自力更生还是求助于人,是该谷歌还是谷歌,工具和技术应该学到什么水平……这些都是应该事先弄清楚的。
平常闲逛的时候,经常在坛子里面看到有人在那里喊:“来个高手来教我QTP啊”,“广州有自动化测试的高手吗?带带我吧”——哦哟,拜托你们不要再卖萌了啦,人家会受不了的啦!在我看来这基本上都是不肯面对现实,不愿意主动去学习的表现,到坛子里只是找个倾诉的对象或者说精神的寄托而已。因为你真的不知道哪位菩萨心肠的大师会去主动找到你,给你传道授业解惑。如果自己都没有仔细的去动手尝试,没有去找到自己的困惑点在哪里,再高的高手也无法三两句话能给你解释清楚,你还真以为可以随随便便移植一下记忆么?就像一个虔诚的信徒在哪里求上帝:上帝啊,求求你,让我中大奖吧!上帝回答他:那你(TMD,语气助词)也得先买注彩票先!道理很简单:若要得到别人帮助,必须先保证在求助于别人之前自己已经尽了最大的努力了;不愿意一点点把基础打牢的人是浮躁的人,若无神奇因缘,指望别人将他们的问题一扫而光基本是不可能的事情。
我熟悉的测试工具不多,但是也了解不少,我比较讨厌比较这这那那的工具,在抵制工具至上论的同时,我也不介意反复再三地宣扬我的观点:我们是做测试的,但绝大多数不是做测试工具的测试的,所以没必要为了工具的好坏去争论;我们以我们的被测系统为核心,我们以满足自己的测试需求为根本目标,一切工具都只是整个测试过程中的一些手段而已,没有什么事情是以手段为核心而对根本目标置之不理的。我们部门有位对WEB开源测试工具比较熟悉的同事,他自己出了一本关于Selenium实践经验的书,据说口碑还不错,只可惜他在封面上就开始痛批QTP的种种不是,我看了之后感觉五味杂陈,不知该以之为荣还是该为之伤心。之所以该伤心,并不单单是因为他对QTP工具本身的贬低,因为他这么说恰恰说明我可能在QTP的使用上比他熟悉得多。我主要是对这种妄下结论,排斥性太强的看法与做法很不以为然,说难听一点,简直是死脑筋嘛,这不是我们学习自动化测试工具与方法所应有的态度。我觉得要想全面学习自动化测试,一定要抛开测试工具的门户之见,否则很容易陷入偏执的僵局,真的会被一叶障目。
一个人如果对自动化测试若只是初窥门径或者尚未入门则罢了,若是要熟练掌握一种测试工具的使用,那就该从基本的功能到框架的搭建都能了然于胸。熟练之后,如果有精力的话,就可以去深入研究和分析自动化测试抛开形形色色的工具之后又该是什么一种意识形态,有什么规律和章法。若非如此,我们对自动化测试的认识始终停留在对一种测试工具的理解上,而不是对测试的理解上。这样,你把QTP的录制、参数化叫做你的测试框架,把Selenium使用JUnit的框架叫做你的测试框架,把我们建设起来的自动化测试管理平台工具叫做你的测试框架。可惜对真正帮助组织我们的自动化测试开发、运行,优化我们的自动化测试开发、运行的一套方法没有去摸索,或者没有将之与我们的系统测试结合起来落地执行,更没有去做方法论上的提炼升华与实例化的开发。如此这般,我们就错过了很多凌驾于测试工具本身的,有价值的、有趣的一些东西,而得到这部分东西,哪怕只是其中的一部分,我们就会明白,只要是做测试,核心的东西还是操作描述、测试数据、预期结果那点东西;知道这一点,就会知道用什么工具来做自动化,差别只是在手段上而已。真正精通自动化测试的人,其实并不见得他们对测试工具本身使用或者编码的技术是最强的人,但他们至少是懂得如何把“测试”和“自动化”这两个关键字有机结合的一些人;在他们看来,在自动化实施过程中,规划和需求要比技术和工具本身重要得多。
可能有人会说:先莫唱高调,你觉得我们该如何学习和研究呢?我的回答是:很简单,就是把自己实践得到的经验加上别人实践得到的经验揉合一下,其实总结起来有三点(当然如果你愿意的话,你可以去分成十三点、二百五十小点去说):
不停的实践:使用一两种工具在不同类型、不同架构、不同行业的系统上去实践。真能用心学习和实践,一年半载便足够了,至少工具驾驭上应该不输现在90%的人,但像QTP的使用,能够坚持数年录制、参数化而不改变的人,不在我们讨论的范围之内。我见到过有位仁兄,09年的时候还在在论坛询问一些很简单很基础的QTP工具使用问题,10年就已经自己搞了一些很有技术含量的专题讲座了,学习速度让我很惊讶也很佩服。这都是他通过一点点摸索尝试获得的成果,相信将来更大的成就对他来说也不会很远。
多听多看:听别人如何说,看别人如何做。除了要多于自己身边的同事多学习沟通之外,平时抽空多到网上去看看别人的说法和做法,结合自己在实践中的感受和困惑进行思考总结。拿句套话来说,这是一个“去伪存真”的过程,面对海量的信息,如果缺了有效的鉴别,很可能就会被别人的观点所迷惑或者造成更多的困惑。其实无论作者观点的对与错、是否有价值并不在于他这篇文章本身,我们只有认真地读了、想了、实践了,有所斩获了,才能不枉作者码字的一番心血。
看书不如看帮助文档:无论是谁写的书,写的什么书,书中所讲述的观点都是依照作者的知识、阅历去陈述的。而最可悲的是有些作者著书的动机可能会不单纯,或为名、或为利,而知识共享与传承神马的对他们来说都是次要的。这样一来,书中可能会充斥着“绝对”、“一定”这类字眼,将一些不成熟甚至是错误的观点灌输给读者。时过境迁,作者未必不知道当初自己错了或者有疏漏,但是鲜有人肯出面勘误澄清,所以说:读书有风险,购买须谨慎。别的行业我不敢说,但是关于自动化测试,我见过这样的工具说明书,好几本,读起来感觉就是花几十块钱雇了个蹩脚的翻译,把英文的帮助文档给丢三落四的翻译了一通。至于英文的著述如何,我就没再研究了,总之学的过程中若想看参考说明书,我还是建议配上一本词典,去看帮助文档吧。如果刚入门就想凭借一本书变精通,那么观念里面有些东西可能以后很难改变了,无论它是对的还是错的。
例行总结
最后,我想说句话与大家共勉:不要盲目崇拜什么权威、什么技术专家,只要能够勇于面对你本该面对的问题,并且努力解决它,很快你就是专家。当然,你这个专家与其他专家一样,都是可以被很快超越的,所以也不要迷恋自己专家的头衔;继续虚心学习,方能立于不败之地。这些都是很俗套、很简单的道理,看得开,一切都是风轻云谈、海阔天空;看不开,则有可能走火入魔、害己害人!
武侠崇尚的是:天下武功,唯快不破!同样,在自动化测试领域中,要想做高手,那么你要快快地工作,快快地遇到问题,快快地解决问题,快快地进步吧;然后快快地被赏识,快快地涨薪升职吧。
分享到:
相关推荐
人们在谈到软件测试自动化时,首先会想到测试工具,包括功能测试工具、性能测试工具等。...也就是说,测试脚本的开发和维护直接关系到软件测试自动化的成败,至少对自动化测试的投入产出存在巨大的影响。 测
一些负责基础性组件测试的团队,比如底层平台、SDK等,或者是负责功能通用性高的产品,比如防火墙、邮件系统等,都可以做到比较高的自动化率,而且自动化测试开发的过程通常也没有那么纠结。相比而言,强应用层业务...
KPI关注的是员工是否按照既定的标准完成了工作,适合于那些任务明确、可度量性强的岗位,比如客服中心的工作效率等。KPI设定的目标通常是数量导向,分数越高代表绩效越好,往往与薪酬和奖励直接挂钩。 尽管OKR和KPI...
本文档资料适用于java php ssm springboot Vue python nodejs 微信小程序 Android app等,写文档不要纠结于是什么语言的 只需要把文中的内容替换成你需要的就行了哦,最少文档的各种图,比如说功能模块图,流程图,用列图...
14. **自动测试与人工测试结合**:自动化测试提高效率,但无法替代人工测试,两者结合可互补,提升测试覆盖面。 15. **评估测试过程**:定期评估测试过程,确保其有效性,记录测试过程,以便沟通和评估测试成果。 ...
总结来说,《里斯》中国零食饮料品类研究报告将揭示Z世代消费者的消费心理和行为模式,为企业提供适应这一群体的创新策略,包括但不限于品牌故事的塑造、健康产品的研发、个性化服务的提供、社交媒体营销的运用以及...
自动化测试工具如Selenium、JUnit和Jenkins等,会在课程中有所提及,帮助读者掌握自动化测试的基本技能。 除此之外,还会涉及到回归测试、性能测试、压力测试和安全性测试等专项测试。回归测试用于验证修改后的代码...
面对复杂的bug分类和责任归属问题,测试人员应以解决问题为导向,而非过分纠结于问题归属。 勇于承担责任是测试人员的优秀品质。面对线上问题,不应过于纠结过错归属,而是积极寻求解决方案,避免类似问题再次发生...
测试原则包括:尽早并持续地进行测试、完全测试是不可能的、测试应基于风险、测试应自动化等。这些原则指导着测试工作的实施。 2.5 软件测试策略 测试策略可能因项目规模、类型和时间限制而异,常见的策略包括冒烟...
里斯:2023中国零食饮料品类研究报告:如何给纠结的Z世代做创新
在软件开发过程中,软件工程是一门至关重要的...使用这些模板,你可以更加专注于解决问题,而不是纠结于如何编写文档或规划流程。因此,对于想要提升工作效率和项目管理水平的人来说,这是一个值得下载和利用的资源。
在学校的教育体系中,我们往往习惯于寻找标准答案,但现实工作中的问题往往没有固定的答案。面对这些没有标准答案的问题,我们需要根据具体情况做出分析和权衡,这种差异性常常会导致纠结现象的出现。 作为产品经理...
文件描述中提到的"源码"可能包含了实现这一平台的核心代码,包括但不限于数据采集模块、数据处理模块、可视化展示部分以及自动化响应机制等。源码的分析和理解可以帮助我们了解整个系统的架构设计和工作流程,以便于...
Codetest 能够同时监控整个应用程序,无需纠结于选择哪部分程序进行测试或配置相关工具。即使在程序超出高速缓存或者发生动态内存再分配的情况下,它依然能够生成可靠的追踪和测试结果。这使得工程师能够在测试过程...
9. **期望与现实**:“我原本以为只要不联系、不回应,我就能从你的剧本里抽离”,面对期望与现实的差距,我们需要学会调整心态,接受现实,并从中找到新的方向。 10. **等待与行动**:“我告诉自己一个人也要坚强...
同时,需求端的不确定性,如房地产市场的波动、基础设施建设的进度,使得市场对未来供需平衡的预判复杂化。 2. **成本压力**:原材料价格波动是影响钢铁成本的关键因素。铁矿石、焦炭等价格的上涨,加大了钢铁生产...