程序员的职业素养 读书笔记 - 第8章 测试策略

QA应该找不到任何错误

QA也是团队的一部分

    QA和开发人员应该紧密协作,携手保障系统的质量。

    QA在团队中要扮演的便是需要规约定义者(specifier)和特性描述者(characterizer)。

需求规约定义者

    QA的任务便是和业务人员一起创建自动化验收测试,作为系统真正的需求规约文档。

    业务人员编写针对正常路径(happy-path)的测试。

    QA编写针对极端情况(corner)、边界状态(boundary)和异常路径(unhappy-path)的测试。

特性描述者

    QA的另一项任务是遵循探索式测试的原则,描述系统运行中的真实情况,将之反馈给开发人员和业务人员。

自动化测试金字塔

单元测试

    金字塔底部是单元测试,单元测试由程序员使用与系统开发相同的语言来编写,供程序员自己使用。

    编写单元测试的目的是在最低层次上来定义系统。

组件测试

    组件测试是验收测试的一种,它们是针对系统的各个组件而编写。

    系统的组件封装了业务规则,对这些组件的测试便是对其中业务规则的验收测试。

    组件测试由QA和业务人员编写,开发人员提供辅助。

集成测试

    集成测试只对那些组件很多的较大型系统才有意义。它将组件装配成组,测试它们彼此之间是否能正常通信。

    集成测试是编排性(choreography)测试。它们并不会测试业务规则,而是主要测试组件装配在一起时是否协调。

    集成测试一般由系统架构师或主设计师来编写,用以确认系统架构层面的结构是事正确无误。

系统测试

    系统测试是针对整个集成完毕的系统来运行的自动化测试,是最终的集成测试。

    它们不会直接测试业务规则,而是测试系统是否已正确组装完毕,以及系统各个组成部件之间是否能正确交互。

    包含吞吐率测试和性能测试。

人工探索式测试

    需要人工介入、敲击键盘、盯牢屏幕的测试。它们既非自动化的测试,亦非脚本化的测试。

    探索式测试是要确保系统在人工操作下表现良好,同时富有创造性地找出尽可能多的“古怪之处”。

posted @ 2018-12-13 16:47  TanSea  阅读(171)  评论(0编辑  收藏  举报