用Selenium测试web应用

2023-11-04

问题1:当用户在网上商店购物时,一次完整的购买流程需要用户进行好几个步骤的操作(包括选择商品、填写订单信息、选择支付方式、确认订单等),涉及四到五个页面以及数十个类的协作。如何在开发过程中始终确保该流程能够正确无误、畅通无碍?

问题2:客户提出需求:在显示货物列表时,应该首先按货物名称排序,名称相同的货物再按照价格排序。我们已经实现了这一功能,并且有单元测试作为保障,但如何让客户看到我们的成果?

问题3:美工在制作页面时,一不小心把一个<form>id属性删掉了。几天之后,另一个页面上的JavaScript莫名其妙地失效,我们花了很多时间才发现这个问题。应该如何避免类似的情况再次发生?

这三个问题对于做惯了web应用的读者来说一定不陌生——实际上,我们的每个项目都或多或少地遇到类似的问题。说穿了,这三个问题都是关于同一件事情:如何验证一个东西是正确的,以及如何便利而自动地重复这一验证过程。在代码层面上,xUnit单元测试工具(对于J2EE项目,就是Junit)给了我们帮助。但是,当问题涉及到web界面和用户交互时,JUnit就显得有些力不从心了,这也是很多采用测试驱动开发(TDD)方法的团队只能把TDD贯彻到web controller层面的原因。

单元测试 vs. 功能测试

正如它的名字所揭示的,JUnit是一个单元测试工具。而我们在前面提出的三个问题,实际上已经属于功能测试(functional test)或者验收测试(acceptance test)的范畴。尽管单元测试能够保证各个单元的正确,却无法确保将这些单元组合起来之后的效果。需要依靠功能测试工具,我们才能继续TDD的脚步。

另一方面,功能测试在很多时候应该由客户——或者是具有一定技术背景的客户代表(可能是项目的需求分析师)——来编写的(这也是“验收测试”这个名称的由来:通过这些测试就代表工作通过验收),因此编写这些测试不应该要求太高的编程能力。在这一点上,JUnit也是令人望而生畏的。

ThoughtWorks员工开发并维护的Seleniumhttp://selenium.thoughtworks.com)正是帮助我们解决上述问题的得力工具。简单地说,Selenium是一个自动化的web应用功能测试工具——我知道,这个短语不足以让读者了解它所描述的对象。所以,在进一步介绍之前,我想先请读者来看一个活生生的例子。请打开你的浏览器,访问下列URL地址:

http://www.openqa.org/selenium/demo1/TestRunner.html

你将会看到Selenium的主操作界面(如图1)。可以看到,整个页面被分成四个

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

用Selenium测试web应用 的相关文章

