实施阶段是内部控制从物理模型向具有实际功能、意义的控制系统进行转变的过程,具体包括两个主要阶段:实现阶段和测试阶段。
测试阶段是实施过程非常重要的阶段,测试主体与实现主体不同,不仅包括测试人员、部分设计者、建设者,有时还需要使用者的加入,同时,测试人员一般在需求分析阶段就已经进行测试,贯穿系统的设计、实现和验收整个建设周期,在投入使用后,还需进行定期和非定期的检测评估。
为突出测试阶段的重要性,工程学往往将其作为单独一个阶段,笔者认为,测试是实施的有机组成部分,是系统正式投入使用的必不可少的验证阶段,系统在执行完测试后,才能进行文档的编写、系统的总结、验收、决算等。但测试阶段确实与实现阶段的人员、目的、方法等有许多不同,因此,本文在实施阶段的方法、管理中主要介绍实现阶段的内容,将测试阶段的部分内容如测试的目的、原则、分类、方法、报告等作为实施阶段章节中的一小节单独阐述。
4.4.1 实施的过程
实施是根据设计说明书(包括概要设计说明书、详细设计说明书),以及设计阶段产生的相关管理文档,经过实现过程,编写内部控制系统说明、测试报告、验收报告等。
系统实施阶段是具体实现内部控制系统物理模型的阶段。在这一阶段,将分析与设计的结果结合××公司的具体环境转换为具有实际功效的内部控制系统。根据分析和设计的方案,对采购支付内部控制系统涉及的人员进行配置、分权、授权、培训,对其业务流、信息流、资金流等流程进行调整。在实现分析和设计的意图后,还要进行测试,尽可能地发现错误,再加以调整和改正,然后编写系统说明,包括规章制度、管理规范、流程说明等,对系统进行详细讲解,为今后的维护和升级提供保障。最终得到一个可靠、有效的内部控制系统。
系统实施阶段的工作包括:系统实现、测试调整和其他工作。
(1)系统实现:
根据设计说明书,结合企业实际情况,由实施人员对内部控制系统的控制主体、控制客体进行规范、培训甚至改造,最终形成具有实际功效、安全可靠运行的内部控制系统。
(2)测试调整:
系统是否正确、能否达到预定目标,需要经过测试和调整。测试是发现系统中潜藏的错误。调整是明确找出错误并加以改正。测试一般分为三步:单元测试、集成测试和运行测试。
单元测试是以结构化分析阶段划分的小系统为测试对象,侧重于发现模块内部缺陷、遗漏和重叠。
集成测试是在单元测试的基础上对系统整体进行测试,着重于检测子系统间的沟通的准确性和效率性,以保证子系统在集成后相互影响是正面的、牵制和协作是有效的。
运行测试是在经历了单元测试和继承测试后,在系统的试运行阶段进行测试,在这个阶段,测试评估人员独立客观的观察和评审系统运行情况,及时发现和改进实际运行时出现的问题。
(3)其他工作:
在完成上述两个阶段的工作后,大型的、复杂的内部控制系统还需进行一系列完善工作,以利于经验的总结、系统今后的维护、改造等。主要工作包括:系统说明,包括开发性文档和实用性文档;编制项目开发总结报告和完工报告;进行完工决算和验收评估等。
4.4.2 实现的管理过程
实现管理的任务是落实设计方案,在落实的过程中不断进行修正并准确地记录,最终使内部控制系统高效准确地运行。方案实施时的成本、进度、沟通在预想的范围内。实现管理主要分三个阶段,即方案落实、实现评估、实现变更。
(1)方案落实:
结合实际条件,将设计方案具体落实,确定每项措施和业务的控制主体、控制客体、控制手段。
(2)实现评估:
在落实过程中,要及时对落实的情况进行评估,以使错误尽早被发现,损失降到最小,实现评估的方式往往是自查,由实施者和使用者根据实现的条件是否满足,评估实现的成功率、控制的强弱、风险发生的可能,及时改进方案,由于这种评估不是第三方执行的,往往自查后即时进行修改,因此,记录和跟踪变化相关工作并未成为单独的工作任务。
(3)实现变更:
由于实际环境、条件的变化或约束或者是突发事件,特别是实施过程中人员抵制,会发现有些方案难以实现,要及时做出调整和变更,实施变更可能会发生在各部门或岗位,根据情况对环境、人员进行调整或对方案进行调整,其中对方案的调整会引起需求和设计的变更,需遵照规定的变更流程进行,变更的需求和变更的过程都需要进行跟踪,对需求分析和设计的变更也要严格遵循相关的变更流程执行。
4.4.3 评估测试
测试是保证系统质量、及时发现和纠正系统错误的关键步骤,通常在每个阶段(如分析、设计、实施)、每个子系统完成后就要进行必要的测试(称为单元测试),在系统投入运行前,要进行详尽的综合测试,即集成测试,制定完备的计划,从多角度进行,是系统建设完成后执行验收工作时必要的任务,评估系统的实际效果与合同、立项书、设计方案的差异与实现程度,从而决定系统是否正式投入使用,验收阶段的评估测试是最全面和重要的测试。
(1)测试概述。
①测试的目的:
(a)主要目的是发现错误而不是验证系统的正确。
(b)测试用例的设计在于发现尚未发现的错误。
(c)成功的测试是发现了尚未发现的错误。
②测试的原则:
(a)尽早地和不断地进行测试。
(b)测试应由独立的第三方进行,尽量避免开发者或建设者自己进行。
(c)测试用例应包括合理的和不合理的输入。
(d)制定测试计划,避免和排除测试的随意性。
(e)全面检查每一次的测试结果。
(f)妥善保存测试计划、测试用例、测试结果。
③测试的分类:
测试从不同视角进行观察和划分,可以做出不同的分类:
(a)按测试方法不同可以分为动态测试和静态测试。
动态测试:是在系统的运行过程中进行测试工作,即测试人员通过使用系统来找出缺陷。
静态测试:通过对系统的观察分析进行测试工作,包括对系统需求报告、设计文档、实施记录进行阅读和分析,对规章制度、管理章程、岗位设置要求进行考察和思考。
(b)按测试目的不同可以分为通过测试和失败测试:
通过测试:验证系统能做什么,设计通过测试的案例时采用最普通的例子,用来证明系统实现了某个功能。
失败测试:验证系统在某一条件下,是否会出现异常及补救措施是否有效,如假设串通、舞弊出现在系统中时,系统的状况、对策。失败测试的指导思想是找出系统的薄弱环节,蓄意制造错误,评估系统的健壮性和补救措施的及时有效性。
(c)按测试的侧重点的不同可以分为易用性测试、效率性测试和回归测试等:
易用性测试:易用性测试目的很明确,是检验系统能否快速准确地被参与者接受,涉及范围较广,包括控制主体、控制客体、客户、控制工具、升级更新时新的建设者能否较快开展工作等。
效率性测试:检测新系统是否给业务的进行和展开造成障碍,是系统成本效益的重要考虑因素。
回归测试:在系统修改后,重新进行已经进行过的测试,以保证修改的正确性,为此目的进行的测试工作称为回归测试。
(d)按测试主体的不同可以分为Alpha测试和Beta测试:
Alpha测试:也称受控测试,是建设者从使用者的角度进行测试,可以是使用者在建设者或测试者在场的情况下使用系统,也可以由建设者充当使用者的角色,但测试人员不能充当,只能作为观察者,主要是保证系统在正式使用前,从使用者的角度尽量发现潜在的问题和错误。
Beta测试:试用测试,将系统的测试版交给使用者,由他们从客户的角度出发,在实际环境中测试系统,没有建设人员与测试人员指导,建设者在搜集使用者的反馈信息后,对测试版进行改进,改进后再由测试人员进行回归测试,最后,再向使用者交付正式版本。
(2)测试报告。
测试报告用来对测试结果进行分析说明,经过测试后,证实系统具有的能力以及它的缺陷和限制,并给出结论性的意见,这些意见既是系统性能、质量的评价,又是决定系统能否正式投入运行的依据。测试报告应包括如下内容:
①测试时间:注明测试何时进行,在系统的哪个阶段进行。
②测试地点:说明测试在什么地方进行。
③测试目的:决定了测试的重点、角度和评判指标。
④测试背景:系统的情况介绍,包括待测系统的目的、功能、特点、组成以及测试时系统的完工程度及待完善的部分、目前不需要检测的环节即测试的范围等。
⑤测试方法概述:在测试过程中的指导思想和所采用的方法,首先简述测试的准备包括环境和测试用例,其次阐明测试如何进行,针对性如何,最后,需阐明测试结果的可能及评价标准等,以提前为独立客观的评价实测结果做准备,以防止最终评价测试结果时感情干扰。
⑥测试过程:详述测试的进程、步骤,对测试过程中发现的用例遗漏及时做出调整和补充,并在管理文档中标明。
⑦测试结果和评价:客观记录测试结果,列出系统的强项和弱项,评价系统的优劣。最后,测试组成员签字。