软件测试----AI测试
·
记录在听黑马课的时候的笔记以及课堂上练习的代码,文章图源于我在听课的时候所截的屏,所以有些不清晰,请见谅。
目录

手工AI测试
测试基础






AI工具应用






DeepSeek编写测试用例


专业的提示词:


AI测试设计





DeepSeek描述缺陷






D老师生成的缺陷用例
缺陷报告
Bug 标题:登录模块-使用50字符长度的用户名登录时页面无响应
当前指派:开发负责人(请根据实际项目分配调整)
Bug 类型:功能缺陷
严重程度:严重
优先级:高
重现步骤:
- 注册一个用户名为50个字符的用户(如:0123456789012345678901234567890123456789012345678a);
- 打开登录页面:https://hmshop-test.itheima.net/Home/user/login.html;
- 输入已注册的50字符用户名、正确密码(如:Tes11234)和验证码(如:8888);
- 点击“登录”按钮;
- 观察页面反应。
预期结果:登录成功,跳转到用户主页或提示登录成功。
实际结果:点击登录按钮后页面无任何响应,无跳转、无提示、无错误信息。
附件:(请在禅道中上传以下内容)
- 截图1:输入50字符用户名的登录页面
- 截图2:点击登录后页面无响应的状态
- 录屏(可选):展示操作全过程及页面无响应现象
备注:
该问题影响用户正常登录功能,属于边界值异常处理缺失,建议开发检查用户名长度校验与后端接口处理逻辑。
粘到禅道中:


开发拿到之后:
点击缺陷标题进入主页:

点击确认


如果解决完之后:


之后测试人员再按照步骤进行测试是否真的已经解决,若已解决则点击关闭bug:




DeepSeek编写测试报告



AI自动化测试
自动化测试基础





环境搭建


在pycharm中安装,会安装到当前项目文件位置,不推荐用cmd来安装






快速入门






from selenium import webdriver
from selenium.webdriver.edge.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# 配置浏览器选项
edge_options = Options()
# 禁用通知,避免弹窗干扰
prefs = {
"profile.default_content_setting_values.notifications": 2,
"credentials_enable_service": False,
"profile.password_manager_enabled": False
}
edge_options.add_experimental_option("prefs", prefs)
# 可选:无头模式(不显示浏览器界面)
# edge_options.add_argument("--headless")
# 1. 启动Edge浏览器(带配置)
driver = webdriver.Edge(options=edge_options)
driver.maximize_window()
try:
# 2. 打开百度首页
driver.get("https://www.baidu.com")
wait = WebDriverWait(driver, 10)
# 3. 直接使用JavaScript定位和操作(最稳健的方法)
# 输入搜索词
search_script = """
document.getElementById('kw').value = '北京烤鸭';
"""
driver.execute_script(search_script)
# 点击搜索按钮
click_script = """
document.getElementById('su').click();
"""
driver.execute_script(click_script)
# 等待搜索结果
import time
time.sleep(10)
print("搜索成功!")
print("页面标题:", driver.title)
print("页面URL:", driver.current_url)
except Exception as e:
print(f"发生错误:{str(e)}")
finally:
# 5. 关闭浏览器
driver.quit()
Pycharm集成ai工具






DeepSeek编写登录自动化测试脚本




我们用ai写好后,点击运行发现它报错输出提示信息,Unable to locate element: {"method":"css selector","selector":"input[type='submit']"}找不到登录提交按钮,这时候我们就需要利用浏览器查看按钮对应的值为什么名字


更正了这个标签错误,实现成功登录:

# 导入selenium webdriver模块,用于控制浏览器
from selenium import webdriver
# 导入WebDriverWait和expected_conditions模块,用于显式等待
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# 导入By模块,用于定位元素
from selenium.webdriver.common.by import By
# 导入time模块,用于添加等待时间
import time
def test_login():
"""
自动化测试登录功能
测试步骤:
1. 输入用户名 13154645123
2. 输入密码 123456
3. 输入图片验证码 8888
4. 点击登录按钮
"""
# 1. 启动Edge浏览器
driver = webdriver.Edge()
try:
# 打开登录页面
driver.get("https://hmshop-test.itheima.net/Home/user/login.html")
# 等待页面加载完成
time.sleep(2)
# 1. 查找用户名输入框,输入用户名 13154645123
# 使用CSS选择器定位用户名输入框
username_input = driver.find_element(By.CSS_SELECTOR, "input[name='username']")
# 清空输入框内容
username_input.clear()
# 输入用户名
username_input.send_keys("13154645123")
# 2. 查找密码输入框,输入密码 123456
# 使用CSS选择器定位密码输入框
password_input = driver.find_element(By.CSS_SELECTOR, "input[name='password']")
# 清空输入框内容
password_input.clear()
# 输入密码
password_input.send_keys("123456")
# 3. 查找验证码输入框,输入图片验证码 8888
# 使用CSS选择器定位验证码输入框
verify_code_input = driver.find_element(By.CSS_SELECTOR, "input[name='verify_code']")
# 清空输入框内容
verify_code_input.clear()
# 输入验证码
verify_code_input.send_keys("8888")
# 4. 查找登录按钮,点击登录
# 使用CSS选择器定位登录按钮
login_button = driver.find_element(By.CSS_SELECTOR, "#loginform > div > div.login_bnt > a")
# 点击登录按钮
login_button.click()
# 等待页面跳转
time.sleep(3)
# 输出当前页面URL验证登录是否成功
print("登录后的页面URL:", driver.current_url)
except Exception as e:
print(f"登录过程中发生错误: {e}")
finally:
# 关闭浏览器
driver.quit()
# 执行测试函数
if __name__ == "__main__":
test_login()

判断自动化测试结果是否通过(断言)





# 导入selenium webdriver模块,用于控制浏览器
from selenium import webdriver
# 导入WebDriverWait和expected_conditions模块,用于显式等待
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# 导入By模块,用于定位元素
from selenium.webdriver.common.by import By
# 导入time模块,用于添加等待时间
import time
def test_login():
"""
自动化测试登录功能
测试步骤:
1. 输入用户名 13154645123
2. 输入密码 123456
3. 输入图片验证码 8888
4. 点击登录按钮
"""
# 1. 启动Edge浏览器
driver = webdriver.Edge()
try:
# 打开登录页面
driver.get("https://hmshop-test.itheima.net/Home/user/login.html")
# 等待页面加载完成
time.sleep(2)
# 1. 查找用户名输入框,输入用户名 13154645123
# 使用CSS选择器定位用户名输入框
username_input = driver.find_element(By.CSS_SELECTOR, "input[name='username']")
# 清空输入框内容
username_input.clear()
# 输入用户名
username_input.send_keys("13154645123")
# 2. 查找密码输入框,输入密码 123456
# 使用CSS选择器定位密码输入框
password_input = driver.find_element(By.CSS_SELECTOR, "input[name='password']")
# 清空输入框内容
password_input.clear()
# 输入密码
password_input.send_keys("123456")
# 3. 查找验证码输入框,输入图片验证码 8888
# 使用CSS选择器定位验证码输入框
verify_code_input = driver.find_element(By.CSS_SELECTOR, "input[name='verify_code']")
# 清空输入框内容
verify_code_input.clear()
# 输入验证码
verify_code_input.send_keys("8888")
# 4. 查找登录按钮,点击登录
# 使用CSS选择器定位登录按钮
login_button = driver.find_element(By.CSS_SELECTOR, "#loginform > div > div.login_bnt > a")
# 点击登录按钮
login_button.click()
# 等待页面跳转
time.sleep(3)
#暂停两秒,断言昵称为13154645123,断言内容要放到try中
time.sleep(2)
assert driver.find_element(By.CSS_SELECTOR, ".userinfo").text == "13154645123"
print("登录成功")
time.sleep(2)
# 输出当前页面URL验证登录是否成功
print("登录后的页面URL:", driver.current_url)
except Exception as e:
print(f"登录过程中发生错误: {e}")
finally:
# 关闭浏览器
driver.quit()
# 执行测试函数
if __name__ == "__main__":
test_login()

pytest框架




安装成功:


