软件的编码与测试.

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1第5章软件的编码与测试教学目标教学内容5.1编码设计的目的5.2程序设计语言5.3编码风格5.4软件测试5.5测试用例的设计5.6测试步骤5.7调试技术第5章软件的编码与测试《软件工程导论》2教学目标掌握程序设计语言特点和选择;掌握程序编码风格;掌握软件测试的概念、目的、原则和测试的方法;重点掌握软件测试用例的设计;了解设计语言的分类,程序调试的过程和基本方法。第5章软件的编码与测试《软件工程导论》35.1编码设计的目的所谓编码,是使用选定的程序设计语言,把模块的过程描述翻译为用该语言书写的源程序。源程序不仅要求语法上的正确性,还要求源程序具有良好的结构性和良好的程序设计风格。在程序编写时应考虑到,所写的程序将被别人阅读,一定要尽量使程序写得容易被人读懂。目前,人们编写源程序还不能使用自然语言,只能用某种程序设计语言。第5章软件的编码与测试《软件工程导论》45.2程序设计语言程序设计语言的分类自20世纪60年代以来,世界上公布的程序设计语言已有上千种之多,但是只有很小一部分得到了广泛的应用。程序设计语言的选择语言选择的合适,会使编码困难减少,程序测试量减少,并且可以得到易读、易维护的软件。第5章软件的编码与测试《软件工程导论》55.2.1程序设计语言的分类从发展历程来看程序设计语言可以分为四代:第一代语言(机器语言)机器语言是由二进制0、1代码指令构成,不同的CPU具有不同的指令系统。机器语言程序难编写、难修改、难维护,需要用户直接对存储空间进行分配,编程效率极低。目前这种语言已经被淘汰。第5章软件的编码与测试《软件工程导论》6第二代语言(汇编语言)汇编语言指令是机器指令的符号化,与机器指令存在着直接的对应关系。缺点:难学难用、容易出错、维护困难等。优点:可直接访问系统接口,汇编程序翻译成的机器语言程序的效率高。从软件工程角度来看,只有在高级语言不能满足设计要求,或不具备支持某种特定功能的技术性能(如特殊的输入输出)时,汇编语言才被使用。第5章软件的编码与测试《软件工程导论》7第三代语言(高级语言)高级语言是面向用户的、基本上独立于计算机种类和结构的语言。形式上接近于算术语言和自然语言,概念上接近于人们通常使用的概念。一个命令可以代替几条、几十条甚至几百条汇编语言的指令。优点:易学易用,通用性强,应用广泛。高级语言种类繁多,我们可以从应用特点和对客观系统的描述两个方面对其进一步分类。第5章软件的编码与测试《软件工程导论》8从应用角度分类基础语言:也称通用语言。历史悠久,流传很广,有大量的已开发的软件库,拥有众多的用户,为人们所熟悉和接受。如:FORTRAN、COBOL、BASIC、ALGOL等。结构化语言:直接支持结构化的控制结构,具有很强的过程结构和数据结构能力。如:PASCAL、C、Ada。专用语言:是为某种特殊应用而专门设计的语言,通常具有特殊的语法形式。应用比较广泛的有:APL语言、FORTH语言、LISP语言。第5章软件的编码与测试《软件工程导论》9从客观系统的描述分类面向过程语言:其程序设计范式:“数据结构+算法”前面所介绍的程序设计语言都属此类。面向对象语言:其程序设计范式:“对象+消息”如:Delphi、VisualBasic、Java、C++等。第5章软件的编码与测试《软件工程导论》10第四代语言(简称4GL)4GL是非过程化语言,编码时只需说明“做什么”,不需描述算法细节。两个典型应用:数据库查询和应用程序生成器是4GL的。数据库查询语言(SQL)可以对数据库中的信息进行复杂的操作。用户只需将要查找的内容在什么地方、根据什么条件进行查找等信息告诉SQL,SQL将自动完成查找过程。应用程序生成器则是根据用户的需求“自动生成”满足需求的高级语言程序。第5章软件的编码与测试《软件工程导论》11第四代语言(简称4GL)真正的4GL应该说还没有出现。目前,所谓的4GL大多是指基于某种语言环境上具有4GL特征的软件工具产品,如SystemZ、PowerBuilder、FOCUS等。面向应用,为最终用户设计的一类程序设计语言。优点:缩短应用开发过程、降低维护代价、最大程度地减少调试过程中出现的问题、对用户友好等。第5章软件的编码与测试《软件工程导论》125.2.2程序设计语言的选择在编码之前应选好适当的语言,持别是在大型软件的开发中更不能只局限于使用自己所熟悉的语言。一般情况下,程序设计语言的选择常从以下几个方面考虑:项目的应用领域、算法与计算的复杂性、数据结构的复杂性、效率、可移植性、程序设计人员的水平、构造系统的模式等第5章软件的编码与测试《软件工程导论》135.3编码风格所谓编码风格即书写源程序的习惯。从软件工程要求出发,程序设计风格包括如下要求:使用好程序内部的文档;数据说明原则;语句结构的规则;输入、输出规则;高效率的原则。第5章软件的编码与测试《软件工程导论》145.3.1使用好程序内部的文档软件=程序十文档为了提高程序的可维护性,源代码也需要实现“文档化”。内部文档的组织包括:标识符命名:具有鲜明的意义,能够提示程序对象代表的实体。程序代码的视觉组织:逻辑结构清晰,层次分明(空格、空行、缩进)。程序内部的注释:序言性注释和功能性注释第5章软件的编码与测试《软件工程导论》155.3.2数据说明原则一般而言,数据说明应遵循三个原则。(1)数据说明的次序应当规范化,使数据属性容易查找,有利于测试、排错和维护;(2)当多个变量名用一个语句说明时,应当对这些变量按字母的顺序排列;(3)如果设计了一个复杂的数据结构,应当使用注释,说明这个数据结构的固有特点。第5章软件的编码与测试《软件工程导论》165.3.3语句结构的规则(1)语句结构应遵从如下规则:一行内只写一条语句,并采用适当的缩进格式;不要刻意追求技巧性,使程序编写得过于紧凑;要简单、清楚,直截了当地说明程序员的用意;除非对效率有特殊的要求,程序编写要做到清晰第一,效率第二;首先保证程序正确,然后才要求提高速度;让编译程序作简单的优化;尽可能使用库函数;避免使用临时变量而使可读性下降;尽量用公共过程或子程序代替重复的功能代码段;多使用括号以使表达式运算顺序清晰;第5章软件的编码与测试《软件工程导论》175.3.3语句结构的规则(2)避免不必要的转移;用逻辑表达式代替分支嵌套;避免使用空的ELSE语句和IF…THENIF…语句;避免使用ELSEGOTO和ELSERETURN结构;使与判定相联系的动作尽可能地紧跟着判定;避免采用过于复杂的条件测试;尽量减少使用“否定”条件的条件语句;避免过多使用循环嵌套和条件嵌套;不要使GOTO语句相互交叉;对递归定义的数据结构尽量使用递归过程。第5章软件的编码与测试《软件工程导论》185.3.4输入、输出规则对所有的输入数据进行检验,从而识别错误的输入,以保证每个数据的有效性;检查输入项的各种重要组合的合理性;输入的步骤和操作尽可能简单;输入数据时,允许使用自由格式输入;应允许缺省值;一批数据输入时,最好使用输入结束标志;输入/输出交叉时,要在屏幕上使用提示信息;应保持输入格式与输入语句要求的一致性;给所有的输出加注释,并设计输出报表格式。第5章软件的编码与测试《软件工程导论》195.3.5高效率的原则运行效率:占用的处理机时间和存储空间可以从以下三个方面着手:提高程序运行效率;程序编码使程序运行高效提高存储器效率;占用存储单元小,要求存取的时间短提高输入/输出效率。第5章软件的编码与测试《软件工程导论》205.4软件测试软件测试,是为了发现错误而执行程序的过程。是对需求分析、设计和编码三个阶段进行的最终复审。软件测试在软件生存周期中横跨两阶段:编码阶段(单元测试)测试阶段(各种综合测试)测试只能找出程序中的错误,但在未发现错误时,并不能证明程序中没有错误。第5章软件的编码与测试《软件工程导论》215.4.1软件测试目标仅就测试本身而言,软件测试的目标是以最少的时间和人力发现软件中潜在的各种错误和缺陷(尽量多的发现错误)。一个好的测试方案是极可能发现至今为止尚未发现的错误的测试方案。成功的测试是发现了至今为止尚未发现的错误的测试。发现错误并不是软件测试的最终目标。测试阶段的根本目标是尽可能多的发现并排除软件中潜藏的错误,最终把一个高质量的软件系统交给用户使用。第5章软件的编码与测试《软件工程导论》225.4.2软件测试的原则避免程序员检查自己的程序;软件测试应尽早地、不断的进行;软件测试不等于程序测试;充分认识错误的群集现象;测试用例应包括测试输入数据和与之对应的输出结果;测试用例的输入数据应包括合理的输入和不合理的输入;严格执行测试计划,避免测试的随意性。第5章软件的编码与测试《软件工程导论》235.4.3软件测试的方法软件测试可以分为人工测试和基于计算机的测试。基于计算机的测试有两种方法:黑盒测试把程序看成一个黑盒子,完全不考虑其内部结构和处理过程,只检查程序的功能是否符合它的需求规格说明。白盒测试把程序看成一个打开的盒子,测试人员对程序所有逻辑路径进行测试,在不同检查点输出结果,与预期的结果比较,确定程序是否有错。第5章软件的编码与测试《软件工程导论》24黑盒测试黑盒测试是在软件的接口处进行的,一方面看其是否能对合法的数据得出正确的结果,另一方面看它是否能对非法的数据进行正确的处理。黑盒测试法不能测试所有可能情况(一个例子)。黑盒测试是一种宏观功能上的测试,该方法适合测试部门的测试人员或用户。随着软件生产的组装技术的发展,黑盒测试方法会越来越普及。第5章软件的编码与测试《软件工程导论》25一个例子(黑盒测试)假设一个程序P有输入量X和Y及输出量Z。在字长为32位的计算机上运行。若X、Y取整数,按黑盒方法进行穷举测试,可能采用的测试数据组:232×232=264如果测试一组数据需要1毫秒,一年工作365×24小时完成所有测试需5亿年。第5章软件的编码与测试《软件工程导论》26白盒测试白盒测试是对程序内部执行路径进行的。穷尽测试(程序中每条可能的通路至少都应该执行一次)是不可能的。(一个例子)白盒测试是一种程序级的微观上的测试,适合于很小单元的测试,以及从事软件底层工作、生产构件的测试人员进行的测试。无论是黑盒测试还是白盒测试,都不可能进行完全测试,因此通过测试并不能证明程序是正确的。在实际应用中,常常采用白盒测试和黑盒测试相结合的方法,对软件进行有限的测试。第5章软件的编码与测试《软件工程导论》27一个例子(白盒测试)它包括了一个执行20次的循环,不同执行路径数达520条,如果对每一条路径进行测试需要1毫秒,假定一年工作365×24小时,要想把所有路径测试完,需3170年。第5章软件的编码与测试《软件工程导论》285.4.4软件测试的过程可见,测试过程需要三类输入:软件配置:包括软件需求规格说明、软件设计规格说明、源程序代码等;测试配置:包括测试计划、测试用例等。测试工具:为了提高软件测试效率,减轻测试过程中手工劳动,可使用一些专门的测试工具。如测试数据自动生成测试结果分析程序、驱动测试的测试数据库等。第5章软件的编码与测试《软件工程导论》295.4.5软件测试与开发各阶段的关系软件开发过程是一个自顶向下,逐步细化的过程,而软件测试过程则是按相反的顺序自底向上,逐步集成的过程:第5章软件的编码与测试《软件工程导论》305.5测试用例的设计不同的测试用例发现程序错误的能力有很大的差别。为了提高测试效率降低测试成本,应该精心选择测试用例。因为不可能进行穷尽测试,所以,应该选用少量“最有效的”测试用例,尽可能做到完备测试。第5章软件的编码与测试《软件工程导论》315.5.1逻辑覆盖属于白盒测试方法是以程序内部的逻辑结构为基础是对一系列测试过程总称,这组测试过程按照越来越完全的程度进行路径的测试。

1 / 68
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功