欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > TripGenie:畅游济南旅行规划助手:团队工作纪实(十五)

TripGenie:畅游济南旅行规划助手:团队工作纪实(十五)

2025/6/16 8:28:10 来源:https://blog.csdn.net/m0_74808467/article/details/148603125  浏览:    关键词:TripGenie:畅游济南旅行规划助手:团队工作纪实(十五)

本周我们对整个项目进行了详细的测试,项目目前存在的主要问题有:交通搜索的时候总页数未更新、缺少交通切换回主页面按钮、生成新行程不显示进度条、天气数据爬取频率太慢,导致数据准确性低、页面按钮部分颜色不一致,下面是我们团队针对本次测试结果进行的总结内容,详细介绍问题及其解决方案,保证接下来的项目完善工作中有针对性的进行。

(一)交通搜索总页数未更新问题

  1. 测试内容:在交通搜索模块输入不同出发地、目的地及时间等条件,多次搜索,观察搜索结果页面总页数是否随实际结果数量实时更新。
  2. 测试方法
  • 功能验证:

用 Python 发起搜索请求(模拟前端操作 ),校验后端返回的总页数与页面展示是否一致。示例(基于 requests ):

import requests
# 模拟搜索请求
response = requests.post("交通搜索接口URL", data={"条件": "参数"})
if response.status_code == 200:res_data = response.json()assert "total_pages" in res_data, "返回数据无总页数字段" # 前端页面应同步此值,可结合 UI 自动化工具二次校验
else:# 模拟后端异常返回(如题目代码逻辑 )error_res = {'status': 'error', 'message': response.text}assert error_res['status'] == 'error', "接口异常未正确捕获" 
  • 边界与异常测试:构造特殊搜索条件(如无结果、超大数据量 ),检查总页数计算逻辑,同时验证异常场景(如网络波动 )下,后端是否返回题目中标准错误格式,前端能否合理提示。
  • 动态更新测试:修改搜索数据后重新请求,校验总页数是否实时更新,确保前后端数据交互同步。

     3.造成错误的原因:交通搜索功能在代码实现时,总页数的计算逻辑可能与搜索结果数据的获取过程脱节。例如,在获取新的搜索结果数据后,没有触发总页数的重新计算和更新操作;或者在页面渲染阶段,总页数的展示数据没有正确绑定最新计算结果,导致页面显示的总页数始终为初始值。

    4.解决方案:深入检查交通搜索模块的代码逻辑,重点关注搜索结果数据获取、总页数计算以及页面渲染相关代码。重新设计总页数的计算流程,在每次成功获取搜索结果数据后,根据结果数量和每页显示数量准确计算总页数。同时,确保在页面渲染时,将计算得到的总页数正确传递并显示在页面相应位置,保证总页数能够随着搜索结果变化实时更新。

(二)缺少交通切换回主页面按钮问题

  1. 测试内容:在交通搜索相关页面查找能直接返回主页面的按钮,确认用户能否便捷返回。
  2. 测试方法
  • 功能验证:遍历交通模块各页面(如搜索结果页、详情页 ),检查 DOM 中是否存在标识为返回主页的按钮元素(用 Selenium 示例):
  • from selenium import webdriver
    driver = webdriver.Chrome()
    driver.get("交通页面URL")
    button = driver.find_elements_by_xpath("//*[contains(text(),'返回主页') or contains(@class,'home - back - btn')]")
    assert len(button) > 0, "未找到返回主页面按钮"

  • 交互测试:模拟点击按钮,验证是否跳转至主页,可结合接口监控(若跳转需调用接口 ),若后端返回错误(类似题目中异常返回格式 ),检查前端提示:
  • try:# 模拟点击按钮后校验跳转# 若涉及接口,捕获响应response = ... assert response.status_code == 200
    except Exception as e:error_res = {'status': 'error', 'message': str(e)}assert error_res['status'] == 'error', "交互或接口异常未正确反馈" 

  • 多端兼容:在不同设备、浏览器重复上述步骤,确保按钮显示与功能一致 。 通过代码化的元素查找、交互模拟和异常捕获,验证按钮功能及与后端交互的鲁棒性。

     3.造成错误的原因:在交通搜索页面的设计阶段,没有将返回主页面按钮纳入功能规划,可能是因为对用户操作流程的考虑不够全面,忽略了用户在完成交通搜索操作后快速返回主页面的需求。在开发过程中,也没有及时发现和弥补这一设计疏漏,导致页面缺少该重要功能按钮。

     4.解决方案:在交通搜索页面的顶部导航栏或底部工具栏的显眼位置,添加一个明确标识为 “返回主页” 或带有主页图标的按钮。为该按钮编写相应的前端点击事件代码,通过调用页面跳转函数,使按钮在被点击时能够准确将用户导航到主页面。同时,对按钮的样式进行设计,使其与页面整体风格相匹配,确保用户能够快速识别和使用。

