一测试流程六个部分[1]
①掌握需求:保障软件质量的前提是,理解软件何为正确
②测试计划:有计划才能按时上线,才能控制成本
③测试用例:用例就是测试工作执行的细节
④测试执行:按照计划和用例,执行具体的测试工作
⑤测试报告:测试完之后,对软件质量的一个评估报告(适当可视化)
⑥回归测试:之前测试发现问题,开发修复后,再次测试
二 该工作一般会有两个部分
1.系统需求规格说明书:做计划,划分功能模块任务排期
2.BUG管理工具的地址和账户:
发现问题并记录(测试环境注明,格式:步骤-结果-期望),具体情况因地制宜
三、测试用例编写方法与常用设计技巧
测试用例是测试工作的核心,是验证软件功能是否正确的具体步骤和预期结果的集合。一个设计良好的测试用例可以提高测试效率,有效发现缺陷。本节将系统介绍测试用例的编写方法、设计技巧和最佳实践。
1. 测试用例的核心要素
一个完整的测试用例通常包含以下要素:
- 用例编号:唯一标识符,便于追踪和管理。
- 测试标题/名称:简明扼要地描述测试目的。
- 前置条件:执行测试前需要满足的环境、数据或状态。
- 测试步骤:清晰、可执行的操作序列。
- 测试数据:测试过程中需要输入的具体数据。
- 预期结果:每一步操作后,系统应有的正确响应。
- 实际结果:执行测试后观察到的真实结果(执行时填写)。
- 优先级:通常分为高、中、低,决定测试执行的顺序。
- 测试类型:功能、性能、安全、兼容性等。
- 所属模块:测试用例对应的功能模块。
2. 测试用例设计方法(黑盒测试常用)
以下方法主要用于黑盒测试,帮助系统性地设计测试用例,提高覆盖率。
2.1 等价类划分法
将输入域划分为若干等价类,从每个等价类中选取少数代表性数据作为测试用例。原则是:同一等价类中的输入,对揭露程序错误是等效的。
- 有效等价类:符合规格说明的、有意义的输入数据集合。
- 无效等价类:不符合规格说明的、无意义的输入数据集合。
示例:一个用户名输入框,要求长度为6-18位字符。
- 有效等价类:长度为6、12、18位的字符串。
- 无效等价类:长度为5位、19位、空字符串、包含特殊字符的字符串。
2.2 边界值分析法
基于“错误更可能发生在输入域的边界处”的经验,对输入或输出的边界值进行测试。这是对等价类划分法的补充,通常一起使用。
- 对于范围 [a, b],测试点通常包括:a-1, a, a+1, b-1, b, b+1。
- 对于长度、数量、次数等,方法类似。
示例:同上用户名长度6-18位。
- 边界值测试点:5位(刚好小于最小值)、6位(最小值)、7位(最小值+1)、17位(最大值-1)、18位(最大值)、19位(刚好大于最大值)。
2.3 因果图法
适用于输入条件较多,且条件之间存在相互约束关系的情况。通过分析输入条件(因)和输出结果(果)之间的逻辑关系,设计测试用例。
- 步骤:分析规格说明,找出原因和结果 → 画出因果图 → 标注约束条件 → 将因果图转换为判定表 → 根据判定表设计测试用例。
- 能有效发现组合条件下的错误。
2.4 判定表驱动法
适用于多个逻辑条件组合决定多个操作的情况。以表格形式表达逻辑关系,确保所有条件组合都被覆盖。
- 构成:条件桩、动作桩、条件项、动作项。
- 适合测试业务规则复杂的场景。
2.5 场景法(流程图法)
通过描述“用户场景”或“业务流”来设计测试用例,模拟用户真实的操作路径。尤其适合测试业务流程。
- 基本流:最常用、最直接的业务操作路径(Happy Path)。
- 备选流:各种异常、分支或错误的操作路径。
2.6 错误推测法
基于测试人员的经验和直觉,推测程序中可能存在的错误类型,并据此设计测试用例。
- 例如:输入特殊字符、SQL注入语句、超长字符串、重复提交、网络中断等。
3. 测试用例编写最佳实践
- 原子性:一个测试用例应只验证一个明确的功能点或场景。
- 可重复性:不依赖外部状态,每次执行结果应一致。
- 清晰明确:步骤、数据和预期结果必须具体、无歧义。
- 可维护性:当需求变更时,易于更新。
- 正向与反向结合:既要设计验证功能正常的用例(正向),也要设计验证异常处理的用例(反向)。
- 优先级合理:核心功能、高频使用路径的用例优先级应设为“高”。
4. 测试用例管理工具
对于团队协作和长期项目,建议使用专业的测试用例管理工具:
- Jira + Xray / Zephyr:与开发流程深度集成。
- TestRail:功能强大的独立测试用例管理平台。
- 禅道、Tapd:国内流行的项目管理工具,内置测试用例模块。
- Excel/Google Sheets:小型团队或项目的轻量级选择。
核心价值:实现用例的版本控制、执行跟踪、结果统计和报告生成。
5. 一个完整的测试用例示例
| 要素 | 内容 |
|---|---|
| 用例编号 | TC-LOGIN-001 |
| 测试标题 | 验证使用有效用户名和密码可以成功登录系统 |
| 所属模块 | 用户认证 |
| 优先级 | 高 |
| 前置条件 | 1. 系统已部署并运行正常。 2. 存在一个已注册的用户,用户名:testuser,密码:Test@123。 |
| 测试步骤 | 1. 打开系统登录页面。 2. 在“用户名”输入框中输入“testuser”。 3. 在“密码”输入框中输入“Test@123”。 4. 点击“登录”按钮。 |
| 测试数据 | 用户名:testuser;密码:Test@123 |
| 预期结果 | 1. 页面跳转到系统主页。 2. 页面右上角显示“欢迎,testuser”。 3. 浏览器的URL包含“/dashboard”。 |
掌握科学的测试用例设计方法,是成为一名优秀测试工程师的基础。在实际工作中,需要根据被测对象的特点,灵活组合运用多种方法,才能设计出高效、高覆盖率的测试用例集。
四 find_element写法
Selenium 升级到版本 4 以后,建议写成下面这种格式:
from selenium.webdriver.common.by import By
wd.find_element(By.ID, 'username').send_keys('byhy')
wd.find_element(By.CLASS_NAME, 'password').send_keys('sdfsdf')
wd.find_element(By.TAG_NAME, 'input').send_keys('sdfsdf')
wd.find_element(By.CSS_SELECTOR,'button[type=submit]').click()
五 黑盒测试与白盒测试
黑盒测试与白盒测试的定义
黑盒测试是一种不考虑内部代码结构的测试方法,仅关注输入与输出是否符合预期。测试人员无需了解系统内部实现细节,只需验证功能是否满足需求规格。
白盒测试则需要了解代码内部逻辑,通过检查程序结构、路径、条件和循环等来设计测试用例。测试人员需具备编程知识,确保代码的每一部分都被覆盖。
黑盒测试的特点
- 关注功能:验证系统是否按需求工作。
- 无需代码知识:测试人员无需编程背景。
- 测试用例设计:常用等价类划分、边界值分析、因果图等方法。
- 局限性:无法检测代码中的隐藏错误或冗余逻辑。
白盒测试的特点
- 关注代码逻辑:检查代码路径、分支和条件。
- 需要代码知识:测试人员需理解编程语言和实现细节。
- 测试用例设计:常用语句覆盖、分支覆盖、路径覆盖等方法。
- 局限性:可能遗漏未实现的用户需求或接口问题。
适用场景对比
- 黑盒测试:适合功能验收测试、系统测试和用户场景验证。
- 白盒测试:适合单元测试、集成测试和代码质量评估。
常用技术或工具
- 黑盒测试工具:Selenium(Web自动化)、Postman(API测试)、JMeter(性能测试)。
- 白盒测试工具:JUnit(Java单元测试)、PyTest(Python测试)、Coverity(静态代码分析)。
结合使用的优势
在实际项目中,通常结合两种方法:
- 黑盒测试确保功能符合需求。
- 白盒测试提升代码健壮性和覆盖率。
六 冒烟测试
冒烟测试的定义
冒烟测试(Smoke Testing)是一种初步的软件测试方法,用于验证系统的基本功能是否正常运行。通常在开发或构建新版本后执行,目的是快速发现关键缺陷,确保软件的基本核心功能没有严重问题。
冒烟测试的特点
- 快速执行:测试用例通常较少,仅覆盖核心功能,耗时短。
- 高优先级:重点测试影响系统启动或主要流程的关键功能。
- 非详尽测试:不涉及边缘案例或细节功能验证。
冒烟测试的应用场景
- 持续集成(CI):在代码提交后自动运行冒烟测试,确保新代码未破坏核心功能。
- 版本发布前:在正式测试前快速验证版本是否可测试。
- 修复缺陷后:确认修复的缺陷未引入新的重大问题。
冒烟测试的执行步骤
- 选择测试用例:选取覆盖主要功能的高优先级测试用例,例如用户登录、核心业务流程等。
- 执行测试:运行选定的测试用例,观察系统行为是否符合预期。
- 分析结果:若测试通过,继续进行详细测试;若失败,则需修复问题后重新验证。
冒烟测试与回归测试的区别
- 冒烟测试:聚焦核心功能,快速验证版本稳定性。
- 回归测试:覆盖更广泛的功能,确保新修改未影响现有功能。
冒烟测试的工具支持
- 自动化工具:如Selenium、JUnit、TestNG等,适合集成到CI/CD流水线。
- 手动执行:适用于小型项目或初期开发阶段。
通过冒烟测试,团队可以快速识别关键问题,避免在后续测试或发布过程中浪费资源。
七 CI/CD
CI/CD(Continuous Integration / Continuous Deployment)是将接口测试(及其他测试)自动化嵌入开发流水线的核心实践。上面这张流程图展示了一条完整的 CI/CD 流水线。
CI/CD 是什么
| 概念 | 全称 | 核心思想 |
|---|---|---|
| CI | Continuous Integration(持续集成) | 开发者频繁合并代码到主干,每次合并自动触发构建和测试 |
| CD | Continuous Deployment / Delivery(持续部署/交付) | 通过自动化将验证通过的代码发布到生产环境 |
CI 确保"每次提交都经过验证",CD 确保"验证通过的代码能快速、安全地上线"。
流水线各阶段详解
CI 阶段(持续集成)
1. 代码提交
- 开发者通过
git push将代码推送到远程仓库(GitHub/GitLab/Gitee) - 触发 Webhook 通知 CI/CD 平台启动流水线
2. 代码质量检查
- 静态分析:SonarQube、ESLint、Checkstyle、PMD
- 安全扫描:SAST(Snyk、Semgrep)、依赖漏洞检测(Dependabot)
- 格式规范:Prettier、Black、go fmt
3. 构建编译
- 编译源码、打包依赖、生成可执行文件或 Docker 镜像
- 工具:Maven/Gradle(Java)、npm/pnpm(Node.js)、Go Build、Docker Build
4. 自动化测试
- 单元测试:JUnit、pytest、Jest —— 覆盖核心逻辑
- 接口测试:pytest + requests、Postman/Newman Collection、REST Assured
- E2E 测试:Cypress、Playwright、Selenium
5. 制品打包
- 构建 Docker 镜像、编译产物 JAR/ZIP
- 推送到制品仓库(Harbor、Nexus、Docker Registry)
CD 阶段(持续部署)
6. 预发布环境部署
- 将新版本部署到 staging 环境
- 执行集成验证、回归测试、性能测试
7. 生产部署
- 滚动更新、蓝绿部署、金丝雀发布
- 工具:ArgoCD、FluxCD、Jenkins、GitHub Actions
8. 监控与告警
- Prometheus + Grafana、ELK、SkyWalking
- 发布后自动监控错误率、响应时间、业务指标
主流 CI/CD 平台
| 平台 | 特点 | 适用场景 |
|---|---|---|
| GitHub Actions | 与 GitHub 深度集成、YAML 配置、丰富市场 | 开源项目、GitHub 仓库 |
| GitLab CI/CD | 内置 CI/CD、.gitlab-ci.yml 配置、私有部署 | 企业级私有化 |
| Jenkins | 插件生态最丰富、高度可定制、社区成熟 | 传统企业、复杂流水线 |
| ArgoCD | GitOps 原生、声明式部署、Kubernetes 原生 | 云原生 K8s 环境 |
| 云效/腾讯云 CODING | 国内一站式 DevOps、中文友好 | 国内企业 |
| CircleCI / Travis CI | 配置简单、云端托管 | 中小型项目 |
注:[1] B站博主:测试干货铺http://【【2026最新版】软件测试零基础入门到精通教程,全程干货,适合小白入门,别再盲目自学了!】https://www.bilibili.com/video/BV1U9iEBREWt?p=4&vd_source=a94a2e7a699eae782e68e7e73ed12ff4
[2] B站博主:白月黑羽编程
http://【Python + Selenium Web自动化 - 2024 更新版 - 自动化测试 爬虫】https://www.bilibili.com/video/BV1Z4411o7TA?vd_source=a94a2e7a699eae782e68e7e73ed12ff4