布局:帖子 标题:“软件测试周期:完整的质量保证指南” 日期: '2023-12-02 09:00:00' 缩略图:/assets/images/uploads/default-post.jpg 类别: 开发 标签:
- 测试
- 质量保证
- 质量
- 发展
- 自动化
- 持续集成/持续交付 目录:正确 摘录:软件测试周期的完整指南。确保开发质量的测试类型、策略、自动化和最佳实践。
软件测试周期:完整的 QA 指南
软件测试可确保产品按预期工作。生产中的错误代价高昂:经济上和声誉上。本指南介绍了测试周期、类型、自动化策略以及开发团队的最佳实践。
为什么要测试软件
防止生产中出现错误
在用户之前发现问题。越早纠正越便宜。
确保要求
确认软件能够发挥应有的作用。与规范一致。
生活文档
测试记录预期行为。始终更新。
改变的信心
通过测试,重构是安全的。改变不会破坏有效的东西。
测试生命周期
规划
定义范围、资源、时间表。要测试哪些功能?多深?
测试用例设计
根据需求创建场景。快乐路径和边缘情况。
环境准备
测试环境设置、数据、工具。
执行
运行测试,记录结果。
结果分析
找出缺陷,优先纠正。
报告
沟通状态、指标和风险。
测试类型
单元测试
他们单独测试函数或类。速度快,数量多,金字塔底层。
集成测试
测试组件之间的交互。 API、数据库、外部服务。
端到端 (E2E)
测试完整的用户流程。从开始到结束,就像一个真正的用户。
冒烟测试
表面检查构建是否有效。 “系统启动了吗?”
回归测试
确保更改不会破坏现有功能。
验收测试
验证业务需求。符合验收标准吗?
测试金字塔
概念
底层的单元测试较多,中间的集成较少,顶部的 E2E 很少。
为什么
单元测试快速且便宜。 E2E 缓慢且脆弱。适当的平衡。
反模式:蛋卷冰淇淋
E2E多,单位少。缓慢、脆弱、维护成本昂贵。
功能测试与非功能测试
功能性
他们测试系统的功能。行为、特征。
非功能性
他们测试系统的表现。性能、安全性、可用性。
性能测试
负载测试
系统支持预期负载吗?模拟并发用户。
压力测试
哪里坏了?超越极限。
尖峰测试
对突然的负载峰值的响应。
浸泡测试
长时间负载下的稳定性。内存泄漏、退化。
工具
k6、JMeter、Locust、加特林。
安全测试
###先科
静态应用程序安全测试。分析代码而不执行。
达斯特
动态应用程序安全测试。测试运行应用程序。
渗透测试
真实的攻击模拟。发现可利用的漏洞。
依赖关系扫描
具有已知漏洞的库。
测试自动化
为什么要自动化
重复性、速度、覆盖范围。人类处理复杂的情况。
自动化什么
重复、关键、稳定的案例。不要盲目地将一切自动化。
流行框架
Jest、Pytest、JUnit、XCTest、Cypress、Playwright。
维护
自动化测试需要维护。考虑成本因素。
测试驱动开发 (TDD)
循环
红色(编写失败的测试)→ 绿色(使它们通过)→ 重构(改进代码)。
好处
更好的设计、自然的覆盖、文档。
何时使用
非常适合业务逻辑。对于探索性 UI 不太有用。
行为驱动开发 (BDD)
###小黄瓜
给定-何时-然后。场景的自然语言。
好处
技术人员和非技术人员之间的协作。可执行的规范。
工具
黄瓜、SpecFlow、行为。
代码覆盖率
它衡量什么
测试执行的代码的百分比。
指标
线路覆盖、支线覆盖、功能覆盖。
陷阱
100%的覆盖率并不意味着100%的质量。衡量标准,而不是客观标准。
CI/CD 测试
持续集成
每次提交都会运行测试。快速反馈。
持续部署
仅当测试通过时才会部署。自动质量门。
管道
构建→单元测试→集成测试→E2E(选择性)→部署。
测试环境
隔离
独立的生产环境。测试数据,不真实。
奇偶校验
类似生产的环境。避免“在我的机器上运行”。
测试数据
固定装置、工厂、种子。数据一致且可重复。
模拟、存根和假货
###模拟
模拟行为,验证交互。
存根
返回预定义的响应。不检查通话。
###假的
简化实施。例如,内存数据库。
何时使用
隔离组件、测试边缘情况、加速测试。
移动测试
单元测试
与任何软件相同的方法。
用户界面测试
XCTest 适用于 iOS,Espresso 适用于 Android。
设备农场
在云中的真实设备上进行测试。 BrowserStack、Firebase 测试实验室。
挑战
Android碎片化、版本不同、网络状况不同。
质量检查指标
测试覆盖率
涵盖了多少代码。
缺陷密度
按代码大小划分的错误。
逃逸率
生产中出现的错误。
平均检测时间
多久发现bug。
平均解决时间
多久修好。
左移
概念
尽早测试。预防胜于检测。
实践
IDE 中的代码审查、单元测试、静态分析。
好处
修复错误的成本更低。减少返工。
常见错误
脆弱的测试
它们因与测试内容无关的原因而中断。高维护。
忽略失败的测试
“总是失败,忽略它。”对套件失去信心。
测试实施,而不是行为
与内部代码耦合的测试。他们破坏了重构。
无策略
随机测试。没有按风险划分优先级。
结论
测试是一项投资,而不是成本。它们可以防止错误、记录行为并给予发展信心。制定适合具体情况的策略,使重复性工作自动化,并将质量作为持续的优先事项。
##常见问题解答
1) 我应该测试多少代码? 70-80% 是一个不错的目标。关注关键代码,而不是绝对数字。
2) 我应该测试遗留代码吗? 是的,逐渐地。修改时添加测试。表征测试有帮助。
3) 自动化是否取代了手动测试? 不完全。探索性、可用性和复杂的案例需要人类。
4) TDD 是强制性的吗? 不,它是一种工具,而不是一种宗教。当有意义时使用。
5) 如何确定测试内容的优先级? 按风险和使用频率。首先是关键功能。
