我所知道的自动化测试模型

简介:

线性测试                                                                             

 

  通过录制或编写脚本,一个脚本完成用户一套完整的操作,通过对脚本的回放来进行自动化测试。

这是早期进行自动化测试的一种形式。

脚本一

from selenium import webdriver
import time

driver = webdriver.Firefox()
driver.get("http://passport.cnblogs.com/login.aspx?ReturnUrl=http://www.cnblogs.com/fnng/admin/EditPosts.aspx")

driver.find_element_by_id("tbUserName").send_keys("admin")
driver.find_element_by_id("tbPassword").send_keys("123456")
driver.find_element_by_id("btnLogin").click()

...... 

driver.quit ()

脚本二

from selenium import webdriver
import time

driver = webdriver.Firefox()
driver.get("http://passport.cnblogs.com/login.aspx?ReturnUrl=http://www.cnblogs.com/fnng/admin/EditPosts.aspx")
driver.find_element_by_id("tbUserName").send_keys("user")
driver.find_element_by_id("tbPassword").send_keys("456123")
driver.find_element_by_id("btnLogin").click()

...... 

driver.quit ()

通过上面的两个脚本,我们很明显的发现它的问题:

  一个用例对应一个脚本,假如界面发生变化,用户名的属性发生改变,不得不需要对每一个脚本进行修改,测试用例形成一种规模,我们可能将大量的工作用于脚本的维护,从而失去自动化的意义。

  这种模式下数据和脚本是混在一起的,如果数据发生变也也需要对脚本进行修改。

      这种模式下脚本的可重复使用率很低。

 

 

模块化与库                                                                              

 

我们会清晰的发现在上面的脚本中,其实有不少内容是重复的;于是就有了下面的形式。

#coding=utf-8
from selenium import webdriver
import time

#登录模块
def login():
    driver.find_element_by_id("tbUserName").send_keys("user")
    driver.find_element_by_id("tbPassword").send_keys("456123")
    driver.find_element_by_id("btnLogin").click()

#退出模块
def  quit():
     ..............


driver = webdriver.Firefox()
driver.get("http://passport.cnblogs.com/login.aspx?ReturnUrl=http://www.cnblogs.com/fnng/admin/EditPosts.aspx")

#调用登录模块
login()

#其它个性化操作
...... 

#调用退出模块

注意,为了省事我把代码写在了一个文件里,真正的实施时需要把模块放到其它文件进行调用。还有上面代码不能完整运行。

 

  通过上面的代码发现,我们可以把脚本中相同的部分独立出来,形成模块或库;当脚本需要进行调用。这样做有两个好处:

  一方面提高了开发效率,不用重复的编写相同的脚本。

  另一方面提高了代码的复用。

 

 

数据驱动                                                                                 

 

  数据驱动应该是自动化的一个进步;从它的本意来讲,数据的改变(更新)驱动自动化的执行,从而引起结果改变。这显然是一个非常高级的概念和想法。

其实,我们能做到的是下面的形式。

d:\abc\data.txt

 

#coding=utf-8
from selenium import webdriver
import os,time
source = open("D:\\abc\\data.txt", "r")
values = source.readlines()
source.close()
# 执行循环
for serch in values:
    browser = webdriver.Firefox()
    browser.get("http://www.baidu.com")
    browser.find_element_by_id("kw").send_keys(serch)
    browser.find_element_by_id("su").click()
    browser.quit()

 好吧!不管我们读取的是txt 文件,还是csvexcel 文件的之类,又或者是数组、字典函数。我们实现了数据与脚本的分离,换句话说,我们实现了参数化。我们仍一千条数据,通过脚本的执行,可以返回一千条结果出来。

  同样的脚本执行不同的数据从而得到了不同的结构。是不是增强的脚本的复用性呢!

  其实,这对开发来说是完全没有什么技术含量的;对于当初QTP 自动化工具来说确是一个买点,因为它面对的大多是不懂开发的测试。

 

 

关键字驱动                                                                           

 

  理解了数据驱动,无非是把“数据”换成“关键字”,关键字的改变引起测试结果的改变。

  关键字驱动用编程方式就不太容易表现了。QTP 、 robot framework 等自动化工具就是典型的关键字驱动(填表格)

好吧!我能说selenium IDE 也是关键字驱动么?

转化成表格是这样的:

