软件=程序+数据+文档
狭义测试:程序写完后的一个阶段
广义测试:贯穿软件开发的整个生命周期。
软件测试的目的:
- 发现BUG
- 及时、高质量的交付
- 持续改进
测试的原则
- 测试应该及早的介入
- 穷尽测试用例是不可能的
- 缺陷集群效应,80%的缺陷集中在20%的地方
- 测试无法显示潜伏的软件缺陷
- 杀虫剂效应(不断执行同样的用例,发现缺陷的能力越来越差)
软件测试基本过程
- 需求分析
- 测试计划
- 测试分析和设计
- 测试实现和执行
- 测试评估和报告
- 测试结束工作
测试模型:
- 瀑布模型:比较老的模型,阶段性强,不够灵活,测试在最后面,没有起到规避风险的作用
- V模型:测试更具有层次性,但是测试还是在最后面,没有解决瀑布模型的缺点
- W模型:测试活动贯穿软件开发的生命周期,解决了前面两个模型测试在最后的缺点,但是阶段性划分太强,不够灵活
- 敏捷开发模型:持续测试,持续集成,但是对每个用户故事测试完之后还要集成到一块进行测试,较为繁琐。
敏捷开发宣言
- 个体和互动高于工具和流程
- 好用的软件高于详尽的文档
- 客户合作高于合同谈判
- 响应变化高于遵循计划
黑盒测试方法
- 等价类
- 边界值
- 分类树
- 判定表
- 因果图
- 场景法
白盒测试
1、语句覆盖(执行的路径最少) 2、判定覆盖 3、条件覆盖 4、判定/条件覆盖 5、条件组合覆盖 6、路径覆盖