写点什么

人工智能丨视觉识别在自动化测试中的应用

作者:测试人
  • 2025-01-23
    北京
  • 本文字数:2805 字

    阅读完需:约 9 分钟

视觉识别:自动化测试的新纪元

在当今快速发展的科技时代,软件测试正面对着日益复杂的挑战。作为其中一个关键领域,自动化测试不断寻求创新的方法,以提高测试效率和准确性。在这一背景下,视觉识别技术的引入为自动化测试带来了新的可能性和机遇。那么,究竟视觉识别在自动化测试中的应用有哪些呢?它又是如何改变我们测试的方式的呢?

视觉识别技术概述

视觉识别技术,通常被称为计算机视觉,是指通过计算机对图像或视频信息进行处理和分析,从中提取有用信息的过程。这项技术涉及到多个领域的知识,包括人工智能、机器学习和图像处理等。通过训练模型,计算机可“看见”屏幕上的元素,并能快速、准确地识别出按钮、文本框、图片等各种 UI 组件。

在软件测试中,视觉识别技术可以有效地帮助我们识别用户界面(UI)变化、验证布局的一致性、并提升测试用例的创建与维护效率。让我们深入挖掘视觉识别技术在自动化测试中的应用和益处。

视觉识别技术的应用方法

在这一部分,我们将详细探讨视觉识别技术在自动化测试中的五种具体应用方式,包括实现步骤和示例代码,让我们一起看看它们是如何工作的。

1. UI 元素识别

步骤:

  • 首先,选择一个用于测试的应用程序(例如,网站或移动应用)。

  • 然后,使用框架如 Selenium 或 Appium 开发基础的自动化测试脚本。

  • 接下来,整合视觉识别工具(如 OpenCV 或 SikuliX)来检测 UI 元素。

示例代码:

import cv2import numpy as npfrom selenium import webdriver
# 启动浏览器driver = webdriver.Chrome()driver.get('http://example.com')
# 截图并读取图像screenshot = driver.get_screenshot_as_file('screenshot.png')img = cv2.imread('screenshot.png')
# 使用模板匹配识别按钮template = cv2.imread('button_template.png')result = cv2.matchTemplate(img, template, cv2.TM_CCOEFF_NORMED)
# 查找位置和显示结果threshold = 0.8loc = np.where(result >= threshold)for pt in zip(*loc[::-1]): cv2.rectangle(img, pt, (pt[0] + template.shape[1], pt[1] + template.shape[0]), (0, 255, 0), 2)
cv2.imshow('Detected', img)cv2.waitKey(0)
复制代码

2. 视觉回归测试

步骤:

  • 在基于视觉的自动化测试中,首先需要对应用程序的各个状态进行截图。

  • 随后,将这些截图与后续更改后的截图进行对比,以检查 UI 的一致性。

示例代码:

from PIL import Imageimport numpy as np
# 打开两张图片img1 = Image.open('old_screenshot.png')img2 = Image.open('new_screenshot.png')
# 将图片转换成 NumPy 数组arr1 = np.array(img1)arr2 = np.array(img2)
# 对比两张图像的像素差异difference = np.abs(arr1 - arr2)if np.any(difference > 0): print("UI变化检测到!")else: print("无变化.")
复制代码

3. 动态元素验证

步骤:

  • 对于动态变化的 UI 元素(如轮播图),我们可以使用视觉识别来确保每一帧内容都被正确显示。

  • 编写测试脚本循环处理每个状态,并通过视觉识别验证。

示例代码:

# 确保使用具有动态元素的页面driver.get('http://example.com/slideshow')
for i in range(1, 6): # 假设有5个幻灯片 driver.switch_to.frame("slideshow_frame") screenshot = driver.save_screenshot(f'slide_{i}.png')
# 进行视觉识别验证 img = cv2.imread(f'slide_{i}.png') template = cv2.imread(f'slide_template_{i}.png') result = cv2.matchTemplate(img, template, cv2.TM_CCOEFF_NORMED)
if np.amax(result) < 0.8: print(f"幻灯片 {i} 显示有误!") driver.switch_to.default_content() # 退回主页面
复制代码

