该如何学习自动化测试

该如何学习自动化测试

很多做软件测试的朋友谈论,如何学习自动化测试(Automation test)。 有些人说平常的测试工作很枯燥无味,没有技术含量,迷失了方向。 还有的说闲得要命,想学点自动化测试。

自动化测试是我们高级软件测试人员必备的技能。高级软件测试人员不光会做测试,还会做开发。

我从自己的经验出发,总结了下我对自动化测试的看法。如有不对的地方, 还请大家纠正。

软件自动化测试的学习步骤

  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 UI 的自动化测试程序
  • 对Windows 窗体UI的自动化测试程序
  • API测试, 比如(测试WCF service, Web API 等)
  • 数据库测试, 比如测试存储过程
  • 接口测试 (这种只能用自动化测)
  • 单元测试
  • 性能测试, 性能测试都需要用到自动化

Web自动化测试分类

目前大部分项目都是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

该如何学习自动化测试

该如何学习自动化测试
上面是我收集的一些视频资源,在这个过程中帮到了我很多。如果你不想再体验一次自学时找不到资料,没人解答问题,坚持几天便放弃的感受的话,可以加入我们扣扣群【313782132 】,里面有各种软件测试资源和技术讨论。
该如何学习自动化测试
当然还有面试,面试一般分为技术面和hr面,形式的话很少有群面,少部分企业可能会有一个交叉面,不过总的来说,技术面基本就是考察你的专业技术水平的,hr面的话主要是看这个人的综合素质以及家庭情况符不符合公司要求,一般来讲,技术的话只要通过了技术面hr面基本上是没有问题(也有少数企业hr面会刷很多人)
我们主要来说技术面,技术面的话主要是考察专业技术知识和水平,上面也是我整理好的精选面试题。

赶快进来学习了解与交流吧。