软考知识点(更新)总结每日一练 10.10

单元测试也称为模块测试,在模块编写完成且无编译错误后就可以进行。单元测试侧重于模块中的内部处理逻辑和数据结构。单元测试主要检查模块的以下5个特征:模块接口、局部数据结构、重要的执行路径、出错处理和边界条件。

①模块接口。模块的接口保证了测试模块的数据流可以正确地流入、流出。在测试中应检査以下要点:

•测试模块的输入参数和形式参数在个数、属性、单位上是否一致。

•调用其他模块时所给出的实际参数和被调用模块的形式参数在个数、属性、单位上是否一致。

•调用标准函数时所用的参数在属性、数目和顺序上是否正确。

•全局变量在各模块中的定义和用法是否一致。

•输入是否仅改变了形式参数。

•开/关的语句是否正确。

•规定的I/O格式是否与输入输出语句一致。

•在使用文件之前是否已经打开文件或是用文件之后是否己经关闭文件。

②局部数据结构。在单元测试中,局部数据结构出错是比较常见的错误,在测试时应重点考虑以下因素:

•变量的说明是否合适。

•是否使用了尚未赋值或尚未初始化的变量。

•变量的初始值或默认值是否正确。

•变量名是否有错(例如:拼写错误)。

③重要的执行路径。在单元测试中,对路径的测试是最基本的任务。由于不能进行穷举测试,需要精心设计测试例子来发现是否有计算、比较或控制流等方面的错误。

•计算方面的错误:算术运算的优先次序不正确或理解错误;精度不够;运算对象的类型彼此不相容;算法错误;表达式的符号表示不正确等。

•比较和控制流的错误:本应相等的量由于精度造成不相等;不同类型进行比较; 逻辑运算符不正确或优先次序错误;循环终止不正确(如多循环一次或少循环一 次)、死循环;不恰当地修改循环变量;当遇到分支循环时,出口错误等。

④出错处理。好的设计应该能预测到出错的条件并且有对出错处理的路径。虽然计算机可以显示出错信息的内容,但仍需要程序员对出错进行处理,保证其逻辑的正确性,以便于用户维护。

⑤边界条件。边界条件的测试是单元测试的最后工作,也是非常重要的工作。软件容易在边界出现错误。

Flynn主要根据指令流和数据流来分类,分为四类:

①单指令流单数据流机器(SISD)

SISD机器是一种传统的串行计算机,它的硬件不支持任何形式的并行计算,所有的指令都是串行执行,并且在某个时钟周期内,CPU只能处理一个数据流。因此这种机器被称作单指令流单数据流机器。早期的计算机都是SISD机器。

②单指令流多数据流机器(SIMD)

SIMD是采用一个指令流处理多个数据流。这类机器在数字信号处理、图像处理以及多媒体信息处理等领域非常有效。

Intel处理器实现的MMXTM、SSE (Streaming SIMD Extensions)、SSE2及SSE3扩展指令集,都能在单个时钟周期内处理多个数据单元。也就是说人们现在用的单核计算机基本上都属于SIMD机器。

③多指令流单数据流机器(MISD)

MISD是采用多个指令流来处理单个数据流。在实际情况中,采用多指令流处理多数据流才是更有效的方法。因此MISD只是作为理论模型出现,没有投入实际应用。

④多指令流多数据流机器(MIMD)

M1MD机器可以同时执行多个指令流,这些指令流分别对不同数据流进行操作。例如,intel和AMD的双核处理器就属于MIMD的范畴。

Built with LogoFlowershow