- VisualStudio2022插件的安装及使用-编程手把手系列文章
- pprof-在现网场景怎么用
- C#实现的下拉多选框,下拉多选树,多级节点
- 【学习笔记】基础数据结构:猫树
哈喽,大家好,我是六哥!今天咱们来聊一聊如何用AI大模型(比如GPT-3.5)来做自动化测试,别看这东西听起来高大上,但也没那么神,跟着我咱们一步一步来,保证你也能轻松搞定,学会了保准让你在工作中老省事儿了.
本文面向对象为功能测试及零基础小白,这里我会尽量用大白话的方式举例讲解,力求所有人都能看懂,建议大家先收藏,以免后面找不到。😎 。
首先,咱们得准备点东西,就像做饭前得准备好食材一样.
电脑上得先装个Python,这个不用多说,现在谁家电脑还没个Python啊。如果你还不知道怎么装,百度一下“Python 安装教程”,跟着走就行了.
接下来,咱们得装个OpenAI的库,这个库是用来调用GPT-3.5模型的。打开命令行(Windows上叫CMD,Mac和Linux上叫Terminal),输入下面的命令:
pip install openai
咱得先把那 API 密钥啥的整明白喽。这就跟你出门得带钥匙一样,没这玩意儿,门都进不去.
api_key = "your_openai_api_key"
openai.api_key = api_key
瞅见没,就这两句代码,把你的 API 密钥给设置好。你就麻溜地把 “your_openai_api_key” 换成你自个儿的密钥,这就妥了.
接下来咱得告诉那大模型咱要干啥。咱就想要用户登录的测试用例,正常情况和异常情况都得有,还不能多,就两条用例。咱得把要求提得明明白白的,不然大模型都不知道咋给咱干活.
prompt = "生成用户登录的测试用例,只包含正常情况和异常情况,只生成 2 条用例"
就这么一句话,告诉大模型咱的要求。简单明了,不拖泥带水.
这就跟跟人唠嗑似的,得有来言有去语。咱得告诉大模型它是干啥的,咱是干啥的。这样它才能更好地为咱服务.
messages = [
{"role": "system", "content": "你是一个有用的助手。"},
{"role": "user", "content": prompt}
]
这两句代码就是构建了一个消息列表。第一个消息告诉大模型它是个有用的助手,第二个消息就是咱刚才写的那个提示。这就像给大模型打了个招呼,然后把任务交给它.
这一步可老重要了。就跟打电话找人办事儿似的,咱得把电话打出去,才能有人回应咱。而且咱还得找对人,找那个厉害的 GPT-3.5-turbo 大模型.
try:
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=messages,
max_tokens=512
)
except Exception as e:
print(f"Error generating response: {e}")
exit(1)
这段代码就是调用那个 GPT-3.5-turbo 这个大模型。要是出啥岔子了,就会打印出错误信息,然后程序就不干了。咱可得小心点,别让它出问题.
人家大模型给咱回应了,咱得把有用的信息给挑出来。就跟在一堆破烂里找宝贝似的。咱得仔细点,别把好东西给漏了.
generated_text = response.choices[0].message.content.strip()
test_cases = generated_text.split('\n')
第一句代码就是把大模型给咱的回应内容给拿出来,去掉两边的空白。第二句代码就是把这个回应内容按照换行符给分成一条条的测试用例。这下咱就有了一堆测试用例,就像有了一堆宝藏.
咱得瞅瞅大模型给咱生成的测试用例是啥样的。就跟收到快递得打开看看是啥玩意儿似的。咱得赶紧看看,心里好有个底.
print("Generated Test Cases:")
for i, case in enumerate(test_cases):
print(f"Test Case {i+1}: {case}")
这段代码就是打印出大模型生成的测试用例。一个一个地打出来,让咱看得明明白白的。这样咱就能知道大模型给咱生成的用例好不好,有没有用.
大模型给咱生成的测试用例可能不太好直接用,咱得给它整明白喽。就跟收到一封密码信,得给它破解了似的。咱得把里面的关键信息都找出来,才能用得顺手.
def parse_test_case(case):
parts = case.split(',')
username = parts[0].split(':')[1].strip()
password = parts[1].split(':')[1].strip()
expected_result = parts[2].split(':')[1].strip()
return username, password, expected_result
这个函数就是用来解析测试用例的。把一条测试用例按照逗号分成几部分,再把每部分按照冒号分成两部分,把有用的信息给挑出来,去掉两边的空白。这样咱就得到了用户名、密码和预期结果,就可以更好地进行自动化测试了.
咱得看看解析后的测试用例是啥样的。就跟破解完密码信得看看写的是啥似的。咱得确认一下解析得对不对,有没有问题.
parsed_test_cases = []
for i, case in enumerate(test_cases):
try:
username, password, expected_result = parse_test_case(case)
parsed_test_cases.append((username, password, expected_result))
print(f"Parsed Test Case {i+1}: Username={username}, Password={password}, Expected Result={expected_result}")
except Exception as e:
print(f"Error parsing test case {i+1}: {e}")
这段代码就是遍历大模型生成的测试用例,一个一个地解析,然后把解析后的结果打印出来。要是出啥岔子了,就打印出错误信息。这样咱就能及时发现问题,解决问题.
最后咱得把解析后的测试用例给拿出来,好让咱在别的地方用。就跟从超市买完东西得带回家似的。咱得把这些用例准备好,随时可以进行自动化测试.
print("\nParsed Test Cases:")
for i, (username, password, expected_result) in enumerate(parsed_test_cases):
print(f"Test Case {i+1}: Username={username}, Password={password}, Expected Result={expected_result}")
这段代码就是再次打印出解析后的测试用例,让咱看得更清楚。这样咱就可以放心地使用这些用例了.
咱这一套流程下来,就把那个 AI 大模型给使唤得明明白白的了。先是设置好 API 密钥,然后告诉大模型咱要干啥,接着调用 API 让大模型给咱生成测试用例,再把生成的测试用例给提取出来,打印出来瞅瞅,然后解析一下,再打印出来瞅瞅,最后把解析后的测试用例给拿出来用.
老简单了,你就跟着我这步骤一步一步来,指定能学会.
运行后,你能得到大模型生成的用户登录的测试用例,而且还能把这些测试用例给解析得明明白白的,方便你在自动化测试中使用。真的老好使了! 。
Generated Test Cases:
Test Case 1: 以下是一些简单的用户登录测试用例,包括了正常情况和一些常见的异常情况:
1. 正常情况:
- 输入正确的用户名和密码。
- 应该被允许成功地登录。
示例代码(Python):
```python
def test_login_normal(self):
self.driver.get("https://example.com/login")
username = self.driver.find_element_by_name("username")
password = self.driver.find_element_by_name("password")
username.send_keys("test_user")
password.send_keys("test_password")
login_button = self.driver.find_element_by_css_selector(".login-button")
login_button.click()
# 确保登录页面显示为正确的内容
assert "Home" in self.driver.page_source, "Failed to navigate to Home page after successful login"
```
2. 异常情况:
- 输入无效的用户名或密码。
- 未能成功登录。
- 网页加载失败。
- 验证码错误。
示例代码(Python):
```python
def test_login_failure(self):
self.driver.get("https://example.com/login")
username = self.driver.find_element_by_name("username")
password = self.driver.find_element_by_name("password")
username.send_keys("invalid_username")
password.send_keys("invalid_password")
login_button = self.driver.find_element_by_css_selector(".login-button")
login_button.click()
# 确保没有跳转到登录页面
assert self.driver.current_url != "https://example.com/login", "Failed to navigate to login page"
# 确保没有出现验证码提示
assert not self.driver.find_elements_by_class_name("captcha"), "Captcha should be hidden"
# 确保没有显示错误信息
assert not self.driver.find_element_by_class_name("error-message").is_displayed(), "Error message should not be displayed"
# 确保没有跳转到注册页面
assert self.driver.current_url != "https://example.com/register", "Failed to navigate to register page"
def test_login_timeout(self):
self.driver.get("https://example.com/login")
username = self.driver.find_element_by_name("username")
password = self.driver.find_element_by_name("password")
username.send_keys("test_user")
password.send_keys("test_password")
login_button = self.driver.find_element_by_css_selector(".login-button
Error parsing test case 1: list index out of range
我敢说,这篇文章绝对是真的是干货满满,要是你还不会用 AI 大模型搞自动化测试,那就赶紧跟着咱这文章学起来吧。保证让你成为自动化测试的高手,在工作中大放异彩.
如需要全部源代码,公众号回复 “AI自动化” 获取,没有引号哦! 。
最后此篇关于技术前沿:AI大模型在自动化测试中的应用实例的文章就讲到这里了,如果你想了解更多关于技术前沿:AI大模型在自动化测试中的应用实例的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 5 年前。 Improve t
背景 我有一个 Azure Runbook(名为 RunStoredProcedure2),定义如下: param( [parameter(Mandatory=$True)] [string] $Sq
我有一个名为“团队”的表,其中包含“非事件”列,另一个表“事件”,其中包含“时间”列。如果任何团队的“事件”中的最新日期发生在 X 时间之前,如何将“非事件”列更新(为 true)? 我知道这可以通过
下面的问题可能有点令人困惑,但我会尽力以最好的方式解释它。 假设我们为一家制造公司工作。它制造然后用于制造产品的组件。在以下示例中,有 3 个组件和 2 个最终产品。 组件和产品的需求如下: comp
我有代码可以让我在一个范围内选择一个项目: COleVariant vItems = cstrAddr; hr = AutoWrap(
我正在开发一个应用程序,该应用程序有 4 种语言的大约 50 个应用内购买,这给了我很多表单和子表单、框和子框,需要使用 iTunesConnect 的令人痛苦且设计糟糕的表单来填充。 我想知道是否有
我想在 Azure 自动化中使用 powershell 脚本来安排打开/关闭资源。 我想在不创建帐户的情况下执行此操作,因为我们的域强制重置密码。我知道自动化帐户会创建一个证书 - 当使用资源管理器(
我尝试从 azure 自动化 run book power shell 自动检索 azure SQL 数据库中的数据。我发现azure自动化帐户的模块中缺少SQL Server模块。我已经导入了该模块
我正在自动化 Outlook,并且需要控制电子邮件的发件人身份。用户将在 Outlook 中设置两个或多个帐户,我需要能够选择从哪个帐户发送电子邮件。有什么想法吗? 需要 Outlook 2003 及
我尝试从 azure 自动化 run book power shell 自动检索 azure SQL 数据库中的数据。我发现azure自动化帐户的模块中缺少SQL Server模块。我已经导入了该模块
假设我有一个网站,我可以(随时)登录并每隔 x 小时提交数据(单击登录后可见的链接),我将如何自动化此过程? 我构建了一个图形用户界面,它为用户(现在是我,为了我自己的方便)提供了一个包含一些信息的界
我正在开发一个程序,它的任务是我们为它定义一些号码(我们的一些手机号码)并且它应该在 Telegram 中注册它们,然后获取发送到该号码的所有消息。如您所知,在 Telegram 中注册需要提供电话号
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 3 年前。 Improve this qu
最近我在处理 CSS Sprite 。一切正常。 我创建了一个 sprite、.css 文件和 html 结构。看起来像 .sprites{ background-image:url
我想为一款名为 Dune 2000 的策略游戏创建一个叠加层。令人讨厌的是,要创建 10 个士兵,每次完成一个都必须单击该图标。没有队列。因此,在不干扰游戏运行方式的情况下,我想听听鼠标移动的声音,当
我是 python 的初学者,我想从自动化开始。以下是我正在尝试执行的任务。 ssh -p 2024 root@10.54.3.32 root@10.54.3.32's password: 我尝试通过
当我将一些 urlencoded Javascript 粘贴到 Firefox 和 Chrome 上的 URL 时,我看到了一些奇怪的事情发生。是否可以使用此技术告诉 Chrome 访问 URL,然后
我需要将大量请求自动提交到基于云的数据库接口(interface) (Intelex)。没有任何方法可以批量提交某些操作,但是提交单个请求所必需的只是让经过身份验证的用户尝试打开 Web 链接。因此,
假设我有一个进程的内存转储。我想对其运行报告,所以基本上我想打开 WinDBG,加载 SOS 并运行一个脚本,该脚本运行一些命令,解析输出,然后基于此运行更多命令。 除了像 SendKeys 这样的
我正在使用 ffmpeg 创建视频剪辑。我想自动化该过程并保存剪辑,而无需手动为要保存的每个文件命名。这是我拥有的代码。它将创建并保存剪辑,但只能使用扩展名和不是名字。 @echo off cd /d
我是一名优秀的程序员,十分优秀!