跳转至

Lecture 17. Testing in the Software Progress 软件过程中的测试

  • Big bang 大爆炸开发测试,写一堆再测
  • incremental 增量开发测试,写一点测一点,通常会更好一点

时间线(增量测试)

单元测试、集成测试、系统测试、验收测试。

关于 verification 和 validation 的区别:

  • verification 是,开发人员看看是否产品是否满足规格规范限制条件,通常是一个 内部 的过程
  • validation 是,产品满足客户的需求,通常是 外部 客户的确认过程。

Test plan 测试计划

通常包含:

  • 要测试什么 item
  • 需要做什么任务
  • 负责人
  • 时间表
  • 需要的测试资源

IEEE 的测试计划模型

IEEE 读作 eye-triple-ee。

指出,测试计划好之后开始执行,执行过程要记录日志和故障,最后写出总结报告

软件开发生命周期(software development life cycle)

SDLC 是一个结构模型。

瀑布模型(waterfall model)

就是一步步去做,一个阶段一个阶段的过程。

需求定义 --> 系统设计 --> 编码 --> 测试 --> 运维。

优点

前期如果投入时间很多,意味着分析的比较到位,文档会比较全面,下一步出现故障的概率比较小,节省后面时间。

缺点

整个项目什么时候能做完,只有到做完了才能知道。

不方便后来再重新改动,否则可能整个进度就被打乱了。

做文档比较耗时间。

测试放在最后,可能不会太充分。而且可能会嫌改前面的东西太麻烦,就懒得改了。导致软件质量不大行。

V 模型(v-model)

因为整个流程的形状像一个 V 字母。相当于瀑布模型的扩展。注重于边开发边测试。

每个环节都对应着一个测试,并且为下一步做准备。

需求收集阶段,进行验收测试。需求分析阶段进行系统测试。概要设计阶段对应集成测试。详细设计对应单元测试。最后是编码。

优点

比较简单,容易管理,在每个阶段都都要 verification 和 validation。

缺点

由于是瀑布模型的扩展,如果要再做改变和调整,还是比较麻烦。

不太适合面向对象的比较长期的项目。

W 模型

有点类似 V 模型。W 相当于两个 V 合在一起。

相比 V 模型,多了分析测试、设计测试、规范测试等。这几步骤是针对于文档的测试。

增量开发和敏捷开发(incremental and agile development)

在这种开发环境下,瀑布模型和 V 模型可能不是那么好用,因为很多需求不是一开始就确定了的。这时候就需要一些敏捷的模型。

增量模型(incremental model)

每个阶段都是:需求、设计、编码、测试、发布,然后到下一个阶段,然后继续。

由于每一段代码都是一点点写出来的,所以出现 bug 的概率小一点,同时也更加容易做出更改。

缺点就是复杂程度一点点的增加,管理和维护难度会不断增加。

极限编程(extreme programming)

极限编程是敏捷开发的子集。

强调代码评审、持续集成、自动化测试、短期迭代。

不太看重写文档。

比较强调团队合作,客户和开发者要一起参与进来。

关键点:沟通、设计简洁、持续反馈、勇气。

用户故事(user story)

与极限编程有关。

用自然语言描述一下软件是做什么的。

感觉就类似于用户视角对软件的需求。

故事卡片(story card)

通常就是写在一张纸上。有了故事卡片,就按照故事卡片的要求,转化为任务卡片,然后去实现。

故事模板(story template)

As a <用户>, I want <功能> so that <目的>。

例如:As an account holder, I want to able to withdraw cash from the ATM, so that I can get money

SCRUM

也是敏捷开发的一种方法,类似于极限编程。

核心好像是,把一堆事项按照优先级排好顺序,以及冲刺(sprint)