自动化测试用例设计实例

2023-11-17

在编写用例之间,笔者再次强调几点编写自动化测试用例的原则:

1、一个脚本是一个完整的场景,从用户登陆操作到用户退出系统关闭浏览器。
2、一个脚本脚本只验证一个功能点,不要试图用户登陆系统后把所有的功能都进行验证再退出系统
3、尽量只做功能中正向逻辑的验证,不要考虑太多逆向逻辑的验证,逆向逻辑的情况很多(例如手号输错有很多种情况),验证一方面比较复杂,需要编写大量的脚本,另一方面自动化脚本本身比较脆弱,很多非正常的逻辑的验证能力不强。(我们尽量遵循用户正常使用原则编写脚本即可)
4、脚本之间不要产生关联性,也就是说编写的每一个脚本都是独立的,不能依赖或影响其他脚本。
5、如果对数据进行了修改,需要对数据进行还原。
6、在整个脚本中只对验证点进行验证,不要对整个脚本每一步都做验证。

一、登陆用例实例:

笔者建议通过excle 表格来编写自动化测试用例。
用例001:

代码示例:

备注:通过匹配用户登录之后的昵称来判断用户是否登录成功。
用例脚本(login.py):

#coding=utf-8
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time
 
driver = webdriver.Firefox()
driver.get("http://passport.kuaibo.com/login/?referrer=http%3A%2F%2Fwebcloud.kuaibo.com%2F")
driver.maximize_window() #浏览器最大化
 
#登陆快播私有云
driver.find_element_by_id("user_name").send_keys("testing360")
driver.find_element_by_id("user_pwd").send_keys("198876")
driver.find_element_by_id("dl_an_submit").click()
time.sleep(3)
 
#获取用户名
now_user=driver.find_element_by_xpath("//div[@id='Nav']/ul/li[4]/a[1]/span").text
 
#用户名是否等于虫师,不等于将抛出异常
if now_user==u'虫师':
       print '登陆成功'
else:
       raise NameError('user name error!')
 
#退出
driver.find_element_by_class_name("Usertool").click()
time.sleep(2)
driver.find_element_by_link_text("退出").click()
time.sleep(2)
driver.close()

二、添加文件用例实例

用例002:

 备注:通过计算用户列表中的文件的数量来判断文件是否添加成功。

用例脚本(collect.py):

注:用例登陆与退出参考用例001,本用例只关注收藏用户分享的逻辑代码。#判断当前文件个数

inputs=driver.find_elements_by_tag_name('input')
n=0
for i in inputs:
    if i.get_attribute('type')=="checkbox":
    n=n+1
print u"当前列表文件为%d" %n
 
 
 
#收藏用户分享文件
driver.find_element_by_class_name("collect").click()
time.sleep(3)
 
#再次获取当前文件的个数
inputs=driver.find_elements_by_tag_name('input')
ns=0
for ii in inputs:
     if ii.get_attribute('type')=="checkbox":
         ns=ns+1
print u"当前列表文件为%d" %ns
 
 
 
#判断执行收藏文件之后比收藏之间文件加1 ,否则抛异常
if  ns==n+1:
     print "ok!"
else:
     raise NameError('添加文件失败!!')

三、删除文件实例:

用例003:

备注:因为删除了一个文件对文件的数据发生的改变,如果多次执行脚本,列表中的文件被删除完了就会引发异常,所以在删除一个文件后,需要再添加一文件,但添加文件操作不做验证。
用例脚本(del_one_file.py):#判断当前文件个数

inputs=driver.find_elements_by_tag_name('input')
n=0
for i in inputs:
      if i.get_attribute('type')=="checkbox":
            n=n+1
print u"当前列表文件为%d" %n
 
 
 
#删除操作
driver.find_element_by_xpath("/html/body/div/div[2]/div[2]/div/div[4]/table/tbody/tr/td/input").click()
driver.find_element_by_class_name("dele").click()
driver.find_element_by_xpath("/html/body/div[2]/div[2]/div[2]/div").click()
time.sleep(4)
 
#再次获取当前文件的个数
inputs=driver.find_elements_by_tag_name('input')
ns=0
for ii in inputs:
         if ii.get_attribute('type')=="checkbox":
               ns=ns+1
print u"当前列表文件为%d" %ns
 
 
 
#判断执行删除单个文件之后比删除之后文件减1 ,否则抛异常
if  ns==n-1:
    print "ok!"
else:
     raise NameError('删除文件失败!!')
#收藏用户分享单个文件
 
 
driver.find_element_by_class_name("collect").click()
time.sleep(3)

