软件测试

祝衍军

目录

  • 1 软件测试概述
    • 1.1 软件测试概述
    • 1.2 软件缺陷(BUG)
    • 1.3 软件测试职业发展
    • 1.4 软件测试分类
    • 1.5 软件测试流程
    • 1.6 课程思政:秘书也疯狂的故事
  • 2 黑盒测试
    • 2.1 黑盒测试概述
    • 2.2 等价类划分法
    • 2.3 边界值分析法
    • 2.4 决策表法
    • 2.5 正交实验设计法
    • 2.6 场景测试法
    • 2.7 错误推测法
    • 2.8 功能需求分析
    • 2.9 测试用例设计
    • 2.10 课程思政:五笔输入法的故事
  • 3 测试执行
    • 3.1 测试计划
    • 3.2 测试执行BUG记录
  • 4 白盒测试
    • 4.1 白盒测试概述
    • 4.2 程序流程图设计
    • 4.3 白盒测试用例设计
    • 4.4 JUnit单元测试
    • 4.5 课程思政:WPS的故事
  • 5 Web应用软件自动化测试
    • 5.1 Python自动化测试基本框架
    • 5.2 登录页面测试脚本设计
    • 5.3 新增文章页面测试脚本设计
    • 5.4 基于Unitest的登录测试用例集脚本设计
    • 5.5 课程思政:大并发案例阿里云的小故事
  • 6 智能终端APP自动化测试
    • 6.1 企业案例
    • 6.2 Android智能终端设备连接
    • 6.3 Android APP应用自动化测试
    • 6.4 Monkey 压力测试
    • 6.5 课程思政:鸿蒙的故事
  • 7 JMeter性能测试
    • 7.1 性能测试需求分析
    • 7.2 文章新增脚本开发
    • 7.3 文章新增脚本完善
    • 7.4 场景设计与运行结果分析
    • 7.5 课程思政:12306网站的技术进步故事
  • 8 Postman接口测试
    • 8.1 Postman
    • 8.2 企业网站管理内容系统接口测试
  • 9 Loadrunner性能测试(1+x考证高级相关知识点)
    • 9.1 录制回放
    • 9.2 思考时间设置
    • 9.3 检查点设置
    • 9.4 参数化设置
    • 9.5 关联设置
    • 9.6 集合点设置
    • 9.7 场景设计与运行分析
  • 10 省技能大赛
    • 10.1 竞赛系统
    • 10.2 相关知识
  • 11 企业案例
    • 11.1 软件测试公司真实案例
基于Unitest的登录测试用例集脚本设计


【任务描述】:我们已经可以定位到界面上的任何元素了,但是如何根据测试用例集实现自动化测试呢,即自动执行多个测试用例,根据测试情况自动出这个测试用例集的测试报告? 

【任务目标】:Unitest框架上使用数据驱动测试方法设计企业网站内容管理系统后台登录页面测试用例集的自动化测试脚本,掌握UnitestHTMLTestRunner和数据驱动的使用方法

【任务储备】:

1、unitest

UnittestPython自带的单元测试框架不仅可以用于于单元测试,可以用于Web自动化测试用例的开发与执行。该测试框架用例组织执行测试用例并提供丰富的断言方法,判断测试用例是否通过,最终生成测试结果。它将多个测试用例组织在一起执行,如果一个测试用例执行失败,后面的测试用例可以继续执行。Unittest常用方法说明如表1所示。

1 Unittest常用方法

方法声明

功能描述

tearDown(self)

每个测试用例执行之后都会运行一次

setUp(self)

每个测试用例执行之前都会运行一次

tearDownClass(self)

所有测试用例运行完后只运行一次

setUpClass(self)

所有测试用例运行完前只运行一次

main()

执行所有的测试用例

testXXX(self)

具体的测试用例,XXX可以随便命名



2、断言

执行自动化测试中最重要的就是判断用例是否执行通过。python UnitTest测试框架提供了一整套内置的断言方法。

⑴如果断言成功,则无影响,代码继续执行,标识该测试用例为成功状态;

⑵如果断言失败,则抛出一个AssertionError,并标识该测试用例为失败状态;

⑶如果用例执行过程中发生异常,则当做错误来处理。

UnitTest框架内置的常用断言方法如表2所示。小贴士:所有的断言方法都有一个msg参数,如果指定msg参数的值,则将该信息作为失败的错误信息返回。

