接触了不少同行,由于他们之前一直做手工测试,现在很迫切希望做自动化测试,其中不乏工作5年以上的人。 本人从事软件自动化测试已经近6年,从server端到web端,从API到mobile,切身体会到自动化带来的好处与痛楚,在此分享一下个人体会。
【B站最通俗易懂】Python接口自动化测试从入门到精通,超详细的进阶教程,看完这套视频就够了
想做自动化,首先得了解一下自动化测试的一些常见问题:
什么是自动化测试?
为什么进行自动化测试,答案要从自动测试的收益和人肉测试的成本说起: a. 自动化测试节约成本(根据项目) 毕竟自动化测试确实解放了一批人力(人力成本才是IT公司最大的成本),可以让机器没日没夜的执行一些重复劳动. b.有些测试项目手工很难实现(手工成本较高) 比如12306的压力测试、负载测试,同时找那么多人去测试不现实可以通过机器去模拟. c.项目质量流程需要 比如版本管理需要build verify,以保证check in的code不会影响版本库。类似于smoke test
优点 避免测试人员因重复劳动产生厌倦 提高测试效率 保证每次测试地一致性和可重复性 更好的利用无人值守时间 进行一些手工无法进行的测试 维护成本相对比较高 缺点 系统开发时间不一定能缩短 没有手工测试发现缺陷多 UI layout issue 不容易发现
有以下几个特点的项目比较适合自动化测试: 1. 项目变动少 2. 周期长 3. 项目资源足够(自动化不是一个人完成的,需要一帮人长期维护) 举例说明: 互联网项目,一周内要上线,你不上线别人上线人家就不用你的,项目周期短,变动快,你自动化还没做好,项目说不定就下线了。比如某宝双12活动相关项目,一周之内就下线了。 适合做自动化测试的项目,比如某宝客户端,每个release,大部分功能都不变,并且3-5年内项目不会下线,这个就比较适合自动化.
这个问题是写给想要做自动化测试的人,或许你以为软件测试的门槛很低,低到任何人都可以做,随便点点就可以了,这个行业太low了,所以你想做自动化测试,提升自己的逼格,我想说手工测试并不low,如果让一个什么都不懂,一点业务基础都没有的人去做测试,能测出来问题吗?不要忽略你的业务知识储备. 你的业务知识储备的积累能让你成为不可替代的行业专家,而做自动化的码农会因为一个时代的更迭被小鲜肉替代。 扯了这么多,究竟什么什么样的人能做自动化测试? 我的理解分一下几点: a. 拥有代码能力 掌握一门开发语言,java、Python、ruby、c# b. 熟悉被测系统 比如你是web测试,你就得懂js、css、html、xpath 你是移动端测试,你就得具备Android 开发基础和iOS开发基础,会debug app 你是 C/S测试你就要很熟悉TCP、IP协议 c. 掌握一套自动化测试框架(工具) 比如 selenium/appium nunit/testng robot framework/cucumber d. 善于学习,达到知其然知其所以然 IT行业变化太快,每隔一段时间就会出现一些新兴的东西,也会出现原来很火的东西逐渐没落,谁也无法预测。 曾经诺基亚还是手机霸主,靠塞班一统天下,然而不思进取,落得个卖身求生存. 曾经qtp很火,曾经selenium也很火,现在appium也很火 软件行业从桌面软件到web端,又从web端迁移到移动端,谁也不知道下一个是什么。而我们作为软件行业的从业者,不能因为那些很火的东西不火了而让自己没落,一个人最为核 心的能力就是学习能力,如果你善于学习,你就不必担心这些变迁,因为你可以毫无压力的迁移,selenium的原理你掌握了,学习appium简直小菜一碟,因为appium使用的是 selenium WebDriver protocol .如果你能做到知其然知其所以然,你也可以造轮子,改造appium,毕竟现在很多功能需要完善。 如果你没有达到以上的几点,建议你还是做手工测试吧。
很多初学者很纠结,学qtp还是学selenium 我的建议是学selenium,开源的,免费的,你可以下载源码研究,去了解其原理,再者现在selenium的资料不要太多,随便搜搜一大堆,学起来比较轻松。 不建议学selenium IDE录制,当然你可以通过录制一些然后转换为相应的脚本去学习,等你学好了selenium, 再去学appium你会有一种天然的似曾相识。为什么不建议学QTP/UFT?因为收费/臃肿/现在做桌面软件测试的工作已经不太多了。 关于买书,不建议买书,很多书已经过时了,并且质量渣渣,你买了那些书中的code已经不能用了,如果你真的想学,就去官网找example,去相应的社区和群交流,或者直接看API/源码.
总结:
新人学习自动化测试要:
大概步骤如下:
1. 做好手工测试(了解各种测试的知识)-> 2. 学习编程语言-> 3. 学习Web基础(HTML,HTTP,CSS,DOM,Javascript)或者 学习Winform
-> 4. 学习自动化测试工具 ->5. 学习自动化测试框架 -> 6. 实现自动化测试用例 -> 7. 开发自动化测试工具 ->8. 开发自动化测试框架
自动化测试的最高境界是: 开发测试工具,设计自动化测试框架, 让别人用。
自动化测试的本质是:用程序测试程序。 也就是说学习“编程语言”是学习自动化测试的基础。
很多人问我学自动化测试,应该去学什么自动化工具。 我的回答是,第一步:应该先学习编程语言,以后再去学自动化测试工具
自动化测试是一定要写代码的, 编程语言水平的高低决定了自动化测试水平的高低, 有了扎实的编程技术,干什么都可以。
学习编程语言时, 要把自己当做开发人员, 系统地学习各种编程知识。
很多新手一开始,就学习复杂的自动化测试工具, 我觉得这样是本末倒置了。
如果不先理解HTTP协议, 就不会理解Jemeter, LoadRunner, Fiddler, SoapUI这些工具的。
如果不先理解HTML,DOM, 就不会理解Firebug 这种工具的
如果不先理解Win32 API, 就不会理解Windows 窗体自动化测试的原理的。
如果自己没有开发过网站, 就不会理解网站的各个方面,测试起来难免有遗漏。
总之学习自动化测试,需要循序渐进, 把基础打好。
自动化测试工程师的职位叫做: (SDET) Software Development Engineer in Test. 专注于自动化测试
手动测试工程师叫: (STE)Software test enginer. 专注于手动测试
在微软有很多SDET的职位,但是没有STE的职位, STE职位一般都是外包给外包公司的, 目前自动化测试还是非常吃香的。
自动化测试也有非常多的种类,
目前大部分项目都是Web的, 所以我们说的自动化测试,大部分都是针对Web程序的自动化测试, Web自动化测试分两类:
第一类是:模拟用户真实操作,比如,模拟点击鼠标,键盘输入,等,去操作浏览器上的控件。 (代表框架有selenium-webdriver, VS Coded UI)
这类的自动化测试的是通过高级语言(C#, JAVA, Python 等)来调用selenium的一些工具来操作浏览器,帮助我们实行Web UI自动化
第二类是:模拟HTTP请求。 类似于这种【12306火车票网站自动登录工具】, 这方面的知识,目前市面上资料比较少。 (以后我会出一个系列的教程)
应该像开发人员一样的心态去学习技术, 自动化测试需要掌握以下的知识:
了解Javascript, CSS的知识。
熟练掌握DOM和HTML知识, (用来解析Web界面)
熟练掌握XML技术,(需要用XML保存测试数据,用XML展现测试报告)
熟练使用C# P/inoke技术调用Windows API (可以用来操作Winform 窗口)
熟练掌握窗体"句柄"的概念
熟练使用C# 操作Windows 注册表
熟练使用C# 中的Process 类
熟练掌握数据库的基本操作语句 (测试数据库肯定要用到)
熟练掌握HTTP协议的知识 (请参考我的 HTTP系列博客 [HTTP协议详解])
熟练掌握C# 中的HttpWebRequest 类的用法 (用于模拟HTTP请求)
熟练掌握正则表达式
关于软件自动化测试的书,真心不多, 我查过市面上所有关于自动化测试的书,只找到下面这边书, 掌握了这边书,基本上自动化测试就入门了。
测试套件工具: JUnit, Nunit, MSTest, 这几个工具功能都一样学起来比较简单。
性能测试工具: JMeter, VSTS 负载测试, LoadRunner(收费), QTP(收费)
Web UI 测试框架:WebDriver/Selenium, VSTS Coded UI, Watri
Windows UI 测试框架:VSTS Coded UI
其他工具: firebug, Fiddler
相信你如果掌握了上图上面所有的知识技能,并且能够灵活的运用的话,月薪20k以上并不会是什么问题,上图的所有学习资料都已经整理好了,小伙伴们可以下方卡片可以自助拿走