技术前沿:AI大模型在自动化测试中的应用实例
哈喽,大家好,我是六哥!今天咱们来聊一聊如何用AI大模型(比如GPT-3.5)来做自动化测试,别看这东西听起来高大上,但也没那么神,跟着我咱们一步一步来,保证你也能轻松搞定,学会了保准让你在工作中老省事儿了。
本文面向对象为功能测试及零基础小白,这里我会尽量用大白话的方式举例讲解,力求所有人都能看懂,建议大家先收藏,以免后面找不到。
前期准备,稳扎稳打
首先,咱们得准备点东西,就像做饭前得准备好食材一样。
安装Python
电脑上得先装个Python,这个不用多说,现在谁家电脑还没个Python啊。如果你还不知道怎么装,百度一下“Python 安装教程”,跟着走就行了。
安装OpenAI库
接下来,咱们得装个OpenAI的库,这个库是用来调用GPT-3.5模型的。打开命令行(Windows上叫CMD,Mac和Linux上叫Terminal),输入下面的命令:
pip install openai
获取API密钥
咱得先把那 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}
]
这两句代码就是构建了一个消息列表。第一个消息告诉大模型它是个有用的助手,第二个消息就是咱刚才写的那个提示。这就像给大模型打了个招呼,然后把任务交给它。
调用 API,火力全开
这一步可老重要了。就跟打电话找人办事儿似的,咱得把电话打出去,才能有人回应咱。而且咱还得找对人,找那个厉害的 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大模型学习了解
# 百度文心 上线时间:2019年3月 官方介绍:https://wenxin.baidu.com/ 发布地点: 参考资料: 2600亿!全球最大中文单体模型鹏城-百度·文心发布 # 华为盘古 上线时 ...
- 华为高级研究员谢凌曦:下一代AI将走向何方?盘古大模型探路之旅
摘要:为了更深入理解千亿参数的盘古大模型,华为云社区采访到了华为云EI盘古团队高级研究员谢凌曦.谢博士以非常通俗的方式为我们娓娓道来了盘古大模型研发的"前世今生",以及它背后的艰难 ...
- Unity3D中的AI架构模型
我们都知道现在AI(由人工制造出来的系统所表现出来的模拟人类的智能活动)非常的火,可以说是家喻户晓.当然,在游戏中,AI也是到处可以找到的,对于AI,我们应该关注的问题是如何让游戏角色能够向人或动物那 ...
- zz2017-2018年AI技术前沿进展与趋势
2017年AI技术前沿进展与趋势 人工智能最近三年发展得如火如荼,学术界.工业界.投资界各方一起发力,硬件.算法与数据共同发展,不仅仅是大型互联网公司,包括大量创业公司以及传统行业的公司都开始涉足人工 ...
- 技术前沿:ISP芯片终极进化——VP芯片(AI视觉处理器)
1.计算机视觉的定义 广义与狭义 从广义上说,计算机视觉就是"赋予机器自然视觉能力"的学科.自然视觉能力,就是指生物视觉系统体现的视觉能力. 从狭义上讲,计算机视觉是以图像(视频) ...
- 保姆级教程:用GPU云主机搭建AI大语言模型并用Flask封装成API,实现用户与模型对话
导读 在当今的人工智能时代,大型AI模型已成为获得人工智能应用程序的关键.但是,这些巨大的模型需要庞大的计算资源和存储空间,因此搭建这些模型并对它们进行交互需要强大的计算能力,这通常需要使用云计算服务 ...
- 千亿参数开源大模型 BLOOM 背后的技术
假设你现在有了数据,也搞到了预算,一切就绪,准备开始训练一个大模型,一显身手了,"一朝看尽长安花"似乎近在眼前 -- 且慢!训练可不仅仅像这两个字的发音那么简单,看看 BLOOM ...
- opencv图像识别技术在自动化测试中的应用
在自动化测试中,基于xpath.js选择器.css选择器进行元素定位及判定的技术已经比较成熟.在实际应用中,无论是web端还是移动端,仍有很多时候需要根据页面内容.页面中的图像进行定位及判定,这里介绍 ...
- zz独家专访AI大神贾扬清:我为什么选择加入阿里巴巴?
独家专访AI大神贾扬清:我为什么选择加入阿里巴巴? Natalie.Cai 拥有的都是侥幸,失去的都是人生 关注她 5 人赞同了该文章 本文由 「AI前线」原创,原文链接:独家专访AI大神贾扬清:我 ...
- (转)Web自动化测试中的接口测试
1.背景 1.1 Web程序中的接口 1.1.1 典型的Web设计架构 web是实现了基于网络通信的浏览器客户端与远程服务器进行交互的应用,通常包括两部分:web服务器和web客户端.web客户端的应 ...
随机推荐
- java汉字占用字节
若使用utf-8编码,中文占3个字节,英文的话只占一个字节 System.out.println("人".getBytes().length); 输出3 若使用unicode编码, ...
- Linux下如何在程序中获取某个命令执行的结果?【附源码】
在工作中遇到一个问题,就是想获取某个函数执行之后打印的字符串信息. 这个功能应用场景挺多的, 特地整理了一下相关知识点分享给大家. 1. 使用临时文件 1) 使用shell的重定向 将命令输出重定向到 ...
- Dapr v1.14 版本已发布
Dapr是一套开源.可移植的事件驱动型运行时,允许开发人员轻松立足云端与边缘位置运行弹性.微服务.无状态以及有状态等应用程序类型.Dapr能够确保开发人员专注于编写业务逻辑,而不必分神于解决分布式系统 ...
- 玄机蓝队靶场_应急响应_01:linux日志分析
个人感觉这个靶场主要考验对linux的命令的基础掌握,对日志路径的基本了解. 一:解题 (1)ssh连接靶场,先用命令lsb_release -a看看是什么系统.然后发现是Debian GNU/Lin ...
- VS Code 代码片段指南: 从基础到高级技巧
前言 " 系列首发于公众号『非同质前端札记』 ,若不想错过更多精彩内容,请"星标"一下,敬请关注公众号最新消息. 今天咱们来聊聊 VS Code 里的自定义代码片段. 这 ...
- Blender - 动画demo体后感
Blender 一个非常不错的免费的3D.2D软件 超级不错 我初步的按照网上的动画教程,做了一个很简单的 不断跳动的独眼球 为什么独眼?一开始我是画了两个眼睛,结果最后总是出了点问题,没有办法cop ...
- js玩儿爬虫
前言 提到爬虫可能大多都会想到python,其实爬虫的实现并不限制任何语言. 下面我们就使用js来实现,后端为express,前端为vue3. 实现功能 话不多说,先看结果: 这是项目链接:https ...
- C#|.net core 基础 - 如何判断连续子序列
前两天同事遇到了一个小需求,想判断一个集合是不是在另一个集合中存在,并且要求顺序一致,然后一起讨论了下应该怎么做,有没有什么比较好的方式?下面分享一下我们想到的方法,如果你也有不同的想法也可以分享给我 ...
- LLog:Spring轻量级请求日志监控组件,集成管理面板,支持多条件查询检索
开源地址 https://gitee.com/lboot/LLog 简介 LLog是基于AOP构建的请求日志记录和查询工具库,通过引入该工具库,完成配置,实现对接口请求日志的记录.查询检索等功能. 请 ...
- Angular 18+ 高级教程 – Angular 的局限 の Query Elements
前言 熟悉 Angular 的朋友都知道,Angular 有非常多的局限,许多事情它都做不好,打开 Github 一堆 2016 - 2017 的 Issues,时至今日都没有解决. 原因也很简单 - ...