在讲解之前先提一个问题:为什么要做自动化测试?
在公司当中所做的项目基本都是手工测试,虽然也有将手工测试用例转化为自动化测试用例过,但是个人的认识是自动化测试是用在为产品后期维护进行测试的目的,以遍快速持续性的自动化检测项目中的各个功能的稳定。
想要做这两样测试的话必须软件的界面都很成熟了,页面功能变动不大了。产品后期交付界面比较稳定不会做大的调整。
软件自动化测试是测试工作的一部分,是对手工测试的一种补充。自动化测试是相对手工测试而存在的,主要是通过所开发的软件测试工具、脚本来实现,具有良好的可操作性、可重复性和高效率等特点。
自动化测试主要优点:
(1)避免重复工作:对于功能已经完整和成熟的软件,每发布一个新的版本,其中大部分功能和界面都和上一个版本相似或完全相同,这部分功能特别适合于自动化测试,从而可以让测试达到测试每个特征的目的。
(2)提高测试效率:版本的发布周期往往比较短,也就是开发周期只有短短的几个月,而在测试期间是每天/每2天都要发布一个版本供测试人员测试,一个系统的功能点有几千个上万个,人工测试是非常的耗时和繁琐,这样必然会使测试效率低下。
(3)保证每次测试的一致性和可重复性:由于每次自动化测试运行的脚本是相同的,所以每次执行的测试具有一致性,人是很难做到的。由于自动化测试的一致性,很容易发现被测软件的任何改变。
(4)更好的利用资源--周未/晚上。理想的自动化测试能够按计划完全自动的运行,在开发人员和测试人员不可能实行三班倒的情况下, 自动化测试可以胜任这个任务, 完全可以在周末和晚上执行测试。这样充分的利用了公司的资源,也避免了开发和测试之间的等待。
(5)解决测试与开发之间的矛盾:通常在开发的末期,进入集成测试阶段,由于每发布一个版本的初期,测试系统的错误比较少,这时开发人员在等待测试人员测试出错误的时间。事实上在迭代周期很短的开发模式中,存在更多的矛盾,但自动化测试可以解决其中的主要矛盾。
2. 自动化测试的缺点:
(1)不能取代手工测试。
(2)手工测试比自动测试发现的缺陷更多,自动化测试不容易发现新的BUG。
(3)对测试质量的依赖性极大(理解:自动化测试脚本的正常运转前,需要先经过功能测试的通过)。
(4)自动化测试不能提高有效性(理解:任何功能的改动(新增功能或删除功能)都可能会对脚本造成影响,需要不断的进行维护)。
自动化测试框架搭建:
我用的框架是一套底层语言基于python的框架,主要架构包:python+pycharm+chromedriver+
selenium+unittest+BSTestRunner(HTMLTestRunner )。框架环境搭建的话自行百度,这里就不在介绍。
JDK:下载安装jdk工具包,Java Development Kit (JDK) 是Sun公司(已被Oracle收购)针对Java开发员的软件开发工具包。
安装配置:系统变量→新建 JAVA_HOME 变量 。变量值填写jdk的安装目录(E:\Java\jdk1.7.0)根据自己实际安装路径配置。
python:“python是编程语言,与平时说的c语言、Java、php等语言相似。python是面向对象的编程语言
安装配置:下载:https://blog.csdn.net/Pgwsunny/article/details/74246831
下载对应的32位或者64位系统的文件,直接双击一键安装就行,记得修改安装路径。
pycharm:pycharm是为Python编程语言专门打造的一款IDE(集成开发环境)。在pycharm中编写Python程序,最终还是要有Python解释器的支持,两者配合工作。
安装配置:PyCharm 的下载地址:http://www.jetbrains.com/pycharm/download/#section=windows
professional 表示专业版,community 是社区版,推荐安装社区版,因为是免费使用的。
1、当下载好以后,点击一键安装,记得修改安装路径。
chromedriver:UI自动化测试是要实际跑浏览器的,但是测试工具怎么与浏览器去交互呢?就需要一些适配器建立测试工具与浏览器之间的连接。这就是 chromedriver 的作用。注:chromedriver的版本要与谷歌浏览器的版本号一致。以及其他主流浏览器的driver(geckodriver、IEdriverserver),使用不同浏览器测试时都要安装对应的driver驱动。
安装配置:
谷歌驱动下载地址:http://chromedriver.storage.googleapis.com/index.html
火狐驱动下载地址:https://github.com/mozilla/geckodriver/releases
IE驱动下载地址://selenium-release.storage.googleapis.com/index.html
1、下载Chromedriver解压后,将chromedriver.exe放到python的Scripts安装目录下。
2、再将Chrome驱动的安装路径加入到Path环境变量中
selenium:Selenium是一个用于Web应用程序测试的工具包。Selenium测试是直接运行在浏览器中,就像真正的用户在操作一样。通过编写模仿用户操作的Selenium测试脚本,可以从终端用户的角度来测试应用程序。通过在不同浏览器中运行测试,更容易发现浏览器的不兼容性。Selenium的核心,也称browser bot,是用JavaScript编写的。这使得测试脚本可以在受支持的浏览器中运行。browser bot负责执行从测试脚本接收到的命令。
unittest:在python中,unittest是Python中的单元测试框架。它拥有支持共享搭建、自动测试、在测试中暂停代码、将不同测试迭代成一组。而在我们自动化测试中unittest可以帮助我们实现数据参数化,窗口在执行出错的时候自动截屏,自动生成测试报告等相关操作。
BSTestRunner(HTMLTestRunner ):HTMLTestRunner 是 Python 标准库的 unittest 模块的一个扩展,它可以生成 HTML的测试报告,BSTestRunner 也是用于生成生成 HTML的测试报告。
接下来说一下我写的这套架构脚本的各个依赖包的应用:
先说一下我的目录结构吧!
下面我就直接用一张截图来描述了,就不一一去介绍目录的结构及各个模块文件了。
编写自动化测试用例原则:
1、一个脚本是一个完整的场景,从用户登陆操作到用户退出系统关闭浏览器。
2、一个脚本脚本只验证一个功能点,不要试图用户登陆系统后把所有的功能都进行验证再退出系统
3、尽量只做功能中正向逻辑的验证,不要考虑太多逆向逻辑的验证,逆向逻辑的情况很多(例如手号输错有很多种情况) ,验证一方面比较复杂,需要编写大量的脚本,另一方面自动化脚本本身比较脆弱,很多非正常的逻辑的验证能力不强。(我们尽量遵循用户正常使用原则编写脚本即可)
4、脚本之间不要产生关联性,也就是说编写的每一个脚本都是独立的,不能依赖或影响其他脚本。
5、如果对数据进行了修改,需要对数据进行还原。
6、在整个脚本中只对验证点进行验证,不要对整个脚本每一步都做验证。
需要获取自动化脚本源码的朋友私聊昊哥领取!!!