编码监理
软件编码监理的主要目的是为了控制软件编码阶段的工程进度,监督软件编码的编程风格和质量,使得软件编码阶段的工作能可靠、高效地实现软件设计的目标,同时符合承建单位的软件过程规范的要求。
一、软件编码监理的目标
1)监督承建单位定义和综合软件编码任务,并在生产软件的过程中始终如一地执行这些任务。
2)监督使得软件工作产品彼此间保持一致性。
3)监督使得软件编码的工作进度与计划保持一致性。
4)监督使得软件编码的工作质量达到计划的要求。
二、软件编码监理的活动
1)监督承建单位将合适的软件编码工程方法和工具集成到项目定义的软件过程中。
(1)依据项目定义的软件过程对软件编码任务进行综合。
(2)选择软件编码可用的方法和工具,并将选择专用工具或方法的理由写成文档。对备选方法和工具进行选择的依据是:
● 机构标准软件过程
● 项目定义的软件过程
● 现有的技术基础
● 可得到的培训
● 合同需求
● 工具的能力
● 使用的方便性和提供的服务
(3)选择和使用适合于软件编码的配置管理模型。配置管理模型可能是:
● 入库出库模型
● 组合模型
● 事务处理模型
● 更改处理模型
(4)将用于软件编码的软件产品和工具置于配置管理之下。
2)监督承建单位依据项目定义的软件过程,对软件编码进行开发、维护、建立文档和验证,以实现软件需求和软件设计。
(1)参与软件编码的人员评审软件需求和软件设计,以确保影响编码的各种问题得到识别和解决。
(2)使用有效的编程方法编制软件代码。编程方法可能是:
● 结构化编程
● 代码重用
(3)根据一个计划制定代码单元的开发顺序,该计划考虑诸如关键性、难度、集成和测试问题;合适时,还要考虑客户和最终用户的需要。
(4)每个代码单元完成编码时,通过评审和单元测试。
(5)将代码置于配置管理之下
(6)每当软件需求或软件设计更改时,适当地更改代码。
3)软件监理组跟踪和记录软件编码产品的功能性和质量。跟踪和记录的内容有:
(1)跟踪、累计的软件编码产品缺陷的数量、类型和严重程度
(2)软件编码产品工程活动的状态
(3)有关问题严重性和持续时间的报告
(4)用于分析每个更改建议的工作量及汇总统计量
(5)按类别(如界面、安全性、系统配置、性能和可用性)被纳入软件基线的更改数量
三、软件编码监理的方法
1)定期审查软件编码的工程活动和工程进度。
2)根据实际需要对软件编码工程活动、工作进度进行审查。
3)对软件编码工程活动和产品进行评审和(或)审核,并报告结果。这些评审和(或)审核至少应包括:
● 软件编码工程任务的准备就绪和完成准则得到满足。
● 软件编码符合规定的标准和需求。
● 已完成所需的测试。
● 检测出的问题和缺陷已建立文档,并被跟踪和处理。
● 通过软件编码,对设计的跟踪得以实施。
● 在软件产品提交前,依据软件基线验证了用来管理和维护软件的文档。
四、软件编码走查的监理
程序实际上也是一种供人阅读的文章,有一个文章的风格问题。应该使程序具有良好的风格。表现在:源程序文档化,数据说明的方法,语句结构和输入/输出方法。所以在进行编码监理时重点从一下几个方面把握:
1)源程序文档化
(1)符号名的命名
符号名即标识符,包括模块名、变量名、常量名、标号名、子程序名、数据区名以及缓冲区名等等。这些名字应能反映它所代表的实际东西,应有一定实际意义。例如,表示次数的量用Times,表示总量的用Total,表示平均值的用Average,表示和的量用Sum等等。
名字不是越长越好,应当选择精炼的意义明确的名字。必要时可使用缩写名字,但这时要注意缩写规则要一致,并且要给每一个名字加注释。同时,在一个程序中,一个变量只应用于一种用途。
(2)程序的注释
夹在程序中的注释是程序员与日后的程序读者之间通信的重要手段。注释决不是可有可无的。一些正规的程序文本中,注释行的数量占到整个源程序的1/3到1/2,甚至更多。注释分为序言性注释和功能性注释。
序言性注释通常置于每个程序模块的开头部分,它应当给出程序的整体说明,对于理解程序本身具有引导作用。有些软件开发部门对序言性注释做了明确而严格的规定,要求程序编制者逐项列出。有关项目包括:程序标题;有关本模块功能和目的的说明;主要算法;接口说明:包括调用形式,参数描述,子程序清单;有关数据描述:重要的变量及其用途,约束或限制条件,以及其它有关信息;模块位置:在哪一个源文件中,或隶属于哪一个软件包;开发简历:模块设计者,复审者,复审日期,修改日期及有关说明等。
功能性注释嵌在源程序体中,用以描述其后的语句或程序段是在做什么工作,或是执行了下面的语句会怎么样。而不要解释下面怎么做。要点:描述一段程序,而不是每一个语句;用缩进和空行,使程序与注释容易区别;注释要正确
(3)标准的书写格式
视觉组织用空格、空行和移行来实现。恰当地利用空格,可以突出运算的优先性,减少发生编码的错误;自然的程序段之间可用空行隔开;移行也叫做向右缩格。它是指程序中的各行不必都在左端对齐,都从第一格起排列,这样做使程序完全分不清层次关系。对于选择语句和循环语句,把其中的程序段语句向右做阶梯式移行。使程序的逻辑结构更加清晰。
2)数据说明
在设计阶段已经确定了数据结构的组织及其复杂性。在编写程序时,则需要注意数据说明的风格。为了使程序中数据说明更易于理解和维护,必须注意以下几点。
(1)数据说明的次序应当规范化
数据说明次序规范化,使数据属性容易查找,也有利于测试,排错和维护。原则上,数据说明的次序与语法无关,其次序是任意的。但出于阅读、理解和维护的需要,最好使其规范化,使说明的先后次序固定。
(2)说明语句中变量安排有序化
当多个变量名在一个说明语句中说明时,应当对这些变量按字母的顺序排列。带标号的全程数据也应当按字母的顺序排列。
(3)使用注释说明复杂数据结构
如果设计了一个复杂的数据结构,应当使用注释来说明在程序实现时这个数据结构的固有特点。
(4)语句结构
在设计阶段确定了软件的逻辑流结构,但构造单个语句则是编码阶段的任务。语句构造力求简单、直接,不能为了片面追求效率而使语句复杂化。
比如:在一行内只写一条语句;程序编写首先应当考虑清晰性;程序要能直截了当地说明程序员的用意;除非对效率有特殊的要求,程序编写要做到清晰第一,效率第二,不要为了追求效率而丧失了清晰性;首先要保证程序正确,然后才要求提高速度,反过来说,在使程序高速运行时,首先要保证它是正确的;避免使用临时变量而使可读性下降;让编译程序做简单的优化;尽可能使用库函数;避免不必要的转移;尽量采用基本的控制结构来编写程序;避免采用过于复杂的条件测试;尽量减少使用“否定”条件的条件语句;尽可能用通俗易懂的伪码来描述程序的流程,然后再翻译成必须使用的语言;数据结构要有利于程序的简化;程序要模块化,使模块功能尽可能单一化,模块间的耦合能够清晰可见;利用信息隐蔽,确保每一个模块的独立性;从数据出发去构造程序;不要修补不好的程序,要重新编写。
3)输入和输出
输入和输出信息是与用户的使用直接相关的。输入和输出的方式和格式应当尽可能方便用户的使用。一定要避免因设计不当给用户带来的麻烦。因此,在软件需求分析阶段和设计阶段,就应基本确定输入和输出的风格。系统能否被用户接受,有时就取决于输入和输出的风格。输入/输出风格还受到许多其它因素的影响。如输入/输出设备(例如终端的类型,图形设备,数字化转换设备等)、用户的熟练程度、以及通信环境等。不论是批处理的输入/输出方式,还是交互式的输入/输出方式,在设计和程序编码时都应考虑下列原则:
(1)对所有的输入数据都要进行检验,识别错误的输入,以保证每个数据的有效性;
(2)检查输入项的各种重要组合的合理性,必要时报告输入状态信息;
(3)使得输入的步骤和操作尽可能简单,并保持简单的输入格式;
(4)输入数据时,应允许使用自由格式输入;
(5)应允许缺省值;
(6)输入一批数据时,最好使用输入结束标志,而不要由用户指定输入数据数目;
(7)在交互式输入时,要在屏幕上使用提示符明确提示交互输入的请求,指明可使用选择项的种类和取值范围。同时,在数据输入的过程中和输入结束时,也要在屏幕上给出状态信息;
(8)当程序设计语言对输入/输出格式有严格要求时,应保持输入格式与输入语句的要求的一致性;
(9)给所有的输出加注解,并设计输出报表格式。
测试监理
目前国内信息ERP应用系统建设过程中,在此阶段常发生未经过严格系统测试就匆忙上线试运行的情况,这往往会造成不稳定的新系统对实际工作环境的影响,在某些情况下会阻碍系统的正式上线运行。
因此监理单位在此阶段主要检查承建单位是否按照设计中制定的规范与计划进行测试。但切忌由监理单位进行单元、集成或确认测试而取代开发方的内部测试,这种方法并不能保证工程的质量。
如果监理单位具有丰富的测试工作资质与经验,可以考虑在此阶段由监理方在业主单位、承建单位的配合下具体进行系统测试工作。由于监理单位对工程建设启动阶段、需求分析阶段、设计阶段、实现阶段的工作有深入的了解,由监理单位进行系统测试工作往往能够得到较好的效果。
一、软件测试监理的目标
1)监督和控制承建单位的软件测试过程,确保软件测试按照承建单位的测试文档规范和业主的软件要求实施;
2)软件测试反映出、记录着软件产品的真实情况;
3)软件测试的各个阶段按计划步骤实施;
4)对于软件测试反映出的问题能有效地按回归测试规范进行处理;
5)最后得到符合软件任务书(或合同)要求的软件产品集;
6)软件测试的进度与计划保持一致性。
二、软件测试监理的活动
1)监督承建单位将合适的软件测试工程方法和工具集成到项目定义的软件过程中。
(1)依据项目定义的软件过程对软件测试任务进行综合。
(2)选择软件测试可用的方法和工具,并将选择专用工具或方法的理由写成文档。对备选方法和工具进行选择的依据是:
● 机构标准软件过程
● 项目定义的软件过程
● 现有的技术基础
● 可得到的培训
● 合同需求
● 工具的能力
● 使用的方便性和提供的服务
(3)选择和使用适合于软件测试的配置管理模型。配置管理模型可能是:
● 入库出库模型
● 组合模型
● 事务处理模型
● 更改处理模型
(4)将用于测试软件产品的工具置于配置管理之下。
2)监督承建单位依据项目定义的软件过程,对软件测试进行开发、维护、建立文档和验证,以满足软件测试计划要求。软件测试由静态测试、单元测试、集成测试、确认测试和系统测试组成。
(1)可以客户和最终用户一同参与开发和评审测试准则。
(2)使用有效方法测试软件。
(3)基于下列因素确定测试的充分性:
● 测试级别。测试级别有:单元测试、集成测试、确认测试和系统测试。
● 选择的测试策略。测试策略有:功能测试(黑盒测试)、结构测试(白盒测试)和统计测试。
● 欲达到的测试覆盖。测试覆盖方法有:语句覆盖、路径覆盖、分支覆盖和运行剖面覆盖。
(4)对每个级别的软件测试,建立和使用测试准备就绪准则。确定测试准备就绪准则包括:
● 软件单元在进入集成测试前已成功地完成了代码的静态测试和单元测试
● 在进入系统测试前,软件已成功地完成了确认测试
● 在软件进入系统测试前,已对测试准备就绪进行评审
(5)每当被测试软件或软件环境发生变化时,则在各有关的测试级别上适当进行回归测试。
(6)对于测试计划、测试规程和测试用例,准备使用前通过评审
(7)管理和控制测试计划、测试说明、测试规程和测试用例。
(8)每当软件需求、软件设计或被测试代码更改时,适当地更改测试计划、测试说明、测试规程和测试用例。
3)监督承建单位依据项目定义的软件过程,计划和实施软件的确认测试。
(1)基于软件开发计划,制定确认测试计划并写成文档。
(2)负责软件需求、软件设计、系统测试及验收测试的人员,评审确认测试用例、测试说明和测试规程。
(3)依据指定的软件需求文档和软件设计文档的指定版本,进行软件确认测试。
4)计划和实施软件系统测试,实施系统测试以保证软件满足软件需求。
(1)尽早分配测试软件的资源,以做好充分的测试准备。所需的测试准备活动包括:
● 准备测试文档
● 准备测试资源
● 开发测试程序
● 开发模拟程序
(2)编制系统测试的计划文档,如果合适,该测试计划由业主单位进行评审和认可。此测试计划包括:
● 全面测试和验证的方法
● 测试职责
● 测试工具、测试设备和测试支持需求
● 验收准则
(3)由一个独立于软件开发者的测试小组来计划和准备所需的测试用例和测试规程。
(4)在测试开始前,对测试用例建立文档,并经评审和认可。
(5)依据已纳入基线的软件及其软件任务书(或合同)和软件需求文档,实施软件测试。
(6)对测试中发现的问题建立文档,并跟踪到关闭。
(7)建立测试结果文档,并以此作为判断软件是否满足需求的基础。
(8)管理和控制测试结果。
5)软件监理组跟踪和记录软件测试的结果。跟踪和记录的内容有:
(1)跟踪、累计的软件产品缺陷的数量、类型和严重程度
(2)软件测试工程活动的状态
(3)有关问题严重性和持续时间的报告
(4)用于分析每个更改建议的工作量及汇总统计量
(5)按类别(如界面、安全性、系统配置、性能和可用性)被纳入软件基线的更改数量
三、软件测试监理的方法
1)定期审查软件测试的工程活动和工作进度。
2)根据实际需要对软件测试工程活动进行跟踪、审查和评估。
3)对软件测试工程活动和产品进行评审和(或)审核,并报告结果。这些评审和(或)审核至少应包括:
● 软件测试工程任务的准备就绪和完成准则得到满足。
● 软件测试符合规定的标准和需求。
● 已完成所需的测试。
● 检测出的问题和缺陷已建立文档,并被跟踪和处理。
● 通过软件测试,软件产品符合软件需求的要求。
● 在软件产品提交前,依据软件基线验证了用来管理和维护软件的文档。
本文出自seven的测试人生公众号最新内容请见作者的GitHub页:http://qaseven.github.io/