自动化测试开展的前提

经过多轮的手工测试,且迭代基本稳定之后,可以开展自动化测试,本项目的模块基本都可以是实现自动化测试。

自动化测试可以实现以下场景的测试:

1) 解决-回归测试

2) 解决-压力测试

3) 解决-兼容性测试

4) 提高测试效率,保证产品质量

备注:

回归测试:项目在发新版本之后对项目之前的功能进行验证;

压力测试:可以理解多用户同时去操作软件,统计软件服务器处理多用户请求的能力 ;

兼容性测试:不同浏览器(IE、Firefox、Chrome)等等。

自动化测试的开始节点

自动化测试的时间节点是功能测试中冒烟测试全部通过且主功能遗留bug数量为0,测试用例中的一级功能不允许遗留测试等级为严重及以上的bug,二级用例中可以遗留几个(一般<=5个)严重程度为一般的bug,在这个标准的前提下,我们视系统基本达到稳定,可以进入到自动化测试环节。

项目架构分析

images-a2.png

天天生鲜项目框架目录 (1)Buyer 项目消费者模块 migrations 消费者数据库同步记录目录 templates 消费者模板文件目录 init 消费者应用包文件 admin 消费者后台管理文件 apps 消费者应用管理文件 models 消费者应用模型文件 tests 消费者应用单元测试文件 views 消费者应用功能视图文件 (2) QUser 项目用户模块 migrations 用户模块数据库同步记录目录 templates 用户模板文件目录 init 用户模块应用包文件 admin 用户模块后台管理文件 apps 用户模块应用管理文件 models 用户模块应用模型文件 tests 用户模块应用单元测试文件 views 用户模块应用功能视图文件 (3) QStore 项目店铺模块 migrations 店铺数据库同步记录目录 templates 店铺模板文件目录 init 店铺应用包文件 admin 店铺后台管理文件 apps 店铺应用管理文件 models 店铺应用模型文件 tests 店铺应用单元测试文件 views 店铺应用功能视图文件 (4)static 项目静态文件目录 buyer 消费者静态文件目录 quser 用户静态文件目录 store 店铺静态文件目录 (5)db.sqlite3 项目便携sqlite数据库 (6)manage.py 项目管理文件

环境部署

预备工作

python 3.5及以上版本 pycharm 浏览器(推荐Firefox和Chrome) Windows7/10 Selenium 2.0版本 (1)setuptools (2)pip (3)selenium2.0版本(2.48.0)

安装Python3.5及以上版本

下载地址:https://www.python.org/downloads/release/python-371/ 下的Windows x86-64 executable installer

images-a3.png

安装pycharm

下载地址:http://www.jetbrains.com/pycharm/download/#section=windows

images-a4.png

安装Firefox

推荐Firefox35.1.0版本

images-a5.png

安装完成后需禁止火狐的自动更新 菜单--选项—>高级 勾选不检查更新,其他选项不勾选

安装setuptools

下载setuptools-40.5.0.zip https://pypi.org/project/setuptools/ 1、解压到Python安装目录d:\software\python\scripts下,进入到setuptools文件夹,按住shift键后右击,在此处打开命令窗口 2、输入python setup.py install 回车, 3、安装成功后。新开一个命令窗输入easy_install回车,没有提示easy_install不是内部或外部命令,则安装成功,如果提示了,检查环境变量 2.2.2.6安装pip Pip是通用的Python包管理工具。提供了对Python包的查找、下载、安装、卸载的功能 下载pip压缩包pip-18.1.tar.gz 地址:https://pypi.org/project/pip

安装Selenium

说明,在安装selenium时,前提是Python安装完毕且能正常运行 安装:在命令窗口输入:

pip install selenium==2.48.0

卸载:

pip uninstall selenium

查看:

pip show selenium

用例及脚本设计

自动化测试流程其实跟手工测试流程差不太多,要先编写测试用例,只是被叫作自动化测试用例而已。先设计好自动化测试用例,再严格根据设计完成的测试用例编写测试脚本,这是一种规律、一个过程。此过程产出物为自动化测试用例。 自动化测试用例设计和手工测试用例设计是有明显区别的,手工测试用例是从无到有的过程,而自动化测试用例不是的。自动化测试用例是有参考物的,它就是手工测试用例。它有时候可以直接拿来用、有时候需要稍加修改,在此把整个自动化测试用例设计过程分为 3 步: 筛选手工测试用例的过程。 转换手工测试用例的过程。一般转换要素无非两种,一种就是测试用例的格式和规则,另一种就是优化自动化测试业务流程。自动化测试业务流程和手工测。试业务流程还是有一定区别的,自动化测试业务流程更精简、严格。 新增&补充自动化测试用例的过程。 设计样例如下所示:

用例编号功能模块用例标题预置条件测试步骤预期结果优先级实际结果备注
Qshop03购物车添加商品网络正常,已登录1、进入商品详情页2、点击加入购物车按钮3、选择默认数量为4、进入购物车模块查看商品是否被添加商品被添加,数量为1pass

通过可行性分析和用例设计后,接下来需要做一个demo ,等待 demo 完成后,可以再次通过分析自动化测试工作能否顺利地开展下去,因为 demo 已经是一个实体案例,所以,可以完全通过透析 demo 来发现是否存在技术上的致命问题。通常在 demo 完成之后,有经验的自动化测试工程师或组长就能对这个项目的自动化测试工作有一个大体的把握了。一旦通过了抽样 demo 分析,自动化测试就可以展开了。关于 demo 的选取,一般直接选择冒烟测试用例(大冒烟)写成测试脚本后执行,检查脚本是否能够成功运行通过,已设计的测试点是否全部执行到即可。 设计样例如下所示:

import unittest

from time import sleep

from selenium import webdriver

from selenium.webdriver.common.action_chains import ActionChains

class TianyeLoginOut(unittest.TestCase):

   def setUp(self):

   self.driver = webdriver.Firefox()

   self.driver.implicitly_wait(30)

   self.driver.get("http://bbs.tianya.cn/")

测试框架

UnitTest框架是专门用来进行执行代码测试的框架,具有以下功能:

1) 能够组织多个用例去执行

2) 提供丰富的断言方法(稍后讲解)

3) 提供丰富的日志与测试结果

UnitTest核心要素包括:

1)TestCase

2)TestSuite

3)TextTestRunner

4)Fixture

执行测试

测试脚本的执行主要包含如下内容:

  • 测试环境的管理配置

  • 测试脚本配置

  • 测试脚本的执行

  • 测试异常中断处理和恢复

    通过代码中断言的处理实时抓取日志,截取错误图片。断言部分的截取的图片如下图所示:

    images-a6.png

自动生成测试报告

执行完自动化测试脚本后,自动生成一份测试报告。 Export Test Results (UnitTest 自带) HTMLTestRunner(第三方模板) Export Test Results 执行测试用例 在控制台选择导出测试结果(export test results) 设置报告的名称和目录,点击确定即可。

images-a7.png

images-a8.png