四、重命名文件用例实例

用例004:

备注:文件的重命名其实我们很难找到证据(验证点)证明重命名成功,那么脚本整个运行没有报错,我们也可模糊的判断功能测试是OK 的。

用例脚本(renaming.py)

#勾选重命名的文件
driver.find_element_by_xpath("/html/body/div/div[2]/div[2]/div/div[4]/table/tbody[5]/tr/td/input").click()
time.sleep(3)

#鼠标移动到“更多”按钮弹下拉框

element=driver.find_element_by_class_name("more-fe")     #定位到“更多”按钮
ActionChains(driver).move_to_element(element).perform()   #鼠标移动到“更多”按钮弹下拉框
time.sleep(2)   

#在li 标签(更多下拉框)中筛选到data-action==rename(重命名)选项点击

lis=driver.find_elements_by_tag_name('li')
for li in lis:
      if li.get_attribute('data-action') == 'rename':
            li.click()
time.sleep(2)

在input 标签中筛选type==text 的重命名输入框

inputs=driver.find_elements_by_tag_name('input')
for input in inputs:
       if input.get_attribute('type') == 'text':
                input.send_keys(u"新文件名") #进行重名操作
                input.send_keys(Keys.ENTER) #回车确认重命名
                time.sleep(2)

总结:
在本章中,简单对比了手工测试用户与自动化测试用例的区别,自动化测试用例编写的原则,如何通过python 捕捉异常和抛出异常,以及webdriver 提供的get_screenshot_as_file()函数,以及如何编写自动化用例与脚本等。


不过笔者先不要急于开始实施自动化测试,虽然我们可以编写单个的测试用例,并通过异常捕捉判断用例是否运行成功。但只有与通过测试框架的整合,我们才能真正有效可行的运用自动化测试技术。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

在这里插入图片描述

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

自动化测试用例设计实例 的相关文章

  • 测试用例评审流程优化

    测试用例 评审是QA日常工作流程中的关键一环 是QA同学完善测试用例 交流测试经验的好机会 负责组内测试用例建设以来 作者对于评审流程做了一些优化工作 本文作者将整个优化过程中的心得体会做了一个总结 希望能给大家带来帮助 01 原始流程 1
  • 软件测试|使用Python轻松裁剪视频

    简介 裁剪视频是在视频编辑和处理中常见的任务之一 Python提供了多种库和工具 可以用来裁剪视频 在本文中 我们将详细讨论如何使用Python来裁剪视频 并提供示例代码 步骤1 环境准备 首先 我们要安装必要的Python库 我们将使用
  • 软件测试|SQLAlchemy环境安装与基础使用

    简介 SQLAlchemy 是一个强大的 Python 库 用于与关系型数据库进行交互 它提供了高度抽象的对象关系映射 ORM 工具 允许使用 Python 对象来操作数据库 而不必编写原生SQL查询 本文将介绍如何安装 SQLAlchem
  • 这个很少人知道的零售技巧,却是我最想安利的!

    在当今数字化浪潮的推动下 零售业正在迎来一场革命性的变革 新零售模式的崛起正引领着消费者与商品之间的互动方式发生深刻的变化 在这个变革的前沿 自动售货机作为新零售的一种关键形式 通过智能技术和自动化系统 重新定义了购物体验的边界 客户案例
  • 软件测试|Pydantic处理时间类型数据

    简介 我们之前介绍过使用 pydantic 验证数据 比如校验数据的格式等 但是在我们的日常工作中 还有一种数据是需要我们验证的 比如时间数据 时间数据不同于字符串 列表等数据 与他们的验证不一样 本文就来为大家介绍一下 pydantic
  • 软件测试|pycharm关联GitHub的详细步骤

    简介 GitHub 是全球最大的开源代码托管平台之一 而 PyCharm 是一款强大的 Python 集成开发环境 将两者结合使用 可以提高团队协作和代码管理的效率 本文将详细介绍如何在 PyCharm 中管理 GitHub 账号 包括如何
  • 盲猜你不懂H5架构和原生架构的区别

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • Python自动化测试 | 如何使用Robot Framework进行自动化测试?

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 如何写好一个错误报告

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • Jmeter 性能-阶梯式性能指标监听

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • msyql 异常,别干着急,70%的问题都在这里!

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 开眼了,自动化测试还能这样用?

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 新手也能看懂的【前端自动化测试入门】

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 还在手工标注数据集?快来试一试自动化多模型标注大模型-gui交互式标注(部署运行教程-高效生产力)

    快速入门指南 先看一下自动化标注的强大 简直医学图像处理的福音呀 不仅如此 任何区域都可以识别到 面对任意开集数据 都可以达到良好的效果 运行模式 目前 X AnyLabeling 支持两种运行方式 一种是下载源码直接运行 另一种是直接下载
  • 软件测试中的白盒测试,这些技巧你知道吗?

    对于很多刚开始学习软件测试的小伙伴来说 如果能尽早将黑盒 白盒测试弄明白 掌握两种测试的结论和基本原理 将对自己后期的学习有较好的帮助 今天 我们就来聊聊黑盒 白盒测试的相关话题 1 黑盒测试的方法和小结 最常见黑盒测试方法包括 边界值 等
  • 2024拒绝行业内卷!八年软件测试20K*16薪行业心得 想入行必看

    目前工作做软件测试工作8年 属于高级测试员那个级别吧 现在看到各行各业的人都在转行学习软件测试 想给大家一些学习建议和忠告 很多粉丝都跟我说今年行情很差 找不到工资 真的找不到工作了吗 我们常在网上看到的 程序员饱和 程序员过剩 其实一般是
  • 程序员找工作难!拿到外包公司的 offer 我应该去么?

    引言 前一阵子有一个帖子引起了非常广泛的讨论 描述的就是一个公司的外包工作人员 加班的时候因为吃了公司给员工准备的零食 被公司的HR当场批评 这个帖子一发出来 让现在测试行业日益新增的外包公司备受关注 那么外包公司和非外包公司有什么样的不一
  • 一文让你了解UI自动化测试

    测试都起什么作用 是项目的保险 但不是项目的救命草 测试无实际产出 但作用远大于实际产出 测试是从项目维度保证质量 而不是测试阶段 UI自动化 下面简称自动化 基于UI进行自动功能测试 以Web端作为例子 一般的UI功能自动化都是基于HTM
  • 一文让你快速写出高效的软件测试用例

    前言 编写测试用例的目的就是确保测试过程全面高效 有据可查 但要编写出高效的测试用例 需要搞清楚什么是测试用例 以及如何编写出高效的测试用例 接下来将从以下几个部分来进行展开 1 什么是测试用例 2 如何编写测试用例 3 软件测试学习资源分
  • 用Python实现高效数据记录!Web自动化技术助你告别重复劳动!

    自动化关键数据记录 简介 关键数据记录是 Web 自动化测试中的关键部分 它们提供了关于系统行为和执行过程的详细信息 有助于验证用例的正确性 排查问题和确保应用程序的质量 行为日志 行为日志是一种用于记录系统或应用程序的操作和事件的技术 它