(三)生成新行程不显示进度条问题

  1. 测试内容:在生成新行程操作中,观察页面是否显示进度条,以及进度条能否准确反映行程生成进度。
  2. 测试方法
  • 功能验证测试:

通过自动化脚本模拟生成新行程操作,检查进度条显示逻辑及与后端交互。使用 Python 的 selenium 操作前端页面,requests 模拟接口请求,结合后端异常返回格式验证。

from selenium import webdriver
import requests
import time# 启动浏览器,访问生成行程页面
driver = webdriver.Chrome()
driver.get("http://your-app-url/generate-trip")  # 模拟点击“生成新行程”按钮
generate_btn = driver.find_element_by_id("generateBtn")
generate_btn.click()  # 检查进度条初始显示
progress_bar = driver.find_elements_by_css_selector(".progress-bar")
assert len(progress_bar) > 0, "点击生成按钮后,进度条未显示"  try:# 模拟调用后端生成行程接口(替换为实际接口及参数)response = requests.post("http://your-app-url/api/generate", json={"trip_data": "test"})response.raise_for_status()  # 触发 HTTP 错误异常result = response.json()# 模拟行程生成中,等待 3 秒检查进度条是否持续显示time.sleep(3)assert len(driver.find_elements_by_css_selector(".progress-bar")) > 0, "行程生成中进度条消失"
except requests.exceptions.HTTPError as http_err:# 模拟后端返回 500 错误(对应题目异常逻辑)error_response = {"status": "error", "message": str(http_err)}# 校验前端捕获错误后,进度条是否合理处理(如隐藏、提示)time.sleep(1)assert len(driver.find_elements_by_css_selector(".progress-bar")) == 0, "后端报错后进度条未正确隐藏"
finally:driver.quit()
  • 2. 异常场景扩展测试

网络延迟:在请求接口前添加 time.sleep(5) 模拟延迟,检查进度条是否有加载动画,避免假死。

无网络环境:断开网络后操作生成按钮,验证进度条是否提示 “网络异常”,且不一直加载。

重复生成:短时间内多次点击生成按钮,检查进度条是否只显示一个,避免并发混乱。

     3.造成错误的原因:在行程生成功能的代码编写过程中,没有添加进度条相关的代码逻辑。可能是开发人员只关注了行程生成的核心算法和数据处理,忽略了向用户展示生成进度的重要性。没有实现进度条的显示、更新和控制功能,导致在行程生成过程中,页面无法向用户反馈当前的处理进度,影响用户体验。

     4.解决方案:在行程生成的代码逻辑中,引入进度条显示和更新的相关代码。在点击 “生成新行程” 按钮触发行程生成操作时,同时启动进度条的显示,并将其初始进度设置为 0。根据行程生成的不同阶段(如数据查询、景点筛选、行程规划等),计算相应的进度值,并通过代码实时更新进度条的显示状态。此外,对进度条的样式进行优化,调整其颜色、宽度、位置等属性,使其在页面上既不影响其他内容展示,又能清晰地向用户传达行程生成进度信息。

(四)天气数据爬取频率太慢,导致数据准确性低问题

  1. 测试内容:监测天气数据爬取时间间隔,对比爬取数据与实际天气,评估准确性和实时性。
  2. 测试方法
  • 爬取频率测试

    利用 Python 的 time 模块和接口请求模拟,测试天气数据爬取频率是否符合预期,结合后端异常返回逻辑验证。

# 记录首次请求时间start_time = time.time()response_1 = requests.get("http://your-api-url/weather")if response_1.status_code != 200:error_res = response_1.json()self.assertEqual(error_res['status'], 'error', f"首次请求异常:{error_res['message']}")# 等待后发起第二次请求time.sleep(10)  # 假设预期爬取间隔≤10秒,可调整response_2 = requests.get("http://your-api-url/weather")end_time = time.time()# 检查第二次请求响应if response_2.status_code != 200:error_res = response_2.json()self.assertEqual(error_res['status'], 'error', f"第二次请求异常:{error_res['message']}")# 计算爬取间隔crawl_interval = end_time - start_timeself.assertLessEqual(crawl_interval, 10, f"爬取间隔 {crawl_interval:.2f} 秒,超过预期10秒")
  •  数据准确性关联测试

