软件测试学习——期末复习汇总

题目设置

考试形式

全部纯主观题目,网络上的资料不保证正确性,主要来自音频内容。

回答方式:有理有据,讲述完整。

考试内容

两部分:论述题、综合题

论述题三个小题(40 分),每个题目围绕一个知识点进行论数。

综合题两个小题(60 分),针对具体问题,两个问题彼此相关,需要围绕知识点进行论述。

重要知识点:

  • 测试的基本概念
  • 测试在软件开发中的角色,处在开发哪个阶段,与其他软件开发阶段有哪些联系。
  • 奠定软件测试的几项基本原则、核心知识:比如穷举测试不可行、不可证明软件系统的正确性只能用来发现缺陷。测试定律,Myers 不充分测试,重点测试法则。理解定律的存在前提,现实情况下的出现频率,这些定律如何应用和指导实践
  • 白盒测试策略,覆盖类型,MC/DC(修正的判定条件覆盖),懂设计逻辑,理解设计的优势。
  • 黑河测试策略,边界值法,等价类划分法(课上强调要一起用)。先等价类划分,然后基于等价类去设计边界值。
  • TDD:掌握如何去做,需求的重要性。需要听一下上一段录音。
    • 系统必须做什么:
    • 系统应当做什么:
    • 系统可以做什么:
    • 系统最好不要做什么:
    • 系统禁止做什么:

罗素:不管你信什么,都不要全信它。

下面是重要知识点专题讲解

软件测试基本原则与一些定律

  • 谈形式化与测试

    形式化验证 是一个很老的研究方向了,且至今一直都有研究者跟进,其中一些研究者主要来自于欧洲。其相关方法,通常仅限于科研,实践中很少见到和用到。

    制约此类方法实践价值的最大瓶颈在于 三个字 “形式化”。 这必然涉及到 形式推理,依此判断代码中是否包含错误。 问题在于:代码写法多样,难以形式化。除非就用遵循严格形式化的语言编写代码(例如 Z 语言),才能有效支撑形式化验证。 但如此一来,带来了另外的麻烦,就是 以形式化语言编写的代码存在的四难:难读、难懂、难写、难改。

    须知,软件是需要变化的,只有持续变化才能持续跟进用户的新需要。由于这四难,使得形式化语言根本无法应用于实践。

TDD 测试驱动开发

概念:要求在编写某个功能代码之前先编写测试用例,然后只编写能令测试用例通过的功能代码

需求-设计-构造-测试

  • TDD 编程的三个环节:

    红灯状态-绿灯状态-重构状态

    从李老师回答的启发:重构状态是指,结构层面的代码优化,想要保证功能和重构之前的形式一致性,红灯到绿灯状态是的测试通过是表达代码的内容一致性。内容重要性大于大于形式一致性,所以应先测试再重构(虽然我当时问的问题是重构完了是不是要再经历一遍红灯绿灯,李老师可能理解错了)。

    测试套件简表形式

    编号|输入|预期输出|实际输出