随机推荐

  • cocoapods 引入 三方库 历程

    在已有的工程中没有使用 pod 新建一个demo手动导入protobuf时报错GPB文件找不到 直接使用pod导入没有出现类似错误 所以就在项目工程中引入pod去集成protobuf platform ios 8 0 use framewo
  • 2022年Android中高级面试框架

    目录 Java 泛型 集合 ArrayList LinkedList HashMap LinkedHashMap ConcurrentHashMap 多线程并发 volatile 线程 反射 JVM 类加载 怎么判断对象是否已死 垃圾回收机
  • 容器适配器

    C 顺序容器的底层能够模拟一些常见的数据结构 方法是通过容器适配器 队列 queue 只允许在一端插入数据操作 在另一端进行删除数据操作的特殊线性表 进行插入操作的一端称为队尾 入队列 进行删除操作的一端称为队头 出队列 队列具有先进先出
  • opencv读取&裁剪&写入图片

    opencv读取 裁剪 写入图片 1 英文路径 1 1 导包 1 2 找到英文路径 1 3 英文路径读取 1 4 图像白边裁剪 1 5 英文路径写入 1 6 结果展示 2 直接读取中文路径常见错误示范 2 1 读取 2 2 写入 3 正确读
  • HDL4SE:软件工程师学习Verilog语言(六)

    6 表达式与赋值 我们终于可以继续学习了 也是没有办法 其实工作的80 的时间都是在忙杂事 就像打游戏一样 其实大部分时间都在打小怪 清理现场 真正打终极BOSS的时间是很少的 但是不清小怪 打BOSS就束手束脚 也很难通关啊 我们先来复习
  • php调用海康威视4200软件同步考勤数据到sql_server ,并通过html实时显示。

    海康威视4200软件同步考勤数据到sql server 并通过html实时显示 安装环境 这个不多说了 肯定得先设置好sql server吧 数据库设置好后同步一下就可以直接获取信息到数据库中了 有了数据后我们使用php调用一下 time
  • Windows Server 2012 R2 WSUS-5:组策略配置自动更新

    如果公司具备域环境的话 我们可以根据不同的计算机组的要求 来配置不同的WSUS的自动更新策略 比如测试机器链接一套GPO 生产服务器链接一套GPO 针对于测试环境和生产环境的服务器和客户端的策略都是不一样 可以进行自定义设置的 当然如果机器
  • Command (Start this RegionServer (64250)) has failed CDH hbase 节点重启失败报错

    hbase 节点重启报错 问题描述 重启Hbase RegionServer和Hmaster失败 查看主 从节点日志后发现如下报错 解决办法 经排查后发现各节点date时间不同 相差较大 导致启动失败 设置ntp时间同步或者批量操作各节点同
  • Redis的启动、使用和停止

    1 Redis的启动 1 前端模式启动 直接运行bin redis server将以前端模式启动 切换到 usr local redis bin目录下 然后 redis server 前端模式的缺点是启动完成后 不能再进行其他操作 如果要操
  • 《深入解析Android虚拟机》Dalvik和Art基础:读书笔记

    1 Dalvik虚拟机和普通java虚拟机的区别 a dalvik虚拟机基于寄存器 java虚拟机基于栈 b dalvik会通过dx将所有的class打包到dex文件 普通的java虚拟机将所有的class打包到jar文件 c dalvik
  • 面试合集:数据库+数据结构+JVM+网络+JAVA+分布式+操作系统

    第一个模块 数据库 1 1 腾讯数据库面试问题 解释ACID四大特性 原子性的底层实现 数据库宕机后恢复的过程 如何保证事务的ACID特性 MySQL日志类型 这5个题目相对来说是比较普遍的 这里我就不一一给出答案了 给大家看下我的那个数据
  • 使用驱动器f中的光盘之前需要格式化什么意思_使用驱动器中的光盘之前需要将其格式化如何解决?...

    电脑硬盘分区 移动硬盘 U盘等在使用过程中有时会出现错误 使分区打不开无法读取分区中的数据 并且提示 使用驱动器中的光盘之前需要将其格式化 使用驱动器中的光盘之前需要将其格式化如何解决 使用驱动器中的光盘之前需要将其格式化如何解决 工具 软
  • TensorFlow中的变量(Variables)

    在TensorFlow中 变量 Variable 是特殊的张量 Tensor 它的值可以是一个任何类型和形状的张量 与其他张量不同 变量存在于单个 session run 调用的上下文之外 也就是说 变量存储的是持久张量 当训练模型时 用变
  • 机器学习课后习题 --回归

    一 单选题 1 以下 组变量之间存在线性回归关系 A 学生的性别与他的成绩 B 儿子的身高与父亲的身高 C 正方形的边长与面积D 正三角形的边长与周长 2 回归问题和分类问题的区别是 A 回归问题有标签 分类问题没有 B 回归问题输出值是离
  • 【Verilog】ROM & RAM

    文章目录 RAM ROM ROM 只读存储器 概念 源代码 testbench 仿真波形 RAM 随机访问内存 概念 源代码与testbench 仿真波形 RAM ROM ROM 只读存储器 概念 ROM内部的数据是在ROM制造工序中 在工
  • IDEA创建Maven项目 利用Junit进行单元测试

    文章目录 一 构建Maven项目 1 新建maven项目 File gt New gt Project 2 输入GroupId和ArtifactId 前者定义项目组 后者定义项目名称 3 配置Maven 4 finish 项目骨架如下 5
  • dncnn图像去噪_基于GANs训练去噪深度神经网络实现了良好的图像盲去噪效果

    从包含噪音的图像中去除未知噪音是一项充满挑战的工作 由于缺乏有效的训练数据使得这一领域面临许多问题 中山大学的研究人员们提出了一种 两步走 的框架 通过GANs训练输入图像的噪声分布来并利用生成的噪声样本生成了丰富的训练数据 并基于此训练了
  • Java中存储金额的数据类型-BigDecimal

    在程序中存储金额的数据类型用 java math BigDecimal 在数据库中存储金额的数据类型用 decimal 金额必须是完全精确的计算 故不能使用double或者float 长度可以自定义 如10 小数点在项目中用的是2 保留2位
  • Q2净利润同比下降17% ,英特尔该如何应对强势崛起的AMD?

    7月26日 英特尔发布了其2019年第二季度财报 根据其最新财报来看 净利润同比下滑了17 但第二季度的业绩超出了华尔街分析师预期 第二季度营收为165亿美元 市场分析师预期157亿美元 同时根据第二季度的表现 英特尔也提高了第三季度和全年
  • 用Selenium测试web应用

    问题1 当用户在网上商店购物时 一次完整的购买流程需要用户进行好几个步骤的操作 包括选择商品 填写订单信息 选择支付方式 确认订单等 涉及四到五个页面以及数十个类的协作 如何在开发过程中始终确保该流程能够正确无误 畅通无碍 问题2 客户提出