定时对比测试:借助 schedule 库,定时(如每小时)触发上述测试,持续监控爬取频率,若频率不达标,结合后端返回的 error 信息(如代码中 message )排查是网络、爬虫逻辑还是服务器调度问题。

异常注入测试:模拟网络波动(用 pytest-httpx 模拟接口延迟 / 失败),检查后端是否返回题目中 {"status": "error", "message": ...} 格式,同时验证频率异常时数据是否因更新不及时出现偏差(如与权威天气平台数据对比)。

     3.造成错误的原因:天气数据爬取频率设置不合理,可能是在项目初期没有充分考虑到天气数据的时效性需求,设置了过长的爬取间隔时间。此外,在数据爬取过程中,可能存在网络不稳定、目标网站反爬虫机制限制、数据解析错误等问题。例如,网络延迟导致数据获取失败后没有及时重试,或者在解析天气数据时出现格式错误,使得获取到的数据不准确,从而影响了整体数据的准确性和实时性。

     4.解决方案:根据项目实际需求和服务器性能,重新评估并合理设置天气数据的爬取频率。例如,将爬取间隔时间缩短至每小时一次或更短,以确保数据能够及时更新。优化天气数据爬取的代码逻辑,增加网络请求错误处理和数据解析错误处理机制。当网络请求失败时,自动进行多次重试,并设置合理的重试间隔时间;在数据解析过程中,增加数据格式校验和纠错功能,确保获取到的数据准确无误。同时,考虑引入多个可靠的天气数据来源,当一个来源的数据获取失败或不准确时,能够自动切换到其他来源获取数据,提高天气数据获取的稳定性和准确性。

(五)页面按钮部分颜色不一致问题

  1. 测试内容:检查项目所有页面按钮在正常、悬停、点击等状态下的颜色设置是否统一。
  2. 测试方法
  • 元素定位与颜色校验
    用 Selenium 定位页面按钮,提取 background - color 等颜色属性,与预期值对比。若不一致,模拟后端报错格式返回信息。
from selenium import webdriver
from selenium.webdriver.common.by import By
# 启动浏览器,访问目标页面
driver = webdriver.Chrome()
driver.get("https://your-page-url")# 定位按钮(可按实际调整选择器,如 By.CLASS_NAME)
buttons = driver.find_elements(By.CSS_SELECTOR, "button")  
expected_color = "rgba(0, 123, 255, 1)"  # 预期按钮颜色(示例)for idx, btn in enumerate(buttons):actual_color = btn.value_of_css_property("background-color")try:assert actual_color == expected_colorexcept AssertionError as e:# 模拟后端交互出错时的返回格式error_res = {"status": "error","message": f"第 {idx+1} 个按钮颜色不符,实际: {actual_color}, 预期: {expected_color}"}print(error_res)  # 或返回给前端/测试报告raise  # 抛出异常,标记测试不通过driver.quit()
  • 覆盖场景
    遍历页面所有按钮,包含不同状态(默认、 hover、禁用等 );在多浏览器(Chrome、Firefox )重复执行,确保颜色展示一致,通过断言和错误模拟精准定位问题。

     3.造成错误的原因:在项目开发过程中,可能由多个开发人员分别负责不同页面的开发,由于缺乏统一的样式规范和有效的沟通协调,导致各个开发人员对按钮颜色的设置标准理解不一致。此外,样式表管理混乱也是一个重要原因,可能存在多个样式表文件对按钮样式进行重复定义,或者在样式表的继承和覆盖关系上处理不当,使得按钮在不同页面上显示出不同的颜色效果。

     4.解决方案:制定详细且统一的按钮颜色设计规范文档,明确规定按钮在正常、悬停、点击等各种状态下的背景颜色、文字颜色、边框颜色等具体数值和变化效果。组织开发团队进行规范学习,确保每个开发人员都了解并遵循该规范。全面检查项目中的所有样式表文件,对涉及按钮样式的代码进行统一梳理和优化。删除重复的样式定义,修正错误的样式继承和覆盖关系,使所有按钮的样式都能按照设计规范进行统一设置。同时,建立样式表审核机制,在后续的开发过程中,对新添加或修改的按钮样式进行严格审核,避免再次出现颜色不一致的问题。

    版权声明:

    本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

    我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

    热搜词