1. 插件简介
TestCraft 是一款基于人工智能(AI)技术的自动化测试工具,专为简化软件测试流程而设计。它通过创新的模型驱动架构(Model-Driven Architecture)和强大的 AI 能力,帮助测试人员快速生成测试想法,编写跨各种框架和编程语言的自动化脚本,并检查应用程序的可访问性问题,显著提升测试效率和质量。
2. 安装步骤
2.1 从 Chrome 应用商店安装
-
打开 Chrome 浏览器,访问 Chrome Web Store。
-
搜索 “TestCraft”。
-
点击 “添加到 Chrome” → “添加扩展”。
-
单击浏览器工具栏中的扩展程序图标,并固定扩展程序,以便 TestCraft 图标始终可见
3. 核心功能
3.1 AI 驱动的测试想法生成
-
利用大型语言模型 LLM 集思广益,根据网页元素自动生成全面的测试想法,覆盖功能性测试、用户交互场景等,确保最佳测试覆盖率。
-
测试人员无需手动编写测试用例,AI 会根据页面结构智能推荐测试方案。
3.2 自动化测试脚本生成
-
支持为流行的自动化框架(如 Cypress、Playwright、Selenium)生成可立即运行的测试脚本。
-
支持多种编程语言(JavaScript、TypeScript、Python、C#、Java),满足不同团队的技术需求。
-
测试脚本可直接集成到开发环境中,减少手动编写代码的工作量。
3.3 可访问性检查
-
自动识别 Web 应用程序中的可访问性问题(如缺少表单标签、颜色对比度不足等),并提供改进建议。
-
确保应用程序符合 WCAG 等可访问性标准,提升用户体验。
3.4 测试想法到自动化测试的无缝转换
-
用户可以在生成测试想法后,直接将其转换为自动化测试脚本,无需额外操作。
-
支持在生成脚本前编辑测试想法,进一步优化测试方案。
4. 详细使用教程
4.1产生测试想法
-
依次点击插件-Pick Element
-
选择元素后,点击“生成测试想法”。
-
查看建议的测试想法,分为积极测试、消极测试和创造性测试场景:
-
积极测试:系统在正常条件下按预期运行。
-
消极测试:错误情况或无效输入时系统如何处理。
-
创造性测试场景:探索不太常见的条件或组合输入以发现独特的问题,即发散测试。
-
或者,使用每个想法旁边的铅笔图标编辑建议的测试想法。
4.2 自动化测试想法
-
按照上述方法产生测试想法。
-
使用复选框选择您认为相关的测试想法(或者,您可以先编辑它们)。
-
单击“Automate”可根据所选的测试思路为特定 UI 元素生成自动化脚本。
4.3 复制测试想法
-
按照上述方法产生测试想法。
-
使用复选框选择您认为相关的测试想法(或者,您可以先编辑它们)。
-
单击"copy to clipboard"以复制选定的想法以供记录或进一步处理,比如粘贴到xmind。
4.4 编写自动化脚本
-
选择元素后,点击“自动化”生成代码。
-
单击“复制到剪贴板”将生成的代码直接复制到您的 IDE 中。
-
代码采用了页面对象模型(Page Object Model)设计模式,将页面元素和操作封装在
LoginPage
类中,提高代码可维护性;测试用例放另一个py文件。
# page_objects.py
# 封装登录页面中手机号输入框相关操作的页面对象类
class LoginPage:
def __init__(self, driver):
self.driver = driver
@propertydef phone_input(self):
# 通过CSS定位方式定位手机号输入框:类型为tel的input元素
return self.driver.find_element(By.CSS_SELECTOR, "input[type='tel']")
def enter_phone_number(self, phone_number):
# 在手机号输入框中输入文本(先清空再输入)
self.phone_input.clear()
self.phone_input.send_keys(phone_number)
def get_phone_input_value(self):
# 获取手机号输入框当前的值
return self.phone_input.get_attribute('value')
# test_login.pyimport unittest
from selenium import webdriver
from page_objects import LoginPage
class TestLoginPage(unittest.TestCase):
def setUp(self):
# 测试前的设置:启动Chrome浏览器并访问登录页面
self.driver = webdriver.Chrome()
self.driver.get("http://10.30.5.85/sso/login/1?QrType=wechat")
self.login_page = LoginPage(self.driver)
def tearDown(self):
# 测试后的清理:关闭浏览器
self.driver.quit()
def test_enter_valid_phone_number(self):
# 验证输入的手机号是否正确显示在输入框中
valid_phone_number = "12345678901"
self.login_page.enter_phone_number(valid_phone_number)
self.assertEqual(self.login_page.get_phone_input_value(), valid_phone_number)
def test_enter_invalid_phone_number(self):
# 验证即使输入无效手机号也能正确显示
invalid_phone_number = "12345"
self.login_page.enter_phone_number(invalid_phone_number)
self.assertEqual(self.login_page.get_phone_input_value(), invalid_phone_number)
def test_phone_number_length(self):
# 验证输入框是否限制手机号长度为11位(假设业务规则)
long_phone_number = "123456789012"
self.login_page.enter_phone_number(long_phone_number)
self.assertEqual(len(self.login_page.get_phone_input_value()), 11)
def test_phone_number_cleared(self):
# 验证清空操作是否有效
phone_number = "98765432101"
self.login_page.enter_phone_number(phone_number)
self.login_page.phone_input.clear()
self.assertEqual(self.login_page.get_phone_input_value(), "")
def test_phone_number_autocomplete_off(self):
self.assertEqual(self.login_page.phone_input.get_attribute('autocomplete'), 'off')
def test_phone_number_placeholder(self):
# 验证手机号输入框的placeholder文本是否正确
expected_placeholder = "请输入手机号码"
self.assertEqual(self.login_page.phone_input.get_attribute('placeholder'), expected_placeholder)
if __name__ == "__main__":
unittest.main()
4.5 可访问性检查
-
选择元素后,点击“Check Accessibility”。
-
查看详细报告,指出潜在问题和测试建议。
问题
符合性A级
- 问题:输入字段缺少标签
- 标准:1.1.1 非文本内容
- 解决方案:使用与输入的“id”匹配的“for”属性添加与输入字段关联的“<label>”元素。
符合等级AA
- 问题:占位符文本是提供说明的唯一手段
- 标准:3.3.2 标签或说明
- 解决方案:为输入字段提供可见的标签,而不是仅仅依赖占位符文本。
一致性级别 AAA
- 问题:没有指示输入字段的必填状态
- 标准:3.3.3 错误建议
- 解决方案:用可见的标记(例如星号)指示该字段是必填的,如果输入不符合预期格式,则提供错误建议。
建议的测试
- 测试:检查输入字段的标签是否正确
- 标准:4.1.2 名称、角色、值
- 测试详情:使用屏幕阅读器验证输入字段是否具有可访问的名称,以及在聚焦时是否正确读取标签。
5.API配置
在“设置”选项卡中,您可以找到扩展程序的各种配置设置。要打开它,请点击左上角的齿轮图标。
5.1自动化设置
在本节中,您可以选择您喜欢的语言和测试框架。
5.2 OpenAI API 密钥
输入 Open AI API 密钥可将此密钥设置为用于所有 OpenAI 请求。此操作还会启用下拉菜单,以便选择更强大的模型。
-
在第一个文本输入(带有占位符“您的 OpenAI API 密钥”)中输入 OpenAI API 密钥。
5.3 服务器 URL
输入服务器 URL 后,可以使用部署在组织基础架构中的 TestCraft API。同时,还可以通过下拉菜单选择更强大的模型。
-
在第二个文本输入框(带有占位符“您的服务器 URL”)中输入服务器 URL。
5.4 选择您的型号
此下拉菜单允许在可用模型之间进行选择(更多模型即将推出)。
由于涉及成本,gpt-4o-
mini默认情况下会选中,并且下拉菜单处于禁用状态。要启用其他模型,需要设置OpenAI API 密钥或服务器 URL。
6. 存在问题
-
翻译为中文后,无法编辑
7. 注意事项
-
兼容性:部分功能可能不适用于 Vue/React 动态渲染的页面。
-
更新维护:定期检查插件版本,避免因浏览器升级导致失效。