Why Automation Testing
  现在似乎大家都一致认同一个项目应该有足够多的测试来保证功能的正常运作,而且这些此处的‘测试’特指自动化测试;并且大多数人会认为如果还有哪个项目依然采用人工测试来保证代码的正确性的话,那简直是太落后了,太不可思议了。
  但是在我现在的项目里,之前大部分的情况下我们还是在使用手动测试,项目依然在每周一次井然有序的上线着。当然有部分原因是因为项目业务和技术上的特殊性,但是这开始让我思考:我们究竟为什么要进行自动化?什么情况下该进行自动化?自动化测试使用与所有的测试场景吗?
  我认为自动化测试对我们的项目之所以重要,有几点原因:
  Automated Software Testing Saves Time
  我们的项目现在以每周一次的频率上线,由于项目本身的特殊性,每次上线后要进行一次大规模的手动测试来保证不会break任何已有功能。这样的测试每周一次的重复着,测试的内容也毫无变化,这消耗了团队成员大部分的时间和精力。所以引入自动化测试之后我们能够运行自动化测试来完成这些重复性的工作,节省了时间和不必要的劳动。
  Team Morale Improves
  并不是说如果没有测试我们对自己的代码没有了信心。但是无论多么厉害的程序员都没有办法保证自己的代码能够毫无差错的运行,尤其是当这些代码需要和一个已有的项目结合起来运作的时候。当我们的代码和别的项目结合的时候,我们有时会担心我们的代码能够单独的运作,但是却会在集成后破坏一些原有的功能。特别是在这种情况确实发生过之后,这样的担心又会被进一步放大。自动化运行的测试能够在一定程度上保证我们的代码是按照我们的期待运作的,这加强了开发人员对自己的代码的信心。并且这种信心不是出于程序员对自己的代码的欣赏,而是自己的代码能够真的经受检验后正常运作。同时,这样的信心也来自于自动化测试带来的第三个好处:
  Increase Test Coverage
  正是因为自动化测试可以覆盖到更多的人工测试需要花大量时间精力才能覆盖到的测试范围和深度,我们才能知道我们的代码在一定程度上已经能够经受住考验了,才能对自己的代码更有信心的继续后续的集成和开发。
  Selenium + Python
  Selenium是一个自动化浏览器的工具,常被用来做web应用的自动化测试。它与其他的测试工具相比优势主要在于:
  Selenium 测试直接在浏览器中运行,像真实用户所做的一样。
  Selenium webdriver可以运行在各种不同的操作系统的众多浏览器平台上:

 

Google Chrome 12.0.712.0+
Internet Explorer 6, 7, 8, 9 - 32 and 64-bit where applicable
Firefox 3.0, 3.5, 3.6, 4.0, 5.0, 6, 7
Opera 11.5+
HtmlUnit 2.9
Android – 2.3+ for phones and tablets (devices & emulators)
iOS 3+ for phones (devices & emulators) and 3.2+ for tablets (devices & emulators)

  另外,selenium提供多种编程语言支持:Java, Javascript, Ruby, PHP, Python, Perl , C#。
  在这么多的语言支持中,为什么我们选择了python呢?
  首先,python是一门非常容易入门的面向对象的脚本语言。我在开始写python+selenium之前完全没有python的编程经验,但是由于它的语法相当简单,并且表意和英语十分接近,因此让人能在简单的学习之后快速的上手。
  另外,作为一门脚本语言,相较于java来说有了天生的优势:解释执行。这意味着我写了几行代码,只需要一行命令可以快速的运行起来看到结果,而不像Java那样需要漫长的编译打包等过程。完成同样的功能,python只需要一个py文件和一行命令,而java则需要整整一个project,然后编译打包发布等等。算使用maven,也要进行很多相关的配置,过程相当麻烦。
  在将python与selenium结合起来写functional test时,只需要在机器上配置好python的环境,下载selenium(easy_install selenium),编写测试代码,然后一句简单的命令:python xxx.py 可以将测试代码运行起来。