5月30日

 

 

 

 

 

软件测试

功能测试报告

 

 

 

 

 

2205-3

郑盾

目 录

 

一、前言(课设目的及内容)

1.1 测试目的

1.2 测试内容

二、测试计划及测试需求

2.1 测试原理分析

2.2 测试流程图 3

2.3 测试计划设计

2.4 测试需求分析

2.5 测试环境搭建 6

三、测试用例的设计 7

3.1 测试用例设计说明 7

3.2 测试用例列表 7

3.3 测试代码实现 7

四、测试过程 9

4.1测试脚本(手动) 9

4.2测试脚本(Selenium自动进行功能测试) 12

五、测试结果 13

六、课设小结及心得体会 14

七、参考文献 14

 


一、前言(课设目的及内容)

本次课程设计旨在通过实际项目开发,掌握 Web 应用自动化测试技术,特别是 Selenium 框架的使用。通过开发一个仓储管理系统的自动化测试套件,实现以下目标:

深入理解 Web 自动化测试的原理和方法

掌握 Selenium WebDriver 的使用技巧

学习测试用例的设计和实现

提高软件测试的效率和可靠性

1.1 测试目的

入理解 Web 自动化测试的原理和方法

掌握 Selenium WebDriver 的使用技巧

学习测试用例的设计和实现

提高软件测试的效率和可靠性

 

1.2 测试内容

本次测试主要针对仓储管理系统的以下功能模块:

1.用户认证模块:

用户登录功能

登录状态验证

登录失败处理

2.商品管理模块:

添加新商品

商品信息验证

商品列表显示

3.库存管理模块:

库存更新操作

库存变更验证

库存记录查看

4.系统功能验证:

页面导航

数据展示

错误处理

响应时间

二、测试计划及测试需求

2.1 测试原理分析

2.1.1 Selenium 工作原理

  1. WebDriver 架构
  • 客户端(测试脚本)通过 WebDriver 协议与浏览器驱动通信
  • 浏览器驱动控制实际浏览器执行操作
  • 采用 JSON Wire Protocol 进行通信

2        元素定位机制

  • 支持多种定位策略(XPathCSSIDName等)
  • 使用 WebDriverWait 实现显式等待
  • 通过 JavaScript 执行器处理特殊操作

3        测试执行流程

  • 初始化浏览器环境
  • 加载测试页面
  • 定位和操作页面元素
  • 验证操作结果
  • 生成测试报告

2.1.2 测试框架设计

  1. 测试用例组织
  • 采用类的方式组织测试用例
  • 使用 pytest 框架管理测试执行
  • 实现测试用例的模块化和可重用性

2        测试数据管理

  • 使用动态生成的数据(如时间戳)
  • 实现测试数据的独立性
  • 确保测试用例的可重复执行

3        异常处理机制

  • 实现重试机制
  • 详细的错误日志记录
  • 优雅的测试失败处理

2.2测试流程图 

根据测试原理的分析以及Selenium测试的基本步骤可以设计如图2-1的测试流程图。

 

              2-1 测试流程图

·2.3 测试计划设计

根据测试原理分析与测试思想设计,设计如图2-2所示的测试过程计划流程图。

 

2-2 测试计划流程图

2.4 测试需求分析

2.4.1 功能需求

用户登录测试:

验证正确的用户名和密码登录

验证登录失败的错误处理

验证登录后的页面跳转

商品管理测试:

验证添加商品表单的完整性

验证商品信息的正确保存

验证商品列表的显示

库存管理测试:

验证库存更新操作

验证库存变更记录

验证库存历史记录查看

 

2.4.2 非功能需求

性能需求:

页面加载时间控制

操作响应时间要求

测试执行效率优化

可靠性需求:

测试用例的稳定性

错误恢复能力

测试报告的可读性

兼容性需求:

浏览器兼容性(Chrome)

操作系统兼容性(Windows)

屏幕分辨率适配

 

2.4.3 测试环境需求

硬件环境:

处理器:支持多线程

内存:至少 4GB

存储:足够的磁盘空间

软件环境:

Python 3.10.11

Chrome 浏览器 122.0.6261.131

Selenium WebDriver

pytest 测试框架

网络环境:

稳定的网络连接

本地服务器环境

适当的网络延迟容忍度

2.5 测试环境搭建

Python 3.10.11

Windows 10 (10.0.22631-SP0)

Chrome 浏览器 (122.0.6261.131)

pytest 7.4.3

Selenium WebDriver
三、测试用例的设计

3.1. 测试用例设计说明

登录测试是系统测试的基础,确保用户能够正确访问系统功能。测试用例设计采用等价类划分和边界值分析方法。

3.2 测试用例列表

