尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

软件测试全流程实战:从需求分析到自动化与性能测试

软件测试全流程实战:从需求分析到自动化与性能测试 1. 项目概述一次完整的电商系统测试实战最近在带学生做软件测试的课程设计正好拿TPshop这个开源的B2C电商系统作为实战项目。这个项目标题“农业工程学院-测试需求分析与测试计划自动化性能测试用例报告软件缺陷测试计划单元测试系统测试”看起来像是一份作业清单但它恰恰反映了一个真实软件测试项目从启动到交付的核心流程。对于刚入行的测试工程师或者在校学生来说能把这一整套流程在一个具体的项目上跑通意义重大。这不仅仅是完成作业更是构建一个完整的、可复用的测试知识体系和实战经验。TPshop作为一个功能相对完整的商城系统涵盖了用户管理、商品展示、购物车、订单、支付模拟、后台管理等核心电商模块是进行全流程测试演练的绝佳对象。接下来我就结合这个项目拆解如何系统性地完成一次从需求分析到测试报告的完整测试工程。2. 测试需求分析与测试计划制定测试的起点不是写用例而是理解“测什么”和“怎么测”。对于TPshop商城项目测试需求分析就是要把这个系统的功能、性能、安全等各方面的要求转化为可验证、可执行的测试项。2.1 核心需求拆解与范围界定首先我们需要明确测试范围。TPshop作为一个商城系统其核心业务流是用户注册登录 - 浏览/搜索商品 - 加入购物车 - 下单 - 支付 - 后台订单处理。围绕这个主流程我们可以拆解出以下几大测试需求域功能测试需求这是重中之重。需要确保每个功能点都按照需求正常工作。例如用户模块注册、登录含忘记密码、个人信息管理。商品模块商品列表展示、搜索、筛选、详情页、分类浏览。交易模块购物车增删改查、订单创建、订单状态流转待付款、待发货、待收货、已完成、模拟支付接口调用。后台管理模块商品上架/下架、订单管理、用户管理、数据统计这部分通常有独立的后台系统需要单独测试。性能测试需求电商系统尤其要关注并发能力。我们需要评估基准性能单用户操作时关键页面如首页、商品列表页的响应时间应在2秒以内。负载能力模拟多用户如100人同时浏览商品、添加购物车系统能否稳定运行错误率是否在可接受范围如0.1%。压力与稳定性在持续高负载如30分钟下系统资源CPU、内存使用是否平稳有无内存泄漏。兼容性测试需求确保系统在不同环境下可用。浏览器兼容至少覆盖Chrome、Firefox、Edge的最新两个版本。移动端适配检查在手机浏览器上的显示和操作是否正常。安全测试需求基础层面对于课程项目可以关注一些基础安全问题。SQL注入在登录、搜索等输入框尝试注入语句。XSS跨站脚本检查商品评论、用户昵称等位置是否对输入进行了过滤。敏感信息泄露确认前端代码、错误信息中不包含数据库密码、服务器路径等。用户体验UI/UX测试需求检查界面布局是否合理操作流程是否顺畅提示信息是否友好。注意需求分析阶段一定要和项目负责人或你的“客户”比如老师确认优先级。通常核心业务流程下单支付的优先级最高其次是管理功能最后是边缘场景和性能压测。2.2 测试计划文档编写要点测试计划是整个测试活动的蓝图。一份合格的测试计划Test Plan应该包含以下核心部分我们可以用Markdown或Word来组织引言说明项目背景TPshop商城、测试目标、参考资料如需求文档、API接口文档。测试范围明确列出要测什么和不测什么。例如本次测试包含Web前端和后台管理端但不包含第三方支付的真实回调用模拟接口代替。测试策略功能测试采用黑盒测试为主结合等价类划分、边界值分析等设计用例。自动化测试针对核心业务流程如登录、下单和回归测试重点使用SeleniumWeb UI和RequestsAPI进行自动化。性能测试使用JMeter工具设计模拟用户购物的场景进行负载测试。缺陷管理使用禅道、Jira或Excel表格记录和跟踪Bug。资源与进度人力资源测试人员分工谁负责功能谁负责自动化脚本。测试环境服务器的配置CPU、内存、数据库版本、网络环境。务必与生产环境隔离时间安排给出测试各阶段如用例设计、执行、性能测试、回归测试的起止时间。交付物明确测试结束后需要提交什么如测试用例集、自动化测试脚本、性能测试报告、缺陷报告、最终测试总结报告。实操心得测试计划不是写完就束之高阁的。在实际执行中遇到需求变更或发现原计划不可行时要及时更新计划。把它当作一个“活的”指导文档。3. 测试用例设计与编写实战测试用例是测试工程师的“武器”。设计得好能高效发现缺陷设计得不好事倍功半。针对TPshop我们以“用户登录”这个最常用的功能为例拆解如何设计测试用例。3.1 测试用例设计方法应用不要一上来就凭感觉写“输入账号密码点击登录”。我们需要系统性地思考。这里结合“等价类划分”和“边界值分析”有效等价类正确的账号和密码。无效等价类账号错误密码正确。账号正确密码错误。账号为空。密码为空。账号密码都为空。账号包含特殊字符如admin‘ or ‘1’‘1用于安全测试。密码长度超过限制边界值假设密码最长32位那么测试33位。基于以上分析我们可以设计出如下表格中的测试用例用例ID测试模块测试标题前置条件测试步骤预期结果优先级TC-LOGIN-001用户登录使用正确的账号密码登录1. 用户已注册2. 处于登录页面1. 输入已注册的账号2. 输入对应的正确密码3. 点击“登录”按钮1. 登录成功2. 页面跳转至首页或个人中心3. 页面显示用户昵称P0最高TC-LOGIN-002用户登录使用错误密码登录1. 用户已注册2. 处于登录页面1. 输入已注册的账号2. 输入错误的密码3. 点击“登录”按钮1. 登录失败2. 页面提示“账号或密码错误”3. 停留在登录页P1TC-LOGIN-003用户登录账号为空登录1. 处于登录页面1. 账号框留空2. 输入任意密码3. 点击“登录”按钮1. 登录失败2. 页面在账号框附近提示“账号不能为空”P1TC-LOGIN-004用户登录密码长度超长33位1. 处于登录页面1. 输入任意账号2. 输入一个33位长度的密码3. 点击“登录”按钮1. 前端应进行校验提示“密码长度超限”或无法输入更多字符2. 或提交后后端返回明确错误P2TC-LOGIN-005用户登录SQL注入尝试登录1. 处于登录页面1. 在账号框输入admin‘ or ’1’’12. 输入任意密码3. 点击“登录”按钮1. 登录失败2.不应出现数据库报错信息如SQL语法错误3. 应提示“账号或密码错误”或进行安全拦截P1安全相关3.2 测试用例管理与执行设计好用例后我们需要一个地方来管理它们。对于学生项目或个人学习用Excel或Google Sheets完全可以。但如果想更专业可以搭建一个简单的禅道开源或使用在线的TestLink。执行阶段按照用例ID顺序执行并记录实际结果。如果实际结果与预期不符就提单报告缺陷。记录要清晰比如“在Chrome 102版本下执行TC-LOGIN-003实际结果为页面无提示直接刷新预期应为提示‘账号不能为空’”。踩坑提醒很多新手只关注“正确路径”的测试Happy Path。实际上无效和异常输入的测试往往能发现更多、更隐蔽的Bug尤其是安全漏洞和用户体验问题。在设计用例时要强迫自己多思考“如果用户不按常理出牌系统会怎样”4. 自动化测试框架搭建与脚本编写手工执行回归测试既枯燥又容易出错。自动化测试就是为了解决这个问题把重复的劳动交给机器。对于TPshop这样的Web项目UI自动化和API自动化是重点。4.1 自动化测试框架选型与搭建市面上工具很多我的选择是UI自动化Selenium Python Pytest。这是目前最主流、资料最多的组合。Selenium驱动浏览器Python写脚本Pytest作为测试框架来组织用例和生成报告。API自动化Requests Pytest。对于后端接口的测试直接用Requests库发送HTTP请求比通过UI操作更快、更稳定。环境搭建步骤以Windows/Python为例安装Python建议3.8以上版本。使用pip安装依赖库pip install selenium pytest requests pytest-html下载对应浏览器版本的WebDriver如ChromeDriver放到Python安装目录或系统PATH下。一个最简单的项目目录结构可以这样组织tpshop_test_auto/ ├── conftest.py # Pytest配置文件可以在这里定义全局的fixture如初始化浏览器 ├── requirements.txt # 项目依赖包列表 ├── test_cases/ # 测试用例目录 │ ├── __init__.py │ ├── test_login.py # 登录测试用例 │ └── test_order.py # 下单测试用例 ├── page_objects/ # 页面对象模型Page Object目录推荐使用 │ ├── __init__.py │ ├── login_page.py # 登录页面元素和操作封装 │ └── main_page.py # 主页元素和操作封装 ├── utils/ # 工具类目录 │ ├── __init__.py │ └── logger.py # 日志记录工具 └── reports/ # 测试报告输出目录由pytest-html生成4.2 编写第一个自动化测试脚本用户登录我们不写“流水账”式的脚本而是采用Page Object Model (POM)设计模式。这能让你的代码更清晰、更易维护。首先在page_objects/login_page.py中封装登录页# page_objects/login_page.py from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC class LoginPage: def __init__(self, driver): self.driver driver self.wait WebDriverWait(driver, 10) # 显式等待10秒 # 定位器 (Locators) USERNAME_INPUT (By.ID, username) # 根据TPshop实际HTML元素ID修改 PASSWORD_INPUT (By.ID, password) LOGIN_BUTTON (By.ID, submit) ERROR_MSG_SPAN (By.CLASS_NAME, error-message) # 页面操作方法 def enter_username(self, username): element self.wait.until(EC.presence_of_element_located(self.USERNAME_INPUT)) element.clear() element.send_keys(username) def enter_password(self, password): element self.wait.until(EC.presence_of_element_located(self.PASSWORD_INPUT)) element.clear() element.send_keys(password) def click_login(self): element self.wait.until(EC.element_to_be_clickable(self.LOGIN_BUTTON)) element.click() def get_error_message(self): try: element self.wait.until(EC.presence_of_element_located(self.ERROR_MSG_SPAN)) return element.text except: return None # 如果没有错误信息元素返回None然后在test_cases/test_login.py中编写测试用例# test_cases/test_login.py import pytest from selenium import webdriver from page_objects.login_page import LoginPage class TestLogin: pytest.fixture(scopeclass) def driver(self): # 初始化浏览器使用Chrome driver webdriver.Chrome() driver.maximize_window() driver.get(http://你的tpshop测试环境地址/user/login) # 替换为你的测试地址 yield driver # 测试类结束后关闭浏览器 driver.quit() pytest.fixture def login_page(self, driver): # 每个测试方法都会获得一个干净的登录页面对象 return LoginPage(driver) def test_login_success(self, login_page): 测试用例ID: TC-LOGIN-001 的正确路径 login_page.enter_username(valid_userexample.com) login_page.enter_password(correct_password) login_page.click_login() # 断言登录成功后页面标题或URL应发生变化或者出现用户信息 # 这里需要根据TPshop实际成功后的页面特征来写断言 # 例如assert 我的账户 in self.driver.title # 我们先假设跳转到首页首页会有“退出”链接其ID为‘logout’ from selenium.webdriver.common.by import By WebDriverWait(self.driver, 10).until( EC.presence_of_element_located((By.LINK_TEXT, 退出)) ) assert True # 如果上面等待成功没报错就认为登录成功 def test_login_with_wrong_password(self, login_page): 测试用例ID: TC-LOGIN-002 的错误密码 login_page.enter_username(valid_userexample.com) login_page.enter_password(wrong_password) login_page.click_login() error_msg login_page.get_error_message() # 断言应该出现错误提示 assert error_msg is not None assert 账号或密码错误 in error_msg # 根据实际提示信息调整运行测试在项目根目录下执行命令pytest test_cases/test_login.py -v --htmlreports/report.html 即可运行测试并生成一个漂亮的HTML报告。核心技巧自动化测试脚本的稳定性是关键。大量使用WebDriverWait进行显式等待而不是time.sleep()硬等待能极大提高脚本的稳定性和运行速度。定位元素时优先使用ID、name等稳定属性其次是CSS SelectorXPath容易因页面结构变化而失效。5. 性能测试实施与结果分析性能测试的目标是评估系统在高负载下的表现。对于TPshop我们最关心的是用户并发浏览商品和下单的场景。这里我们使用Apache JMeter这个开源工具因为它功能强大且免费。5.1 使用JMeter设计并执行负载测试创建测试计划Test Plan打开JMeter新建一个测试计划命名为“TPshop负载测试”。添加线程组Thread Group线程组模拟并发用户。线程数Number of Threads模拟的用户数比如100。Ramp-Up Period秒在多少秒内启动所有线程。设置为10表示在10秒内逐步启动100个用户模拟真实用户逐渐进入的场景。循环次数Loop Count每个用户执行测试计划的次数。可以勾选“永远”然后通过调度器控制时长。添加HTTP请求采样器Sampler首先添加一个HTTP请求默认值配置元件设置服务器名称如test.tpshop.com和端口这样后续请求就不用重复填写。模拟用户操作请求1访问首页GET /。请求2搜索商品GET /search?keyword手机。这里可以参数化关键词让搜索内容更多样。请求3查看商品详情GET /goods/123。商品ID也可以参数化。请求4添加购物车POST /cart/add。需要处理Session/Cookie并且POST数据需要包含商品ID和数量。这里需要先录制或查看实际请求参数。请求5提交订单POST /order/create。这通常需要用户已登录所以更复杂可能需要先处理登录逻辑。添加监听器Listener用于查看结果。查看结果树View Results Tree用于调试看每个请求的响应详情。聚合报告Aggregate Report最重要的监听器之一会给出所有请求的平均响应时间、吞吐量TPS、错误率等关键指标。图形结果Graph Results直观地看到响应时间随时间的变化趋势。用表格查看结果View Results in Table以表格形式查看每个样本的结果。一个简化的、可先执行的性能测试场景是“并发浏览首页和商品页”。这个场景不涉及登录和写操作下单对系统破坏性小适合初步摸底。5.2 性能测试结果解读与瓶颈定位执行完测试后重点看聚合报告指标含义健康参考值示例你的TPshop结果分析样本数Samples总共发出的请求数。-检查是否与预期一致。平均响应时间Average所有请求的平均耗时。关键页面如首页 2秒如果超过说明系统处理较慢。中位数Median50%的请求在这个时间内完成。-比平均值更能反映“大多数用户”的体验。90%百分位90% Line90%的请求在这个时间内完成。 平均时间的2-3倍如果这个值远高于平均值说明有少量请求非常慢需要排查。最小/最大响应时间--最大值异常高可能意味着某些请求卡死了。错误率Error %失败请求的百分比。 0.1%这是硬性指标如果错误率高系统不可用。吞吐量Throughput每秒处理的请求数Requests/sec。越高越好反映系统的处理能力。如何定位瓶颈看错误首先解决错误率。查看“查看结果树”里失败的请求看是超时、返回5xx错误还是4xx错误。可能是服务器配置问题、代码Bug或测试脚本问题如参数不对。看慢请求找到平均响应时间或90%百分位最高的那个请求比如“提交订单”。这个接口就是瓶颈。结合服务器监控在压测时同时监控服务器的CPU使用率、内存使用率、磁盘I/O、网络带宽以及数据库的活跃连接数和慢查询日志。如果CPU持续100%说明计算资源是瓶颈如果内存不断增长可能有内存泄漏如果磁盘I/O很高可能是数据库或日志写入问题如果数据库慢查询多就需要优化SQL。给新手的建议性能测试要循序渐进。先从1个用户单用户开始确保脚本能跑通。然后逐步增加并发用户数10 50 100...观察各项指标的变化趋势。当错误率飙升或响应时间急剧增加时就找到了系统的大致承载极限。记录下这个拐点对应的并发用户数和系统资源状态这就是一份有价值的性能摸底报告。6. 缺陷报告与管理流程发现Bug不是终点清晰地报告并跟踪它被修复才是。一份好的缺陷报告能让开发人员快速定位问题。6.1 如何编写一份有效的缺陷报告缺陷报告的核心要素可以概括为“5C”原则Clear清晰、Concise简洁、Complete完整、Consistent一致、Correct准确。通常需要包含以下信息标题Summary一句话概括问题。例如“【商品详情页】在Chrome浏览器下商品图片轮播组件在快速点击时会导致页面卡死”。环境Environment发现Bug的具体环境。例如操作系统: Windows 11 浏览器: Chrome 102.0.5005.63 测试环境URL: http://test.tpshop.com。复现步骤Steps to Reproduce这是最关键的部分要像食谱一样一步步写清楚。打开商品详情页例如商品ID为 123。找到图片轮播区域。在1秒内连续点击“下一张”按钮超过5次。观察页面反应。预期结果Expected Result根据需求或常识应该发生什么。例如“图片应平滑切换到下一张页面保持响应不卡顿。”实际结果Actual Result实际发生了什么。例如“页面停止响应约3秒浏览器提示‘页面无响应’随后可能恢复或崩溃。”附件Attachments一图胜千言。务必截图或录制屏幕录像GIF。如果是接口错误附上请求和响应的完整信息可以用Fiddler/Charles抓包。严重程度Severity和优先级Priority严重程度对系统的影响致命S1系统崩溃/数据丢失、严重S2主要功能失效、一般S3次要功能问题、轻微S4UI错位/提示语不当。优先级修复的紧急程度高P1立即修复、中P2本版本修复、低P3后续版本修复。例如上述轮播卡死问题如果导致用户无法进行后续操作可定为严重S2/高优先级P1。6.2 缺陷生命周期与管理工具缺陷从被发现到关闭会经历一个生命周期。使用工具如禅道、Jira可以很好地跟踪这个流程。基本生命周期新建New- 指派Assigned- 打开Open开发开始处理- 已修复Fixed- 待验证Pending Verification- 已验证Verified- 已关闭Closed。如果验证不通过则重新“打开”。使用禅道开源管理TPshop缺陷在禅道中为TPshop项目创建一个产品和一个项目。测试人员发现Bug后在“测试”-“Bug”模块点击“提Bug”。按照上述“5C”原则填写Bug表单并指派给对应的开发人员。开发人员修复后将Bug状态改为“已解决”并指派回给测试人员。测试人员在对应版本中验证Bug。如果通过关闭如果不通过重新激活。实操心得沟通大于工具提了Bug后最好当面或通过即时通讯工具跟开发简单说一下特别是严重Bug。避免Bug在系统里“沉睡”。一个Bug只报告一个问题不要在一个Bug里写“登录有问题而且首页图片也不显示”。这会给开发和修复后的验证带来混乱。尊重事实对事不对人Bug报告是描述软件的问题不是指责开发人员。使用中性、客观的语言。7. 单元测试与系统测试的衔接在完整的测试体系中单元测试和系统测试处于不同层次它们相辅相成。7.1 单元测试构筑信心的基石单元测试由开发人员编写针对代码中最小的可测试单元通常是函数或方法进行测试。对于TPshop的后端假设是PHP可以使用PHPUnit对于前端JavaScript可以使用Jest或Mocha。单元测试的核心价值快速反馈开发过程中随时运行确保新代码不会破坏现有功能。便于调试当测试失败时能非常精准地定位到是哪个函数、哪行代码出了问题。代码设计驱动力为了便于单元测试会促使开发者写出高内聚、低耦合的代码这是良好设计的副产品。一个简单的PHPUnit示例假设TPshop有一个计算折扣的函数// 文件src/Calculator.php class Calculator { public static function calculateDiscount($price, $discountRate) { if ($price 0 || $discountRate 0 || $discountRate 1) { throw new InvalidArgumentException(价格或折扣率无效); } return $price * (1 - $discountRate); } } // 测试文件tests/CalculatorTest.php use PHPUnit\Framework\TestCase; class CalculatorTest extends TestCase { public function testCalculateDiscountWithValidInput() { $this-assertEquals(90, Calculator::calculateDiscount(100, 0.1)); // 100块打9折 $this-assertEquals(100, Calculator::calculateDiscount(100, 0)); // 不打折 $this-assertEquals(0, Calculator::calculateDiscount(100, 1)); // 免费 } public function testCalculateDiscountThrowsExceptionForNegativePrice() { $this-expectException(InvalidArgumentException::class); Calculator::calculateDiscount(-10, 0.1); } public function testCalculateDiscountThrowsExceptionForInvalidRate() { $this-expectException(InvalidArgumentException::class); Calculator::calculateDiscount(100, 1.5); // 折扣率大于1 } }运行phpunit tests/CalculatorTest.php即可执行这些测试。如果所有测试通过我们对这个计算折扣的函数就有了信心。7.2 系统测试从用户视角验证整体系统测试则是把整个TPshop应用作为一个完整的系统从最终用户的角度进行测试。我们前面做的功能测试、性能测试、兼容性测试都属于系统测试的范畴。单元测试与系统测试的关系金字塔模型单元测试是塔基数量最多运行最快往上依次是集成测试、系统测试包括UI自动化数量较少运行较慢塔尖是手工探索性测试。分工与协作单元测试保证了“零件”的质量系统测试保证了“整车”的装配和运行质量。单元测试覆盖不到的集成问题、业务流程问题需要由系统测试来发现。反馈速度单元测试失败开发可以立刻修复系统测试尤其是UI自动化失败可能需要测试和开发共同排查是前端问题、后端问题还是环境问题耗时更长。在TPshop项目中的实践建议推动单元测试作为测试人员可以向开发团队倡导单元测试的重要性甚至可以参与评审单元测试用例的完整性例如是否覆盖了所有边界条件。明确测试重点系统测试应聚焦于跨模块的业务流程和用户体验。例如“用户从登录到成功下单”这个完整流程就是系统测试的重点。单元测试很难覆盖这种场景。利用自动化将核心的系统测试用例如登录、下单自动化形成冒烟测试Smoke Test套件。每次有新版本部署到测试环境先跑一遍冒烟测试确保核心功能没挂然后再进行更深入的手工或自动化测试。这能极大提升测试效率。8. 测试总结报告与经验复盘所有测试活动结束后需要产出一份测试总结报告向项目相关方老师、项目经理汇报测试成果。这份报告不是简单的“测完了”而是对测试过程的量化总结和质量评估。8.1 测试总结报告的核心内容一份完整的测试总结报告应包含以下部分测试概述回顾测试目标、范围、起止时间、参与人员。测试环境与配置列出测试所用的硬件、软件、网络环境确保结果可复现。测试执行情况测试用例统计总共设计了多少用例执行了多少通过了多少失败了多少阻塞了多少可以用一个表格展示。 | 用例类型 | 设计总数 | 执行数 | 通过数 | 失败数 | 阻塞数 | 通过率 | | :--- | :--- | :--- | :--- | :--- | :--- | :--- | | 功能测试 | 150 | 150 | 142 | 8 | 0 | 94.7% | | UI自动化 | 20 | 20 | 18 | 2 | 0 | 90% | | 性能测试 | 5个场景 | 5个场景 | 4个达标 | 1个不达标 | 0 | 80% |缺陷统计与分析总共发现了多少个Bug各个严重级别的分布如何修复情况怎样可以绘制饼图或柱状图。缺陷总数25个严重程度分布致命0 严重3 一般15 轻微7。修复率已修复24个 修复中1个一般 修复率96%。重点分析哪些模块缺陷最多如“订单模块”发现10个主要是什么类型的缺陷如“逻辑错误”、“界面问题”性能测试结果总结给出关键结论。例如“在100并发用户持续浏览场景下系统平均响应时间1.5秒错误率为0%吞吐量达到120 req/s满足预期性能指标。但在‘提交订单’场景下当并发达到50时响应时间超过5秒建议对订单处理接口进行优化。”风险评估与质量评价遗留风险还有哪些未修复的Bug对用户影响多大是否接受发布质量评价基于测试覆盖率和缺陷修复情况给出对当前版本软件质量的总体评价。例如“核心业务流程测试通过主要严重缺陷已修复系统基本功能稳定性能在主要场景下达标。但部分边缘场景和兼容性测试覆盖不足建议在后续迭代中补充。”测试结论与建议结论明确说明当前版本是否达到发布标准。例如“综上所述TPshop商城V1.0版本通过本次系统测试准予发布。”改进建议针对测试过程中发现的问题提出过程改进建议。例如“建议在开发阶段加强代码评审减少低级逻辑错误建议建立持续的集成环境每次代码提交后自动运行单元测试和接口自动化测试。”8.2 项目复盘与个人经验沉淀做完一个项目尤其是像TPshop这样覆盖了全流程的实战项目一定要复盘。这不是为了交差而是为了把经验内化成自己的能力。问自己几个问题计划 vs 实际最初的测试计划有多少是按期完成的哪些地方出现了延误原因是什么需求变更环境问题技术难点最有效的测试手段在这个项目中是手工测试发现的Bug多还是自动化测试发现的Bug多是功能测试发现的Bug多还是性能测试发现的Bug多这有助于你未来分配测试精力。最大的挑战是环境搭建是某个难以复现的Bug还是与开发的沟通你是如何解决的自动化投资的回报为“用户登录”写自动化脚本花了2小时但这个用例在10次回归测试中都被执行了。节省了20次手工操作的时间。计算一下时间账你会更清楚哪些功能值得自动化。如果重来一次你会从哪个环节开始优化是更早地介入需求评审还是先搭建好性能测试环境把这些思考记录下来就是你独一无二的“实战笔记”。软件测试是一个需要不断学习和积累经验的领域每一个完整的项目闭环都是你能力拼图上坚实的一块。TPshop项目做下来你收获的不仅仅是一份作业或报告而是一套从分析到执行再到总结的完整方法论这套方法论在你未来面对任何一个新系统时都将是你最可靠的起点。
返回列表