随机推荐

  • QT 5.12.9 +VS 2019配置并实现与三菱Q系列PLC通讯(2)实现通讯

    QT 5 12 9 VS 2019配置并实现与三菱Q系列PLC通讯功能 1 软件的安装 之前已经完成了软件的安装 接下来要通过MX Component去实现PLC的直连功能 首先 打开VS2019 新建项目 搜索qt 在出来的内容中选择QT
  • Feign 中的继承、日志与数据压缩

    上篇文章和大家分享了声明式微服务调用组件 Feign 的基本用法 相信大家已经了解到使用 Feign 的好处了 使用 Feign 有效地解决了使用 RestTemplate 时的代码模板化的问题 使服务之间的调用更加简单方便 同时也不易出错
  • tk.mybatis默认insert方法,使用@GeneratedValue无效的坑,提示id不能为null

    坑了一小时 试了各种配置 最后发现 是数据库没有为ID设置自增 记录一下
  • android延迟自动跳转,Android实现倒计时跳转和延时操作

    App启动页倒计时3秒跳转到App的首页 这种操作在很多App中都很常见 如果需要做一个延时操作呢 写一个子线程停留3秒然后执行操作 这样的话需要特别的注意的是UI操作必须放在主线程里 那么还需要转化成主线程 NO 使用Handler轻松实
  • 计算机网络拓扑结构详解

    计算机网络拓扑结构是指网络中通信线路和设备的分布情况以及连接状态所形成的物理布局 网络拓扑结构主要包括 总线型拓扑结构 星型拓扑结构 环型拓扑结构 树型拓扑结构 网状拓扑结构 混合型拓扑结构 1 总线型拓扑结构 释义 采用一条公共总线将所有
  • CTF_Misc题目分析2_linux系统密码

    CTF Misc题目分析2 linux系统密码 引入 John the Ripper John the Ripper 是一个快速的密码破解工具 用于在已知密文的情况下尝试破解出明文的破解密码软件 支持大多数的加密算法 主要目的是破解不够牢固
  • 2023华为od机试统一考试B卷Java【稀疏矩阵】

    前言 本题使用Java解答 如果需要Python代码 请参考以下链接 点我 题目描述 稀疏矩阵的定义是 矩阵中有很多系数都是 0 现在我们有一个矩阵 我们进行逐行逐列扫描 在扫描的过程中 如果某一行或者某一列内 如果 0 的个数超过了当前的
  • python文件操作与异常处理

    一 文件操作 内建函数open 能够打开一个指定路径下的文件 返回一个文件对象 open的两个参数 第一个参数是文件名 第二个是打开方式 r w a b 依次表示读 写 追加写 二进制 1 内建函数 包含在 buildings 这个模块中的
  • 什么是数字化管理

    问题 什么是数字化管理 数字化管理是什么意思 数字化管理是指利用计算机 通信 网络 人工智能等技术 量化管理对象与管理行为 实现计划 组织 协调 服务 创新等职能的管理活动和管理方法的总称 数字化管理的本质就是将现代化管理思想 管理方法 管
  • JS String 字符串方法

    1 charAt 方法从一个字符串中返回指定的字符 var anyString Brave new world console log anyString charAt 0 B console log anyString charAt 1
  • 移动端自动化测试实战

    UI自动化测试的价值 1 提升回归测试的效率 2 可以进行兼容性测试 UI 自动化测试应用场景 冒烟测试自动化 提测之前自动断言提测质量 提供准入参考 功能测试自动化 辅助 QA 与测试工程师的快速验证 验收测试自动化 兼容性测试等 移动端
  • Markdown 语法完全指南

    这里写目录标题 简介 1 标题 2 段落和换行 3 文本样式 粗体和斜体 删除线和代码 嵌套标记 4 链接 内联链接 引用链接 5 列表 无序列表 有序列表 嵌套列表 任务列表 6 引用块 7 插入图片 8 水平线 9 代码块 10 表格
  • MySQL 的优化方案总结

    性能优化 Optimize 指的是在保证系统正确性的前提下 能够更快速响应请求的一种手段 而且有些性能问题 比如慢查询等 如果积累到一定的程度或者是遇到急速上升的并发请求之后 会导致严重的后果 轻则造成服务繁忙 重则导致应用不可用 它对我们
  • 如何使用命令实现在达梦数据库里修改表的某个字段

    达梦数据库里当字段长度太小的时候 在应用程序里会出现这样的报错 列 XXXX 长度超出定义 说明当前要存储的内容跟设定的字段长度是不匹配的 很明显这样的问题是要调整字段长度的的 定位到列所在的表 就可以通过达梦sql脚本去修改这个字段的长度
  • 【Xilinx】Spartan 7上手指南(ARTY S7开发板)

    Spartan 7上手指南 一 安装board文件 1 下载并解压板卡压缩文件 2 复制到Vivado安装目录 二 demo工程 1 下载demo 2 修改tcl 3 恢复工程 4 生成bit 三 调试运行 1 连接电脑 2 设置串口 3
  • 分布式应用:Zabbix 自动发现与自动注册

    目录 一 理论 1 Zabbix 自动发现 2 Zabbix 自动发现部署 3 Zabbix 自动注册 4 Zabbix 自动注册部署 二 实验 1 Zabbix 自动发现部署 2 Zabbix 自动注册部署 三 总结 一 理论 1 Zab
  • 浅谈前端单元测试

    首先声明一点 长期以来 前端开发的单元测试并不是在前端的开发过程中所必须的 也不是每个前端开发工程师所注意和重视的 甚至扩大到软件开发过程中单元测试这一环也不是在章程上有书面规定所要求的 但是随着每个工程的复杂化 代码的高复用性要求和前端代
  • MySql设置唯一标识主键等设置

    建立表 create table user score name char 10 not null default score smallint not null default 0 增加一列 alter table user score
  • 【简单】阶乘之和

    描述 给定n的值 求Sn 1 2 3 4 5 n 之值 但Sn可能很大 因此只要求出Sn关于100007的余数 输入 输入数据有多组 每组占一行 每行一个正整数n n lt 1000 输出 每组输出一个整数 即Sn Mod 100007 样
  • 自动化测试用例设计实例

    在编写用例之间 笔者再次强调几点编写自动化测试用例的原则 1 一个脚本是一个完整的场景 从用户登陆操作到用户退出系统关闭浏览器 2 一个脚本脚本只验证一个功能点 不要试图用户登陆系统后把所有的功能都进行验证再退出系统 3 尽量只做功能中正向