| 测试用例ID | 测试项 | 测试输入 | 预期结果 | 测试步骤 ||------------|--------|----------|-----------|-----------|| TC001 | 正常登录 | 用户名:testuser<br>密码:testpass123 | 1. 登录成功<br>2. 跳转到首页<br>3. 显示欢迎信息 | 1. 访问登录页面<br>2. 输入用户名<br>3. 输入密码<br>4. 点击登录按钮<br>5. 验证页面跳转 || TC002 | 错误用户名 | 用户名:wronguser<br>密码:testpass123 | 1. 登录失败<br>2. 显示错误提示<br>3. 停留在登录页面 | 1. 访问登录页面<br>2. 输入错误用户名<br>3. 输入正确密码<br>4. 点击登录按钮<br>5. 验证错误提示 || TC003 | 错误密码 | 用户名:testuser<br>密码:wrongpass | 1. 登录失败<br>2. 显示错误提示<br>3. 停留在登录页面 | 1. 访问登录页面<br>2. 输入正确用户名<br>3. 输入错误密码<br>4. 点击登录按钮<br>5. 验证错误提示 || TC004 | 空用户名 | 用户名:空<br>密码:testpass123 | 1. 登录失败<br>2. 显示错误提示<br>3. 停留在登录页面 | 1. 访问登录页面<br>2. 不输入用户名<br>3. 输入正确密码<br>4. 点击登录按钮<br>5. 验证错误提示 || TC005 | 空密码 | 用户名:testuser<br>密码:空 | 1. 登录失败<br>2. 显示错误提示<br>3. 停留在登录页面 | 1. 访问登录页面<br>2. 输入正确用户名<br>3. 不输入密码<br>4. 点击登录按钮<br>5. 验证错误提示 |

 

3.3 测试代码实现

def _login(self, driver, retry_count=0):
    """登录测试实现"""
    print(f"\n=== 开始登录过程 (尝试 {retry_count + 1}/{self.MAX_RETRIES}) ===")
    try:
        # 访问登录页面
        driver.get("http://localhost:5000/login")
        
        # 填写登录表单
        username_input = self._wait_for_element(driver, By.NAME, "username")
        username_input.clear()
        username_input.send_keys(self.TEST_USERNAME)
        
        password_input = self._wait_for_element(driver, By.NAME, "password")
        password_input.clear()
        password_input.send_keys(self.TEST_PASSWORD)
        
        # 点击登录按钮
        submit_button = self._wait_for_element(driver, By.XPATH, "//button[@type='submit']")
        submit_button.click()
        
        # 验证登录结果
        current_url = driver.current_url.lower()
        if "login" in current_url:
            # 检查错误消息
            error_messages = driver.find_elements(By.CLASS_NAME, "alert-danger")
            if error_messages:
                raise Exception("登录失败:" + error_messages[0].text)
            raise Exception("登录失败:无法确定原因")
            
        # 验证登录成功标志
        success_indicators = ["仓储管理系统", "欢迎", "商品列表", "库存管理"]
        page_source = driver.page_source.lower()
        found_indicators = [ind for ind in success_indicators if ind.lower() in page_source]
        if not found_indicators:
            raise Exception("登录后未能确认登录状态")
            
        return True
        
    except Exception as e:
        if retry_count < self.MAX_RETRIES - 1:
            time.sleep(self.RETRY_DELAY)
            return self._login(driver, retry_count + 1)
        raise

 

 

四、测试过程

4.1测试脚本(手动):

 

仓库管理系统登录页面:

 

 

 

 

商品列表页面:

 

 

 

 

添加商品页面:

 

 

 

 

库存记录页面:

 

 

 

 

测试页面(此为手动):

 

 

 

 

4.2测试脚本(Selenium自动进行功能测试):

 

终端运行:py -3.10 test_selenium.py

 

 

 

 

运行视频流程见本文件夹附带视频

 

 

 

 

 

 

、测试结果

运行结果(报告):

 

 


六、课设小结及心得体会

在本次软件测试综合课程设计中,我深入学习了 Web 自动化测试技术,特别是 Selenium 框架的应用。通过开发仓储管理系统的自动化测试套件,我不仅掌握了 Python 编程和 Selenium WebDriver 的使用技巧,更重要的是培养了系统化的测试思维。在测试环境搭建过程中,我成功配置了 Python 3.10.11Selenium WebDriverChrome 浏览器和 pytest 测试框架,为后续的测试开发打下了坚实基础。

在测试用例开发阶段,我实现了用户登录、商品管理、库存管理等核心功能的自动化测试,虽然遇到了元素定位、页面交互等挑战,但通过实现显式等待、重试机制等解决方案,最终完成了测试套件的开发。测试执行结果显示,在 52 秒内完成了 3 个测试用例的执行,通过率达到 66.7%,主要问题出现在更新库存按钮的点击操作上,这让我深刻认识到 Web 自动化测试中元素交互的复杂性。

通过这次课程设计,我不仅提升了自动化测试技能,还学会了如何设计测试用例、分析测试结果、生成测试报告。在解决各种技术难题的过程中,我的问题分析和解决能力得到了显著提高。特别是在处理元素定位和页面同步问题时,我学会了使用 JavaScript 执行器、优化等待时间等方法,这些经验对今后的测试工作都很有帮助。同时,我也认识到测试代码的可维护性和可读性的重要性,通过模块化设计和完善的错误处理机制,使测试代码更加健壮和易于维护。

这次课程设计让我深刻体会到软件测试不仅是一项技术工作,更是一种质量保证的思维方式。在测试过程中,需要不断思考各种可能的场景和异常情况,这培养了我的系统思维和细节关注能力。虽然测试执行时间较长、浏览器兼容性等问题还有待改进,但这些问题也为我指明了今后的学习方向。我相信,通过持续学习和实践,我能够将这次课程设计中学到的知识和经验应用到实际工作中,为软件质量保证做出更大的贡献。

七、参考文献

[1] Selenium自动化测试工具的介绍与使用Selenium自动化测试工具的介绍与使用-CSDN博客 

[2] Selenium 实战项目 Selenium 实战项目 | 菜鸟教程

 

posted @ 2025-06-09 14:52  KuanDong24  阅读(6)  评论(0)    收藏  举报