跳转至

软件测试

alpha 版本和 beta 版本的区别

  • 阶段与目的
    • Alpha 版:开发早期的内部测试版本,重点验证核心功能的可用性,允许存在较多已知缺陷。
    • Beta 版:接近正式发布的外部测试版本,主要测试稳定性、兼容性和用户体验,缺陷密度较低。
  • 测试主体
    • Alpha 由开发团队内部执行,Beta 则开放给部分真实用户(如受邀用户、公开测试群体)。
  • 交付状态
    • Alpha 不对外正式发布,Beta 可能作为公开测试版提供下载(如 Windows 10 Insider Preview)。

白盒测试、黑盒测试

  • 白盒测试(结构测试)
    • 视角:基于代码逻辑结构(如函数、类、接口)设计用例,关注内部实现。
    • 方法:语句覆盖、分支覆盖、路径覆盖等,典型工具如 Junit、Coverage.py。
    • 场景:单元测试、集成测试早期,验证代码逻辑正确性。
  • 黑盒测试(功能测试)
    • 视角:仅关注系统功能输出,不关心内部代码实现。
    • 方法:等价类划分、边界值分析、场景法等,典型工具如 Selenium、Postman。
    • 场景:系统测试、验收测试,验证需求是否被满足。

软件测试的原则

  1. 尽早测试:测试应贯穿开发全周期,而非仅在代码完成后(如需求阶段即开始测试用例设计)。
  2. 追溯需求:每个测试用例必须对应明确的需求,避免无目标测试。
  3. 缺陷集群:80% 的缺陷常集中在 20% 的模块中,需重点关注高频问题模块。
  4. 避免自测:开发人员不宜完全自测代码,需独立测试团队确保客观性。
  5. 全面测试:测试用例需覆盖功能、性能、安全等多维度,而非仅功能验证。
  6. 缺陷记录:所有缺陷需详细记录复现步骤、环境和优先级,便于追踪修复。

什么是测试驱动开发 TDD?

核心流程:

  1. 先写测试:在编码前根据需求编写失败的测试用例(如 Junit 测试方法)。
  2. 再写代码:实现最小化功能使测试通过。
  3. 重构优化:在保证测试通过的前提下,优化代码结构(如解耦、性能优化)。

优势

  • 确保代码可测试性,减少后期返工;
  • 强制遵循 “小步迭代”,提升代码质量;
  • 天然生成可维护的测试套件(如单元测试集)。

测试用例设计的常用方法有哪些?

  • 功能测试:等价类划分、边界值分析、错误推测法、因果图法;
  • 结构测试:语句覆盖、分支覆盖、循环覆盖;
  • 场景测试:基于用户操作流程的场景法(如电商下单流程)。

软件测试的阶段如何划分

  • 单元测试:验证单个模块 / 函数的逻辑正确性;
  • 集成测试:验证模块间接口和数据交互;
  • 系统测试:验证完整系统是否满足需求(功能、性能、兼容性等);
  • 验收测试:用户主导的 UAT 测试,确认系统符合业务预期。

自动化测试的优势和局限性?

  • 优势:重复测试效率高、减少人力成本、支持夜间 / 批量执行;
  • 局限:初期脚本开发成本高、难以覆盖复杂 UI 场景、无法完全替代手工测试。

如何估算测试工作量?

  1. 用例数 × 单用例执行时间(如 100 个用例 ×10 分钟 / 用例);
  2. 参照历史项目类比(如类似项目测试耗时 20 人 / 天);
  3. 分阶段估算(单元测试 30%、集成测试 40%、系统测试 30%)。