一、
前几天,面试一位某校大四实习生。
笔者:来应聘之前是否看了网上发布的我们公司的职位说明书。
学生:看了,我可以做的。
笔者:实习的主要内容是执行测试用例,会比较繁琐,枯燥。
学生:萌呆呆地笑着看笔者,说“其实我很想做自动化测试的”。
笔者:为什么呢。
学生:因为那样才高级。我看了我们培训老师给我们放的自动化测试演示视频,并了解到这是个发展趋势。
笔者:一脸的诧异,看着这个稚气未脱,天真、直率,学习成绩不太好,基础比较薄弱的学生,心绪复杂。
忽然,脑海中又浮现出,大约5年前,在参加一次号称是亚太地区的软件研发峰会时,主办方邀请了美国某牛X公司的测试大牛,一上演讲台,就在大屏幕上演示他那貌似神一般的自动化测试。给我们介绍说他们团队有多少人,花了多长时间,码了多少w的测试代码,当时遇到了哪些技术问题,是怎样解决的。这些代码一直在无人直守地运行着,工作着。
然后呢,然而,并没有然后,当时笔者并没有Get到什么,反而心存不少疑问。
下课后,有好事的笔者,特意过去请教老师是否有嵌入式产品自动化测试的案例,回答无果。
……
二、
关于自动化测试,通过亲身经历的一些案例,所接触的人和事。笔者早想拿起笔,写点什么,纠纠偏,扩展视野,看到更多的发挥空间。
曾级,有业内的一位朋友向笔者抱怨说,当初在上海花了近2W银子专门报班学自动化测试(selenium
web自动化测试框架,python编程,数据库,linux系统知识等)。原来在外资公司大部分时间还可以接触自动化测试,可是随着项目的结束,需求渐渐没了,人员转向其他项目,原来的代码项目没有计划继续维护或开发。想着通过专业的系统培训,出来找工作更容易。而现在找了近半年,实际的市场在国内很少有公司有独立的自动化测试岗位,都是与之前公司差不多。也因此,低不成高不就,不合心愿,磨到现在。
当时与这位朋友交流时,马上想到达尔文进化论中的“物竞天择,适者生存”规则。在测试领域,最重要的是你的测试思维,不同的思维决定着你用不同的测试策略。不同的策略决定着不同的测试方法、手段。而自动化测试是整个测试过程的一小部分,建议他完全可以扩大视野,应用自身优势,在更广阔的测试生命周期中寻找自动化的应用点。
此也就是笔者想跟大家分享的观点:超越自动化测试,转向测试自动化。
三、
那么,在往下讲述之前,咱们需澄清两个定义。
1、什么是测试自动化
2、什么是自动化测试
【测试自动化】:是一种全局性的,把整个项目的测试流程看成一个体系化的测试生命周期(STLC),其中每一阶段的流程、任务,都纳入自动化的思维,用技术手段解决范围更广的全链测试流程中的输入与输出物。
【自动化测试】:一般情况下,目前大家所言的自动化测试,是指把原人工执行的测试用例转换成计算机能识别的脚本用例,让程序自动执行的过程。
从一个产品的全链路的测试生命周期来看,测试自动化是全局的,多维度的。
而自动化测试,是局部的,或专项方面的,强调测试执行的自动化。
只从定义理解,或许你觉得还是有些抽象。
好,接下来,咱们一起来看,如下图所示的测试生命周期示意图。
不失一般性,一个项目在测试启动后,开始测试策略的制定,接着测试计划,方案设计,用例设计,然后测试执行,通过N次迭代,最后测试归档,软件版本发布。
图中可见,通常情况下说的自动化测试,仅是自动执行用例。而测试执行仅是测试生命周期的一个环节。实际项目测试过程中,这些环节是相互影响,相辅相成的。特别是测试设计与执行环节,需要不断增加、修改用例。而在测试设计阶段,有很多测试活动,完全可以考虑自动化,例如:如果测试对象需要准备多个Windows操作系统环境(如win10,win8,win7,专业版,家庭版等),则可以考虑虚拟机技术,事先搭建好所需要的测试环境,等需要用时,一键启动。还有如下常见的测试:
1、容量测试,可事先自动生成海量的测试数据;
2、安装测试:如何让测试人员每天或经常面对的安装、升级软件自动地进行;
3、兼容性测试:升级兼容性的测试中,升级前后用户的数据可以自动比较吗;
4、内存泄漏测试,CPU占用性能测试等,需要事先分析,用哪种测试工具,是否要二次开发
等等,这些测试方法、手段,需根据产品或项目的目标,在测试策略阶段分析、考虑,在模块的测试分析与设计中细化、落实。
……
在不同的阶段,不同的测试活动中,甚至是与测试相关的接口活动,如软件配置管理,测试与开发的版本发布流程、接口等,都可充分应用自动化测试的思维,采用不同的技术,应用工具或开发脚本、程序,提高测试效率,而不仅仅局限于自动化功能测试用例。
ɬ�c���