引用
前言:
- 自动化测试不只是测试的自动化,应当是流程的自动化
- 自动化测试是一种软件开发交付过程
- 自动化测试成败在于自动化项目的质量与可维护性
自动化测试对于在黑盒与手工测试工作的大部分人来说,都会比较向往,因为自动化测试很有成就感; 对于直接在自动化测试行业工作的新人来说,会比较迷茫,因为这个较为新生的领域不像开发行业那么成熟;
其实,自动化测试和手工测试一样,是一种测试方法,只是你智力与思维转化的结果; 关键看你是否适合,心态是否正确.
同时,它的发展前景不亚于任何开发行业,你既可以接触专业的自动化测试技术,又可以掌握相关的开发技术,并且可以接触专业的测试专家.
自动化测试的范围
一般我们很难直接限定自动化测试的内容,但以我的理解,先从不适合的方面排除之,你可以试着看一下.
在混乱的项目流程中,不适合推广和试行自动化测试. 自动化测试也是一种项目交付过程.
如果被测项目流程不明确,过程责任不清,没有准确公平的数据度量,
- 开展了自动化测试效果难于评估,做也白搭
- 没有清晰的交付测试流程,自动化测试经常的变更成本,以及没有开发支撑的自动化只能从表面下手,导致维护成本过高.
- 自动化测试能够将流程工具化,这点体现的效果易于得到整体研发的认可与支撑,效果也是极显著的.
打个比方,本来是在公路上(不完善的流程)运行汽车,你非要改进效率跑火车(自动化),适得其反.
自动化测试的关键点之一,在于流程,流程在于人去完善,去改进.然而流程在年少时人的性格,在年长时也改变不了太多,我们自动化要符合流程去做,需要完善的我们去补充完善.而完善流程,不是一味的提要求,而是合理的惯力的要求,更多的时候应该建设平台来支撑流程,让人做到最简化.
一旦流程的完善,自动化随之正规化,可量化的自动化需求,项目成员明确自动化的成本与成果,以及相关自动化约束(例如某个自动化接口实现). 自动化的成功自然随之而然.
所以,自动化测试不只是测试的自动化,而应当是整个流程的一种自动化与完善.
在实施自动化的时候,处理流程相关,最好遵寻:
完成相关自动化项目显示效果 -> 要求改进流程 -> 实现流程过程的自动化
这样带来的项目压力较小,容易获得所需的资源.
自动化测试的过程
有了流程不代表我们肯定会成功,更何况一般需要我们通过自动化测试的成功来带动流程的推进.
自动化测试首先是一种软件开发与交付过程,无论最后的执行与维护是谁!
自动化测试与软件开发过程基本相同,也要经历: 需求->设计->编码->交付 四个核心过程. 与普通的开发过程不一样的是,
- 自动化需求并不是实际的强制性需求,能够有弹性,最关键的是自动化项目所定下的效果,各利益相关者必须在自动化项目效果期望上达成一致.
- 一般自动化设计过程相对较为简单,如果有可伸缩好的框架,这个设计过程可以在很短时间搞定.
- 自动化的维护周期会比较长,所以设计高维护的自动化脚本是必然的.
在实际中,从手工测试过程中学习自动化的人,甚至有对版本管理工具如何管理代码不清楚,那么他去做自动化必然是失败的.
当项目经理对自动化效果期望很高时(这点可以理解,一般人对自动化期望都比较高),而你没有将实际的风险与效果评估展现与说服给他时,就算自动化再成功,这个项目依然得不到所得的效果.
我们在统计自动化成本时,往往发现执行维护阶段最终会超过自动化项目开发阶段.
我们应该怎么做自动化项目
看下我们的目标:
选择一门语言:
根据实际自动化需求,我们选择了ruby作为基础开发语言. 实际运用中,推荐使用ruby或python具备完备的模块管理与纯面向对象,,有助于建设高复用的框架与平台.
实现快速迭代:
每天日结,自动化代码要有完备的单元测试,这点通过ruby很容易实现,通过极简洁的单元测试框架让任何人都愿意做自动化代码的单元测试,这点很重要,因为你的代码再也没有人去手工测试了.
实现DRY与业务逻辑分离
DRY即Don't Repeat Yourself(不要重复自己), 永远不要让相同的逻辑代码复写两次. 一旦出现,将其分离封装,如果是公共代码(可能大多数项目会用),将其独立为gem包等形式.
业务逻辑分离,将用例业务层为独立,逻辑处理再次封装,MVC的思想作为参考点.
实际上,自动化项目更适合做敏捷模式的开发过程,如果自动化项目都没有"敏捷", 你的被测项目又如何"敏捷" ?
我们应该关注什么?
除了自动化项目完成时间是重点外,我们要去关注:
1. 质量问题
2. 可维护性
质量关乎自动化项目的生命,
一旦自动化项目的经常跑失败,失败的原因经常是由于脚本引发,并且不收敛,那后果可想而知:
- 没有人再相信自动化的运行结果
- 没有人再愿意尝试不断的投入执行与分析一个无法发现有效bug的自动化测试项目中
- 没有人再愿意投入下一个自动化过程中
可维护性是指后续的产品变更引起的自动化脚本更新快捷方便,
做的好的自动化是超前完成维护的,做的烂的自动化是无法维护的.
可维护性表现可在于1,修复一处代码即可完成相关所有逻辑的处理 2,便于增加新用例与复用代码.
我们谁也不愿意将自动化的脚步陷入不断的无限的维护分析的泥潭中.
总结
上面一些感悟,例子不多,但将我认为最重要的东西表达出来了,很多东西并不是死板的,呆滞的.
自动化领域更讲究创新思维.
能够将你所看到最繁琐,最无聊的事情通过自动化解决了,这就是做好自动化项目的最核心思想.
但自动化之路不是一朝半夕可以掌握,很多弯路也许你是必须要走过. <异类>一个观点叫 1万小时规律, 你不去认真做一万小时的事情,你是不可能成为高手的. ( 1万小时大概需要5-6年 )
在这里共享一些心得,也与刚入门的兄弟姐妹们共勉之. 共同进步.
最后推荐一个最近文章<测试技术专家之路的成长>,我想自动化专家的发展也与此类同:
http://www.51testing.com/?uid-293557-action-viewspace-itemid-247194
多实践,找出与自己公司合适的自动化发展之路,而不是好高鹜远,更不是以技术牛人自居,只有这样,才能脚踏实地,一步步走好适合自己的发展历程.任何行业不都这样吗?
分享到:
相关推荐
《软件自动化测试成功之道》是一本深入探讨软件自动化测试策略、方法和技术的专业书籍,而随书光盘"QTP_Codes.rar"则包含了与书中内容相关的代码示例和实践资源,旨在帮助读者更好地理解和应用所学知识。QTP,全称...
Python 和 Selenium 是一种常见的自动化测试组合,尤其适合初学者入门。在本文中,我们将详细讨论如何搭建这个自动化测试环境。 首先,我们从安装 Python 开始。...祝你在自动化测试的道路上越走越远!
北京市的开放道路总里程全国领先,并在持续促进企业规模化测试和测试里程领跑全国。 整体而言,北京市在自动驾驶车辆道路测试方面的工作思路清晰,既重视安全,又注重创新,力求在保持有序创新的同时,实现智能网联...
办公室自动化(Office Automation,简称OA)是现代企业管理和办公流程中的关键组成部分...参考文献和专业指导则为企业提供了理论支持和实践经验,帮助他们在自动化转型的道路上少走弯路,实现真正意义上的智能化办公。
在IT行业中,软件测试是确保产品质量的关键环节。本电子教程旨在为初学者提供软件测试的基础知识,帮助你踏入这个充满挑战和机遇的领域。...在实践中不断学习和积累经验,你将在软件质量保障的道路上走得更远。
6. **自动化测试**:利用工具自动化执行重复性任务,提高效率,如Selenium用于Web应用测试,Junit用于Java单元测试。 7. **敏捷测试**:在敏捷开发框架下,测试是迭代和增量进行的,强调快速反馈和持续集成。 8. *...
深入学习Python,掌握更多的库和框架,如BeautifulSoup(网页抓取),Pandas(数据分析),以及自动化测试工具如Robot Framework,能让你在软件测试领域更加得心应手。不断探索和实践,将使你在Python编程和测试自动...
从全球范围来看,中美两国在自动驾驶技术的应用上走在了世界前列。 然而,自动驾驶技术的应用也面临挑战。波音737Max空难提醒人们,自动驾驶程序需要针对不同机型、不同路况进行充分的测试和调整。737Max机型半年内...
- **目标设定**:计划在未来一年内,熟练掌握自动化测试框架设计与实现,并带领团队完成至少一个自动化测试项目的部署。 最后,再次感谢公司给予的成长平台和支持,期待能够成为正式员工,为公司的发展贡献更多力量...
在encore的基础上,结合JUnit测试框架,我们可以构建出一套完整的自动化测试解决方案。JUnit是Java领域广泛使用的单元测试框架,它允许开发者编写可重复执行的测试用例,确保代码的正确性和稳定性。通过JBoss encore...
文中提到的DevOps转型道路的障碍包括10个深坑,例如流水线设计不合理、安全能力和DevOps割裂、自动化测试不能被信任等问题。为了避免这些坑,文档提出了一系列实施DevOps的要素和关键阶段。 实施DevOps的五个关键...
2. 自动化测试框架:探索Selenium、Junit等开源测试框架,提升自动化测试的效率和效果。 3. 敏捷测试:理解敏捷开发理念,学习Scrum、Kanban等敏捷方法在测试中的实践。 4. 安全测试:关注应用程序的安全性,学习...
随着技术的发展,自动化测试工具如Selenium、JUnit和Appium等变得越来越流行。它们能减少重复性工作,提高测试效率和覆盖率。 六、敏捷与持续集成 在敏捷开发环境中,测试是迭代和持续的过程。持续集成强调频繁集成...
性能测试让我们关注系统的负载和压力承受能力,自动化测试则能提高效率,降低重复劳动。此外,了解并掌握敏捷开发、持续集成/持续交付(CI/CD)等现代测试实践也是提升测试效率的重要手段。 在新的一年里,我将继续...
3. **质量管理**:书中强调了质量控制的重要性,提出了引入持续集成、代码审查和自动化测试等方法来确保软件质量,减少bug的产生。 4. **敏捷开发**:对于小型企业来说,敏捷开发方法如Scrum或Kanban可能是理想的...
政策层面,各国政府逐步出台鼓励自动驾驶测试和应用的法规,如开放测试道路、简化审批流程等,为商业化的步伐铺平道路。市场需求方面,随着消费者对安全、便利和效率的追求,以及环保和可持续发展的诉求,自动驾驶的...
作为一名软件测试工程师,我在2019年的试用期中经历了许多...尽管还有许多不足,但我会坚持不懈,勇于尝试,持续努力,因为我坚信只有通过不断的努力和学习,才能在软件测试的道路上走得更远,最终实现个人的职业目标。
【QTP高手进阶指南】是针对自动化测试工具QuickTest Professional(简称QTP)的一份深入学习资料,尤其适合已经具备一定基础的测试工程师提升技能。QTP是HP(现为Micro Focus)公司开发的一款功能强大的自动化测试...
9. **目标与愿景**:长沙追求“三个走在前列”,即在关键技术研发、产业集群培育和应用示范推广上保持领先地位,推动更多智能网联汽车项目在长沙落地。 10. **应用示范计划**:长沙已规划在年底完成国内首条7.8公里...