初探网页应用的自动化测试:Cucumber + Selenium

前言

测试同学一般在测试网页应用的时候,都会按着既定的用例描述自行操作一遍,来验证输出结果是否符合预期,这相信也是大部分公司招聘测试员的工作范围之一。

这种作业模式,在上线频率不高的前提下,还是可以满足要求的。完整执行一次回归测试,覆盖系统所有功能,实际上也是比较耗费时间的。

自动化测试固然可以解决测试效率问题,但测试同学对自动化的实施通常存在以下疑问:

  1. 浏览器的自动化访问脚本,很容易因为界面的改动,导致以前的测试脚本失效,维护成本高
  2. 编写测试脚本,由于是界面录入和点击级别的描述,工作量巨大

这些疑问的核心是:如何很好的维护测试代码

这里「好」的意思是:

  1. 如何分离物理层(HTML)和逻辑层(业务逻辑),让逻辑层不会因为底层(物理层)的变化,而需要重新写一遍
  2. 如何提升操作和描述层次,让我们可以描述点击元素级别的操作(物理层操作),也可以描述高层次的操作(业务操作)。

这些问题,其实和测试并没有直接关系,这是一般编程上的抽象要求,和可复用性的要求,只是把相同的概念用在测试领域上而已。

以下介绍一个方案:Cucumber + Selenium WebDriver

什么是Cucumber

官网:https://cucumber.io

简单说,用Cucumber为了简化编写测试程序,让我们写测试程序就如同写文章一样。例如:

# language: zh-CN
功能: 企业创建套餐,应付计算
  场景: 创建基础服务套餐(免费试用)
  	假如存在企业为:"CA", 密码为:"123456789", 账号为:"13578819805"
    假如创建产品编号为:"P001",单价为:"0"

    当企业:"CA"购买清单如下:
     | 产品编码 |数量|
     |  P001   |1  | 

    那么应付金额为:"0.0"

当然,文字的背后,需要写一小段代码支撑该段文字:如下面(使用Java8的Lamba语法)

public class CorporationStepdefs implements Zh_cn {
   

	public CorporationStepdefs() {
   
		假如("存在企业为:{string}, 密码为:{string}, 账号为:{string}", (String corpId, String password, String mobile) -> {
   
			// TODO 若企业不存在,则创建企业
		});
	}

如何使用Cucumber,就不在这里展开说了,需要进一步了解的请参考官网说明。

什么是Selenium WebDriver

官网:https://www.selenium.dev/documentation/en/webdriver/

简单说,Selenium提供浏览器自动化的标准接口,用同样的命令集就可以驱动不同的浏览器,进行程序控制的点击,录入,查询界面内容等工作。

看到Selenium的接口,控制的都是界面级别的元素操作。如:

WebDriver driver = new ChromeDriver();
driver.get("https://www.baidu.com");
WebElement logo = driver.
  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值