我在网上看到很多人这么说“不知道是不是该学自动化,会不会有种功能性能性测试都还没玩透就要学自动化的感觉,怕步子迈大了不好,但是看着大家都在说自动化,心里着急得很。”
这里我其实有几个观点:
1 不应该过分强调自动化测试的重要性。
2 在学习顺序上,自动化测试不是非常高优的。第一是因为,测试理论和设计能力更重要; 第二是因为,如果你真的进入了高阶阶段,它对你一定不会很难。
3 自动化测试对职业发展(升职加薪)是有很大帮助的,这是很多人想学的原因,但只学自动化,而不培养其他测试能力,路肯定走不下去。
这里对2和3稍微解释一下。
软件测试的硬能力基本有两条主线:
1 对被测物的了解和理解的程度; 这里指的是计算机基础知识,工程实现架构和研发逻辑。
2 测试理论,测试设计,过程和手段; 自动化测试是这里的一个子项。
软能力这里就不谈了(敏感度,沟通和表达能力)。
举个例子:
假设你去测试一个精密而复杂的机器人,你可以用各种手工的方式去测试它(米尺测量高度,肉眼测速,手动感知表面是否平滑)。
久而久之你累了,于是你自己也做了一个小型机器人去代替你测试这个精密机器人,这就是所谓的自动化测试。
此时很明显我们可以看到:
1 你需要对那个精密机器人有足够的认知,甚至对内部有理解和剖析,否则你根本无法良好地测试它。
2 基于1,你需要一些测试理论和测试思路,才能很好地设计你的测试。
3 基于1和2,你完成了手工测试。
4 基于3,你为了代替你的手动工作量,你完成了自动化测试。
所以你可以看到,公式其实是:
对被测物的了解 + 测试设计 = 手工测试 -> 自动化测试
你可以理解自动化测试在什么阶段上了,以及它的基础是什么。
然后我们再来看自动化测试的难度。
这里其实大家很容易忽略一个简单的事实,那就是:
如果我对我要测的精密机器人已经很熟悉了,那么你造一个小型的测试用机器人就几乎没有难度。
如果你不知道怎么造一个小型的测试用机器人,那么你大概率对这个被你测试的精密机器人也不怎么了解。
这里我可能会说一个冰冷而严肃的事实,也不是为了自己装逼或者别的什么:
如果你仍旧在为自动化测试而困扰,学不会或者要不要学,大概率你仍旧是一个不太合格的测试; 因为你的这种困扰,基本可以说明你对正在测试的东西缺乏了解。
而只学习自动化测试并不能帮你改善这一点。
这是因为单纯学习自动化测试,它只是一个工具,甚至很多时候是让你一知半解,囫囵吞枣地解放手工劳动的工具。
要想改善这一点,就要好好地去了解,你正在测试的东西是什么; 不要碍于面子,多问; 保持好奇心,多查; 保持实践精神,多身体例行地尝试,甚至自己也去写代码做工程。
然后你会发现自动化测试在这个之后,那都不是个事儿。
所以回答一下你的问题:
1 任何时候,了解自动化是怎么做的,这其实是什么时候都不晚的,什么时候都可以开始。
2 决定什么时候应该把手工转为自动化,这取决于你的手工重复劳动的程度。
3 如果你认为自动化很难,要特意去学,这说明你的计算机基础知识和技能真的不太行; 此时实际上你应该学习的不是限定死在自动化这个工具,而操作系统,网络,算法与数据结构,这类通用计算机知识,以全面补充能力(因为他们也包括测试能力)。
而只学自动化可能会让你快速解决问题之后,没有得到本质的提升。
所以吧,没事儿自己给自己写点代码玩玩,用用top和netstat,自己搭个nginx或者flask玩玩,起个mongo玩玩,实现一些继承和封装,这种提升会非常快。
4 测试门槛低,但你如果想要想上走,台阶是很长的。
深度讲解软件测试概念与方法论,打好基础,从零起步,欢迎关注: