111

一、实验概述

1.1 实验目的

验证电商网站核心功能(登录、商品搜索)的正确性

提高回归测试效率,减少重复手动测试成本

发现前端交互及数据验证中的潜在缺陷

实践 Selenium 元素定位与自动化测试框架集成

1.2 实验环境
类别 配置
操作系统 Windows 11
浏览器 Chrome 118.0.5993.117
测试工具 Selenium 4.16.0 + pytest 7.4.0
编程语言 Python 3.10.12
被测应用 电商网站 Demo (v2.3.1),部署于测试服务器 http://test-eshop.com
二、测试范围

登录模块:用户名/密码验证、错误提示、登录跳转

商品搜索模块:关键词搜索、空搜索处理、搜索结果过滤

三、测试用例设计

3.1 测试用例设计原则

独立性:用例可单独执行,无数据耦合

可重复性:多次执行结果一致

覆盖边界:包含有效/无效输入组合

原子性:单个用例验证单一功能点

3.2 测试用例详情
用例编号 用例名称 测试模块 前置条件 测试步骤 预期结果 实际结果 是否通过
TC001 用户登录成功 登录模块 1. 访问首页
2. 账号状态正常 1. 输入有效用户名
2. 输入正确密码
3. 点击登录按钮 跳转至用户中心页,显示欢迎语
TC002 用户名错误登录失败 登录模块 1. 访问登录页 1. 输入无效用户名
2. 输入任意密码
3. 点击登录按钮 显示错误提示:"账号不存在"
TC003 密码错误登录失败 登录模块 1. 访问登录页 1. 输入有效用户名
2. 输入错误密码
3. 点击登录按钮 显示错误提示:"密码错误"
TC004 商品关键词搜索成功 搜索模块 1. 用户已登录 1. 在搜索框输入"手机"
2. 点击搜索按钮 展示包含"手机"的商品列表
TC005 空关键词搜索处理 搜索模块 1. 用户已登录 1. 清空搜索框
2. 点击搜索按钮 显示提示:"请输入搜索关键词"
四、测试实现

关键代码片段
python

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

初始化浏览器

driver = webdriver.Chrome()
driver.maximize_window()

登录功能实现

def test_valid_login():
driver.get("http://test-eshop.com/login")
# 定位元素并操作
username = driver.find_element(By.ID, "username")
username.send_keys("valid_user@test.com")
password = driver.find_element(By.NAME, "password")
password.send_keys("Passw0rd!")
driver.find_element(By.XPATH, "//button[text()='登录']").click()

# 显式等待验证结果  
welcome_text = WebDriverWait(driver, 10).until(  
    EC.visibility_of_element_located((By.CSS_SELECTOR, ".welcome-msg"))  
)  
assert "欢迎回来" in welcome_text.text  # 断言验证  

商品搜索功能实现

def test_product_search():
search_input = driver.find_element(By.CLASS_NAME, "search-bar")
search_input.send_keys("手机")
driver.find_element(By.ID, "btn-search").click()

# 验证搜索结果  
product_list = WebDriverWait(driver, 5).until(  
    EC.presence_of_all_elements_located((By.CLASS_NAME, "product-item"))  
assert len(product_list) > 0  # 断言至少有一个结果  

关闭浏览器

driver.quit()

代码说明:

使用 WebDriverWait 解决页面加载延迟问题

混合定位策略(ID/NAME/XPath/CSS)增强鲁棒性

EC.visibility_of_element_located 确保元素可交互

assert 直接集成测试断言

五、测试执行情况

5.1 执行结果统计
测试用例总数 通过用例数 失败用例数 通过率
5 4 1 80%

5.2 失败用例分析

失败用例:TC002(用户名错误登录失败)

失败现象:未显示预期错误提示,页面无响应

根本原因:

    前端未对无效账号做异步验证处理

    错误提示元素定位失败(开发修改ID未同步测试脚本)

解决方案:

    提交缺陷报告至开发团队

    更新元素定位方式为 By.XPATH("//div[contains(@class,'error-toast')]")

六、测试结论

6.1 测试总结

完成登录、搜索核心功能覆盖,用例执行率100%

发现2个主要缺陷:

    无效账号登录无反馈(高优先级)

    空搜索未触发输入校验(中优先级)

自动化脚本节约70%回归测试时间

6.2 测试评价
评价维度 结果 改进建议
功能完整性 核心流程完备 增加支付模块自动化覆盖
前端健壮性 部分异常处理缺失 补充输入边界值验证
技术适配性 元素定位稳定性需提升 统一使用 data-testid 属性
执行效率 脚本平均执行时间<3秒/用例 引入并行测试加速执行

posted @ 2025-06-05 17:15  五号废电池  阅读(28)  评论(0)    收藏  举报