Selenium IDE 脚本分:命令(command)、对象(command)、值(value

格式就那里不偏不移,通过这样的格式去描述不同的对象,从而引起最终结果的改变。也就是说一切以对象为出发点。

当然,这样的脚本,显然对于不懂代码的同学非常直观!我要找谁(对象)?怎么做(命令)?做什么(值)?

更高级的关键字驱动,可以自己定义keyword然后“注册”到框架;从而实现更强大的功能和扩展性。关键字更详细的理解可以看我偶像的那偏文章。

 

 

  本文所列出了不同自动化模型,虽然简单阐述了他们的优缺点,但并不主观的说评判某一模型好坏。其实他们也并非单纯后者淘汰前者的关系,实施自动化更多的是以需求为出发点,混合的来使用以上模型去解决问题。

 

 

目录
相关文章
|
16天前
|
机器学习/深度学习 人工智能 自然语言处理
如何让AI更“聪明”?VLM模型的优化策略与测试方法全解析​
本文系统解析视觉语言模型(VLM)的核心机制、推理优化、评测方法与挑战。涵盖多模态对齐、KV Cache优化、性能测试及主流基准,助你全面掌握VLM技术前沿。建议点赞收藏,深入学习。
225 8
|
8月前
|
人工智能 Kubernetes jenkins
容器化AI模型的持续集成与持续交付(CI/CD):自动化模型更新与部署
在前几篇文章中,我们探讨了容器化AI模型的部署、监控、弹性伸缩及安全防护。为加速模型迭代以适应新数据和业务需求,需实现容器化AI模型的持续集成与持续交付(CI/CD)。CI/CD通过自动化构建、测试和部署流程,提高模型更新速度和质量,降低部署风险,增强团队协作。使用Jenkins和Kubernetes可构建高效CI/CD流水线,自动化模型开发和部署,确保环境一致性并提升整体效率。
|
2月前
|
机器学习/深度学习 存储 分布式计算
Java 大视界 --Java 大数据机器学习模型在金融风险压力测试中的应用与验证(211)
本文探讨了Java大数据与机器学习模型在金融风险压力测试中的创新应用。通过多源数据采集、模型构建与优化,结合随机森林、LSTM等算法,实现信用风险动态评估、市场极端场景模拟与操作风险预警。案例分析展示了花旗银行与蚂蚁集团的智能风控实践,验证了技术在提升风险识别效率与降低金融风险损失方面的显著成效。
|
8月前
|
存储 人工智能 测试技术
小鱼深度评测 | 通义灵码2.0,不仅可跨语言编码,自动生成单元测试,更炸裂的是集成DeepSeek模型且免费使用,太炸裂了。
小鱼深度评测 | 通义灵码2.0,不仅可跨语言编码,自动生成单元测试,更炸裂的是集成DeepSeek模型且免费使用,太炸裂了。
141457 29
小鱼深度评测 | 通义灵码2.0,不仅可跨语言编码,自动生成单元测试,更炸裂的是集成DeepSeek模型且免费使用,太炸裂了。
|
12月前
|
机器学习/深度学习 数据采集 监控
如何使用机器学习模型来自动化评估数据质量?
【10月更文挑战第6天】如何使用机器学习模型来自动化评估数据质量?
|
7月前
|
人工智能 自然语言处理 API
Proxy Lite:仅3B参数的开源视觉模型!快速实现网页自动化,支持在消费级GPU上运行
Proxy Lite 是一款开源的轻量级视觉语言模型,支持自动化网页任务,能够像人类一样操作浏览器,完成网页交互、数据抓取、表单填写等重复性工作,显著降低自动化成本。
497 11
Proxy Lite:仅3B参数的开源视觉模型!快速实现网页自动化,支持在消费级GPU上运行
|
7月前
|
人工智能 自然语言处理 数据可视化
autoMate:无需视觉模型!用DeepSeek-V3/R1就能实现自动化操作电脑,支持任何可视化界面
autoMate是一款基于AI和RPA的本地自动化工具,通过自然语言实现复杂任务的自动化操作,支持本地部署,确保数据安全和隐私,适合需要高效处理重复性工作的用户。
490 1
autoMate:无需视觉模型!用DeepSeek-V3/R1就能实现自动化操作电脑,支持任何可视化界面
|
8月前
|
机器学习/深度学习 自然语言处理 API
阿里云零门槛、轻松部署您的专属 DeepSeek模型体验测试
DeepSeek R1是基于Transformer架构的先进大规模深度学习模型,2025年1月20日发布并开源,遵循MIT License。它在自然语言处理等任务上表现出色,高效提取特征,缩短训练时间。阿里云推出的满血版方案解决了服务器压力问题,提供100万免费token,云端部署降低成本,用户可快速启动体验。虽然回答速度有待提升,但整体表现优异,备受关注。
282 8
|
8月前
|
人工智能 IDE 测试技术
用户说 | 通义灵码2.0,跨语言编码+自动生成单元测试+集成DeepSeek模型且免费使用
通义灵码, 作为国内首个 AI 程序员,从最开始的内测到公测,再到通义灵码正式发布第一时间使用,再到后来使用企业定制版的通义灵码,再再再到现在通义灵码2.0,我可以说“用着”通义灵码成长的为数不多的程序员之一了吧。咱闲言少叙,直奔主题!今天,我会聊一聊通义灵码的新功能和通义灵码2.0与1.0的体验感。
|
10月前
|
机器学习/深度学习 人工智能 自然语言处理
CogAgent-9B:智谱 AI 开源 GLM-PC 的基座模型,专注于预测和执行 GUI 操作,可应用于自动化交互任务
CogAgent-9B 是智谱AI基于 GLM-4V-9B 训练的专用Agent任务模型,支持高分辨率图像处理和双语交互,能够预测并执行GUI操作,广泛应用于自动化任务。
317 12
CogAgent-9B:智谱 AI 开源 GLM-PC 的基座模型,专注于预测和执行 GUI 操作,可应用于自动化交互任务

热门文章

最新文章