以下是三角形问题的数据流图描述。可以 把这个程序实现为一个主程序和三个简单 的过程。在后续章节里我们还需要用到这个 例子,现在将它的实现用伪代码表示。
END IF 这样不仅能达到文档的效果,同时能节约时间. 更重要的是,使结构 比较清晰,表达方式更加直观.
变量声明 符号‘后的内容表示注释 数据结构声明 赋值语句 输入 输出 简单条件 复合条件 顺序结构 简单选择
在单元测试中,我们会用到三个例子,分别是: 三角形问题;逻辑很复杂的函数,NextDate ();有代表性的MIS测试,佣金问题。这三个 例子合在一起,可以说明测试人员在单元级别上 会遇到的大多数问题,而在讨论这几个问题时, 我们会用到伪代码这个工具,因此今天我们先介 绍伪代码的概念和一种伪代码规则。
引言: 三角形问题是软件测试中一个经久不衰的 例子,它包含了清晰而且复杂的逻辑。比 如说三角形的性质:任何两边之和必须要 严格大于第三条边。 我们在讲述这样的一个问题 的时候还给出了三角形三条边的上限值, 这主要是为了以后在讲黑盒测试时要用到 这个上限值。
伪代码(Pseudocode)是一种算法描述语 言。使用伪代码的目的是为了使被描述的 算法可以容易地以任何一种编程语言 (Pascal,C,Java,etc)实现。因此, 伪代码必须结构清晰、代码简单、可读性 好,并且类似自然语言。 介于自然语言与 编程语言之间。
改进版本:三角形问题接受三个整数a、b和c作为 输入,用作三角形的边。整数a、b和c一定要满足 以下条件:
程序的输出是由这三条边确定的三角形类型: 等边三角形、等腰三角形、不等边三角形或非 三角形。如果输入值没有满足这些条件中的任 何一个,则程序会通过输出消息来进行通知, 例如,“b的取值不在允许范围内”,若c1、c2、 c3满足,则给出以下四种相互排斥输出的一个: • 如果三条边相等,则程序的输出是等边三角形。 • 如果两条边相等,则程序的输出是等腰三角形。 • 假如没有两条边相等,则程序的输出是不等边 三角形。 1. 如果c4、c5和c6中有一个条件不满足,则程序 的输出是非三角形。
三角形问题是在软件测试文献中使用最广 的一个例子,这个例子经久不衰的原因之 一是,它包含了清晰而又复杂的逻辑。它 还是削弱客户、研发人员和测试人员沟通 的不完整定义的典型例子。
简单版本:三角形问题接受三个整数a、b和c作为 输入,用作三角形的边。程序的输出是由这三条 边确定的三角形类型:等边三角形、等腰三角形、 不等边三角形或非三角形。有时这样的一个问题被扩展 为将直角三角形作为第五类,在有些练习中会使 用这种扩展。
例如,类Pascal语言的伪代码的语法规则是: 在 伪代码中,每一条指令占一行(else if,例外)。 指令后不跟任何符号(Pascal和C中语句要以分 号结尾)。书写上的“缩进”表示程序中的分支 程序结构。这种缩进风格也适用于if-then-else语 句。用缩进取代传统Pascal中的begin和end语句 来表示程序的块结构可以大幅度提高代码的清晰性; 同一模块的语句有相同的缩进量,次一级模块的 语句相对与其父级模块的语句缩进。
伪代码只是像流程图一样用在程序设计的初期,帮助写出程序流程。 简单的程序一般都不用写流程、写思路,但是复杂的代码,最好还是 把流程写下来,总体上去考虑整个功能怎么来实现。写完以后不但可以 用来作为以后测试,维护的基础,还可用来与他人交流。但是,如果把 全部的东西写下来必定可能会浪费很多时间,那么这样一个时间段可以采用 伪代码方式。比如:
正确理解伪代码的概念 正确理解伪代码的规则 正确理解伪代码实例中的逻辑 能够看懂实例中的伪代码所表达的含义
小 结 这里介绍的伪代码提供了表示程序源代码 的“独立于语言”的方式。伪代码有两层 结构:单元和程序组建。单元既可以解释 为传统组件(过程和函数),也可以解释 为面向对象组件(类和对象)。使用伪代 码可以使程序设计人员集中于处理问题而 不是计算机语言。
伪代码课堂练习 问题:计算并报告一个班学生的平均分数。 讨论:平均分数等于所有学生分数的和除以
学生数。我们应该一个循环然后加班中每 位学生的分数。在循环内仍需要班内学生 的总数。
选择 多重选择 计数循环 While循环 Unitl循环 过程定义 过程调用 程序 练习 小结