4. 屏幕元素对比

步骤:

  • 当网页或应用更新时,我们需要确认更新后的布局与设计师提供的设计稿一致。

  • 使用视觉识别,快速检查是否所有元素都有正确渲染。

示例代码:

# 获取新版本布局截图driver.get('http://example.com/updated_version')driver.save_screenshot('new_layout.png')
# 进行视觉对比reference = cv2.imread('reference_layout.png')new_version = cv2.imread('new_layout.png')
# 对比算法similarity = cv2.matchTemplate(new_version, reference, cv2.TM_CCOEFF_NORMED)if np.amax(similarity) < 0.8: print("布局不一致!")else: print("布局一致!")
复制代码

5. 视觉缺陷检测

步骤:

  • 当软件中存在图形或图像时,确保识别图像的缺损或错误。

  • 通过视觉识别确认图形内容的完整性。

示例代码:

# 假设检测图像内容的完整性img = cv2.imread('graphic_content.png')template = cv2.imread('expected_template.png')
# 测试内容完整性result = cv2.matchTemplate(img, template, cv2.TM_CCOEFF_NORMED)if np.amax(result) < 0.75: print("图形内容存在缺陷!")else: print("图形完整无缺!")
复制代码

视觉识别的亮点与好处

视觉识别在自动化测试中为我们带来的好处不容小觑。这项技术不仅提高了测试效率,也让我们能够更准确、更高效地捕捉到可能被遗漏的界面错误。以下是我们能够收获的一些主要亮点:

  1. 提高准确性:传统的定位方式往往依赖于控件的属性,而视觉识别则模拟了人类眼睛的视角,对图像的变化敏感。

  2. 适应性强:现代应用程序的界面往往复杂多变,视觉识别能更好地处理诸如位置变化、分辨率变化等挑战。

  3. 降低维护成本:通过减少对元素定位的依赖,能够显著降低因 UI 变化导致的测试用例维护工作量。

  4. 提升用户体验:确保所有关键界面元素在不同设备和浏览器中的正确显示,为用户提供一致的使用体验。

  5. 增强覆盖率:视觉检测可以轻松覆盖多种设备和平台,极大地提升了测试覆盖率。

视觉识别对软件测试职业发展的好处与前景

近年来,随着自动化测试技术的飞速发展,视觉识别技能越来越受到企业和应聘者的青睐。从职业发展的角度来看,掌握视觉识别技术将为我们的职业生涯开辟新的可能性:

  1. 职业转型机会:由于各大公司都在寻求自动化测试优秀人才,运用视觉识别能力的人才能在这个领域中脱颖而出。

  2. 核心竞争力提升:掌握这一新技术使得我们在众多求职者中更具竞争力,不仅能应对当今行业需求,也能适应未来技术变革。

  3. 推动团队创新:视觉识别技术的引入,也使团队能够在测试中使用新的思路,从而推动整体测试效率和质量的提升。

  4. 行业前景广阔:未来自动化测试的需求将持续增长,特别是在 AI 驱动的技术未来中,视觉识别将扮演重要角色。

常见问题 FAQ

1. 什么是视觉识别技术?

视觉识别技术是计算机通过图像或视频处理,识别和分析其中信息的过程。它可以用于检测 UI 组件、进行视觉回归测试等。

2. 如何在自动化测试中引入视觉识别?

可以通过使用工具如 OpenCV、SikuliX 或其他图像处理库,对 UI 元素进行识别和验证。

3. 视觉识别技术的必要性是什么?

在面对动态变化的 UI 元素及复杂应用时,视觉识别技术可以确保准确性并提高测试的覆盖率。

4. 我该如何培养视觉识别技能?

建议通过学习计算机视觉基础,运用相关工具进行实践,持之以恒地进行项目练习。

发布于: 刚刚阅读数: 3
用户头像

测试人

关注

专注于软件测试开发 2022-08-29 加入

霍格沃兹测试开发学社,测试人社区:https://ceshiren.com/t/topic/22284

评论

发布
暂无评论
人工智能丨视觉识别在自动化测试中的应用_人工智能_测试人_InfoQ写作社区