2 Unittest内置断言方法

方法声明

功能描述

assertEqual(arg1, arg2, msg=None)

验证arg1=arg2,不等则用例失败

assertNotEqual(arg1, arg2, msg=None)

验证arg1 != arg2, 相等则用例失败

assertTrue(expr, msg=None)

验证exprtrue,如果为false,则用例失败

assertFalse(expr,msg=None)

验证exprfalse,如果为true,则用例失败

assertIn(arg1, arg2, msg=None)

验证arg1arg2的子串,不是则用例失败

assertNotIn(arg1, arg2, msg=None)

验证arg1不是arg2的子串,是则用例失败

3HTMLTestRunner

前面测试结果只能在控制台查看,为了方便更多人查看测试结果,unittest提供了HTMLTestRunner库。HTMLTestRunnerPython标准库unittest模块的扩展,生成易于使用的HTML测试报告。使用示例代码如下所示:

unittest.main(testRunner=HtmlTestRunner.HTMLTestRunner(output=r'c:\1\example_dir',report_title='测试报告',report_name='unitest测试示例'))

output:是输出的文件夹,如果没有定义日志存放位置,日志报告会以html为后缀自动放在“工程目录/reports/file_d”这个路径的文件夹下,并以当前时间命名;

report_title:报告名称;

report_name:报告名称,report_name会自动加上时间后缀,时间格式为%Y-%m-%d-%H-%M-%

4、界面元素信息获取方法

Selenium提供了多种获取界面元素内容信息的属性和方法,具体如表3所示。

3 获取界面元素内容信息的属性和方法

方法声明

功能描述

current_url

获取当前页面的URL,使用方法示例:driver.current_url

text

获取元素的文本值,使用方法示例:driver.find_element_by_id("div").text

title

获取当前页面的标题信息,使用方法示例:driver.title

get_attribute(element_name)

获取元素的属性值,使用方法示例:driver.find_element_by_id("a1").get_attribute("id")

get_screenshot_as_file()

页面截图,用于发现BUG时将图片保存到文件,使用方法示例:driver.get_screenshot_as_file(r路径名\文件名)注意:只能存储png格式的图片

 

实例1:使用断言功能验证企业网站内容管理系统不输入密码的情况下提示信息是否正确

(1)进入企业网站管理内容系统后台登录页面。

(2)在登录页面输入账号和验证码,但是不输入密码。

(3)获取页面上的错误提示信息

(4)使用断言判断获取到的提示信息是否与预期的提示信息一致

(5)如果不一致,则自动对界面进行截图并保存

5、数据驱动测试方法

数据驱动测试,是指由数据的改变引起驱动自动化测试的执行,最终引起测试结果的改变。通过使用数据驱动测试的方法,可以在需要验证多组数据测试场景中,使用外部数据源实现对输入输出与期望值的参数化,也就是将测试数据和用例脚本代码分离。由于Python内置了CSV文件读取的代码库,因此测试数据一般存放在CSV文件中。CSV是以逗号分隔值并纯文本形式存储表格数据的一种文件格式,可以用电脑中自带的记事本、WPS或者excel打开。

(1)CSV文件读取方法

使用Python打开CSV可以直接使用open函数打开,然后使用reader函数读取内容。

(2)ddt数据驱动测试方法

数据驱动设计模式的意义在于:实现同一脚本对多组数据进行测试,最终实现数据与脚本的分离,便于维护与扩展。ddt第三方库的使用方法如下所示:

1@ddt 类装饰器:声明当前类使用ddt数据驱动框架;

2@data 函数装饰器:通过参数传入测试数据,测试数据可以以字典、元组、列表来进行传入;

3@file_data函数装饰器:测试数据文件进行传入,可以直接读取yaml/json文件;

4@unpack 函数装饰器:把传递的数据进行解包(list, tuple, dict)。

数据驱动测试方法步骤如下所示:

1)在头部引入ddt代码块;

2)在测试类前添加@ddt,表示该类采用ddt数据驱动测试

3)在测试方法前添加@ddt.data指定数据源。

【任务实施】

(1)、根据前面设计好的企业网站内容管理系统登陆功能测试用例集设计自动化测试的测试数据,具体测试数据如下图所示。


2)、根据测试数据和页面结构设计自动化测试脚本,如果测试失败,则自动将错误页面截图保存到本地磁盘。