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)