import pytest
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
class TestTpshopOrderQuery:
@pytest.fixture(scope="function")
def driver(self):
"""每个测试用例都使用独立的浏览器实例"""
driver = webdriver.Edge()
driver.maximize_window()
driver.implicitly_wait(10) # 添加隐式等待
yield driver
driver.quit()
def login_user(self, driver):
"""封装登录函数"""
driver.get("https://hmshop-test.itheima.net/Home/user/login.html")
# 使用显式等待确保页面元素加载完成
WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.CSS_SELECTOR, "input[name='username']"))
)
# 更灵活的元素查找方式
# 方式1:通过name属性
username = driver.find_element(By.NAME, "username")
# 方式2:通过CSS选择器
# username = driver.find_element(By.CSS_SELECTOR, "input[name='username']")
username.clear()
username.send_keys("13154645123")
password = driver.find_element(By.NAME, "password")
password.clear()
password.send_keys("123456")
# 验证码输入框
verify_code = driver.find_element(By.CSS_SELECTOR, "input[name='verify_code']")
verify_code.clear()
verify_code.send_keys("8888")
# 登录按钮
login_btn = driver.find_element(By.CSS_SELECTOR, ".login-bnt a, .login_bnt a, button[type='submit']")
login_btn.click()
# 等待登录成功
WebDriverWait(driver, 10).until(
EC.url_contains("Home/User/index.html")
)
return driver
def test_query_order(self, driver):
"""测试登录"""
self.login_user(driver)
# 验证登录成功
assert "Home/User/index.html" in driver.current_url
print("测试用例1:登录验证成功")
def test_actual_order_query(self, driver):
"""测试订单查询"""
# 先登录
self.login_user(driver)
print("测试用例2:开始测试订单查询")
# 查找订单菜单或链接
# 尝试多种可能的选择器
order_selectors = [
"a[href*='order']",
".my-order",
"a:contains('我的订单')",
"//a[contains(text(), '我的订单')]", # XPath
]
order_link = None
for selector in order_selectors:
try:
if selector.startswith("//"):
order_link = driver.find_element(By.XPATH, selector)
else:
order_link = driver.find_element(By.CSS_SELECTOR, selector)
break
except:
continue
if order_link:
order_link.click()
print("点击了我的订单")
else:
# 如果找不到,直接访问订单页面URL
driver.get("https://hmshop-test.itheima.net/Home/User/order_list.html")
print("直接访问订单页面")
time.sleep(2)
print(f"当前页面标题: {driver.title}")
print("测试用例2完成")
if __name__ == "__main__":
pytest.main(["-v", "-s", __file__]) # 添加-s参数以查看print输出
# 导入所需模块
import pytest
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
class TestTpshopLogin:
"""Tpshop登录测试类"""
@pytest.fixture(scope="function")
def driver(self):
"""
每个测试方法都重新创建和关闭浏览器
"""
driver = webdriver.Edge()
driver.maximize_window()
driver.implicitly_wait(10) # 添加隐式等待
yield driver
driver.quit()
def test_login_success(self, driver):
"""测试登录功能"""
# 1. 打开登录页面
driver.get("https://hmshop-test.itheima.net/Home/user/login.html")
time.sleep(2)
# 2. 输入用户名
username_input = driver.find_element(By.CSS_SELECTOR, "#username")
username_input.clear()
username_input.send_keys("13154645123")
# 3. 输入密码
password_input = driver.find_element(By.CSS_SELECTOR, "#password")
password_input.clear()
password_input.send_keys("123456")
# 4. 输入验证码
verify_code_input = driver.find_element(By.CSS_SELECTOR, "#verify_code")
verify_code_input.clear()
verify_code_input.send_keys("8888")
# 5. 点击登录按钮
login_button = driver.find_element(By.CSS_SELECTOR, "#loginform > div > div.login_bnt > a")
login_button.click()
# 6. 等待页面跳转,验证登录成功
# 方法1:检查URL
try:
WebDriverWait(driver, 10).until(
EC.url_contains("Home/User/index.html")
)
print("✅ 登录成功!跳转到用户中心页面")
print(f"当前URL: {driver.current_url}")
except:
print("⚠️ 可能登录失败,检查当前页面...")
print(f"当前URL: {driver.current_url}")
print(f"页面标题: {driver.title}")
# 如果URL不符合预期,检查页面标题或元素
if "我的账户" in driver.title:
print("✅ 通过页面标题验证登录成功")
elif "用户中心" in driver.title:
print("✅ 通过页面标题验证登录成功")
else:
# 检查页面是否有用户信息
try:
user_info = driver.find_element(By.CSS_SELECTOR, ".user-info, .user_name, .userinfo")
print(f"✅ 找到用户信息元素: {user_info.text}")
except:
print("❌ 未找到用户信息,登录可能失败")
# 截图保存以便查看
driver.save_screenshot("login_failure.png")
print("已保存截图: login_failure.png")
# 最终断言验证
assert "Home/User/index.html" in driver.current_url or "我的账户" in driver.title
print("✅ 测试通过:登录成功验证完成")
if __name__ == "__main__":
# 运行pytest测试
pytest.main(["-v", "-s", __file__])


AI自动化测试报告



这篇文章就先更新到这里,接下来的内容可查看我的下一篇博客,感谢观看,希望对你有帮助。
更多推荐



所有评论(0)