文档详情

软件工程 第7章 编码与测试.ppt

发布:2017-01-05约3.26万字共163页下载文档
文本预览下载声明
大体上,程序设计语言分为以下几类: (1)机器语言 (2)汇编语言:语句与硬件有一一对应关系。使用汇编语言编码需要把软件设计翻译成机器操作的序列,由于这两种表示方法很不相同,因此汇编程序设计既困难又容易出差错。 (3)高级语言:不依赖于计算机。高级语言的源程序语句和汇编代码指令之间有一句对多句的对应关系。用高级语言写的程序容易阅读,容易测试,容易调试,容易维护。 选择语言时的实用标准: (1) 系统用户的要求。如果系统由用户负责维护,用户通常要求用他们熟悉的语言书写程序。 (2) 可以使用的编译程序。运行目标系统的环境中可以提供的编译程序往往限制了可以选用的语言的范围。 (3) 可以得到的软件工具。如果某种语言有支持程序开发的软件工具可以利用,则目标系统的实现和验证都变得比较容易。 (4) 工程规模。如果工程规模很庞大,现有的语言又不完全适用,那么设计并实现一种供这个工程项目专用的程序设计语言,可能是一个正确的选择。 (5) 程序员的知识: 选择一种已经为程序员所熟悉的语言。 (6) 软件可移植性要求。如果目标系统将在几台不同的计算机上运行,或者预期的使用寿命很长,那么选择一种标准化程度高、程序可移植性好的语言就是很重要的。 (7) 软件的应用领域。所谓的通用程序设计语言实际上并不是对所有应用领域都同样适用。因此,选择语言时应该充分考虑目标系统的应用范围。 3. 系统测试 系统测试是把经过测试的子系统装配成一个完整的系统来测试。在这个测试步骤中发现的往往是软件设计中的错误,也可能发现需求说明中的错误。 不论是子系统测试还是系统测试,都兼有检测和组装两重含义,通常称为集成测试。 4. 验收测试 测试内容与系统测试基本类似,但它在用户参与下进行,而且主要使用实际数据(系统将来要处理的信息)进行测试。目的是验证系统确实能够满足用户的需要,在这个测试步骤中发现的往往是系统需求说明书中的错误。验收测试也称为确认测试。 测试过程是依相反顺序安排的自底向上,逐步集成的过程: 5. 平行运行 同时运行新开发出来的系统和将被它取代的旧系统,以便比较新旧两个系统的处理结果。具体目的有如下几点: (1) 可以在准生产环境中运行新系统而又不冒风险; (2) 用户能有一段熟悉新系统的时间; (3) 可以验证用户指南和使用手册之类的文档; (4) 能够以准生产模式对新系统进行全负荷测试,可以用测试结果验证性能指标。 这个阶段的输入信息有两类: (1)软件配置,包括需求说明书、设计说明书和源程序清单等 (2)测试配置,包括测试计划和测试方案。 测试方案:测试时使用的输入数据(称为测试用例)、每组输入数据预定要检验的功能,以及每组输入数据预期应该得到的正确输出。 比较测试得出的实际结果和预期的结果,如果两者不一致则很可能是程序中有错误。设法确定错误的准确位置并且改正它,这就是调试的任务。与测试不同,通常由程序的编写者负责调试。 例如,图7.2是一个正文加工系统的部分层次图, 图7.2 正文加工系统的层次图 假定要测试其中编号为3.0的关键模块——正文编辑模块。 测试驱动程序:用来调用正文编辑模块,说明必要的变量,接收测试数据——字符串,并且设置正文编辑模块的编辑功能。 存根程序:用来模拟正文编辑模块为完成具体的编辑功能所调用的下层模块。简单起见,测试时设置的编辑功能只有修改(CHANGE)和添加(APPEND)两种,用控制变量CFUNCT标记要求的编辑功能,且只用一个存根程序模拟正文编辑模块的所有下层模块。下面是用伪码书写的存根程序和驱动程序: Ⅰ. TEST STUB(*测试正文编辑模块用的存根程序*) 初始化; 输出信息“进入了正文编辑程序”; 输出“输入的控制信息是”CFUNCT; 输出缓冲区中的字符串; IF CFUNCT=CHANGE THEN 把缓冲区中第二个字改为*** ELSE 在缓冲区的尾部加??? END IF; 输出缓冲区中的新字符串; END TEST STUB Ⅱ. TEST DRIVER(*测试正文编辑模块用的驱动程序*) 说明长度为2500个字符的一个缓冲区; 把CFUNCT置为希望测试的状态; 输入字符串; 调用正文编辑模块; 停止或再次初启; END TEST DRIVER 为进行单元测试必须编写测试软件,包括驱动程序和存根程序,许多模块不能用简单的测试软件充分测试。为了减少开销可以使用下节将要介绍的渐增式测试方法,在集成测试的过程中同时完成对模块的详尽测试。 模块的内聚程度高可以简化单元测试过程。如果每个模块只完成一种功能,则需要的测试方案数目将明显减少,模块中的错误也更容易预测和发现。 7.4.
显示全部
相似文档