
主要有四个步骤。
1、了解企业的内部控制情况,并做出相应的记录。这是内部控制制度审计的第一步,其主要目的是通过一定手段,了解被审计单位已经建立的内部控制制度及执行的情况,并做出记录、描述。审计人员应考虑被审计单位经营规模及业务复杂程度、数据处理系统类型及复杂程度、审计重要性、相关内部控制类型、相关内部控制汜录方式、固有风险的评估结果等因素,对内部控制的程序、控制环境、会计系统采取有效的方法进行审计,主要方法包括:(1)查阅前期审计报告或审计工作底稿;(2)询问被审计单位有关人员,并查阅相关内部控制文件;(3)检查内部控制生成的文件和记录; (4)观察被审计单位的业务活动和内部控制的运行情况:(5)选择若干具有代表性的交易和事项进行“穿行测试”。通过查阅复核以前的审汁情况,可以了解以前审计时所发现的问题产生的原因以及是否已得到纠正和改进,通过查阅相关规章制度、方针及政策等文件,查看组织机构系统图,和相关人员交谈对内部控制获得足够的了解,以便进行程序设计和制定运用方案。
2、初步评价内部控制的健全性。确认内部控制风险,确定内部控制是否可依赖。在对控制环境、控制程序和会计系统进行调查了解,对被审计单位内部控制有了一个初步的认识的基础上,应对内部控制风险和内部控制的可依赖程度做出初步评价。初步评价实际上就是评价企业会计与内部控制在防止或发现和纠正错弊中的有效性的过程,通常出现以下情况之一时,应将重要账户或交易类别的某些或全部认定的控制风险评估为高水平:(1)企业内部控制失效;(2)难以对内部控制的有效性做出评价;(3)不拟进行符合性测试。对某项会计报表认定而言,如果同时出现以下情况,则不应评价其控制风险处于高水平。(1)相关内部控制可能防止或发现和纠正重大错弊,(2)拟进行符合性测试。
3、实施符合性测试程序,证实有关内部控制的设计和执行的效果。
通过对内部控制进行初步评价,可基本掌握被审计单位内部控制的强弱环节,为进行符合性测试确定一个前提。审计人员只对那些准备信赖的内部控制执行符合测试,并且只有当信赖内部控制而减少的实质性测试的工作量大于符合性测试的工作量时,符合性测试才是必要和经济的。符合性测试是为了确定内部控制制度的设计和执行是否有效而实施的审计程序。其基本对象包括控制设计测试和控制执行测试,控制设计测试是测试被审计单位控制政策和程序是否设计合理、适当,能否防止或发现和纠正特定会计报表认定的重大错报或漏报:控制执行测试是测试被审计单位的控制政策和程序是否实际发挥作用。被审计单位的控制设计的再好,还必须靠有效的执行来发挥作用。
内部控制符合性测试常用的方法主要有四种:(1)询问法,审计人员为厂了解被审计单位各项业务 *** 作是否符合控制要求,而向有关人员询问某些内部控制和业务执行情况。例如,审计人员通过询问计算机管理人员,就可以知道未经授权的人员是否接触计算机文件、(2)观察法。审计人员亲临被审计单位的卜作现场,实地观察有关人员的实际厂作情况,以确定既定控制措施是否得到严格执行。如审计人员亲门到现场观察材料验收和入库情况,就可知道材料是否严格验收,并及时入库,库存材料是否有序摆放,是否安全存放。(3)证据检查法。审计人员抽取一定数量的账表、凭证等书面证据和其他有关证据,检查是否认真执行相关控制制度,以判断内部控制是否得到有效贯彻执行。如检查货款的支付是否有相关责任人和经办人的批准和签字,来判断实际工作中是否执行了批准控制程序。(4)重复执行法。审计人员就某项内部控制制度来按照被审计单位的业务程序全部或部分重做一次,以验证既定的控制措施是否被贯彻执行。
4、评价内部控制的强弱,评价控制风险,确定在内部控制薄弱的领域扩展审计程序,制定实质性审计方案。
通过以上步骤,审计人员会发现被审计单位内部控制制度是否建立、健全,哪些方面还存在薄弱环节,哪些内部控制制度得到了有效执行,哪些内部控制虽然建立但没有执行或执行不力,哪些内部控制是有效的,哪些内部控制是无效的。同时,就要对被审计单位的内部控制风险估计水平充分利用专业判断进行调整并做出综合评价,然后利用评价结果制定出实质性审计方案。综合评价的主要内容有:(1)内部控制有效实施,评价控制风险为低,规划仅对各项账户余额和交易进行有限的实质性测试。(2)重新调整内部控制的可依赖程度,制定出实质性审计諪.审计人员在经过内部控制测试后,若发现部分内部控制没有得到有效执行,就应对内部控制风险估计水平和可靠性重新进行调整。适当扩大实质性审计的范围。(3)针对内部控制的缺陷,确定实质性测试的时间、范围和程序。通过符合性测试,审计人员根据所掌握具体缺陷和不足,制定下一步实质性审计方案,其范围应涵盖在初步评价和符合性测试中发现的存在缺陷的内部控制内容。(4)就内部控制缺陷,向被审计单位管理当局提出改进建议。审计人员对在审计中发现的内部控制问题进行汇总、整理,分析问题产生的原因和可能带来的后果,提出有效的改进措施,以管理建议书的方式,反映给被审计单位管理部门.
软件测试员工作流程:软件测试分为以下几个阶段:1、测试需求分析阶段。
测试需求分析阶段主要工作是获得测试项目的测试需求(测试规格)。
输出产物:《可测试性需求说明书》和《测试规格》
2、测试计划阶段。
以测试需求为基础,分析产品的总体测试策略。
输出产物:《产品总体测试策略》
3、测试方案设计阶段。
本阶段主要是以测试规格为基础获得特性测试方案,对于有自动化测试的项目,进行自动化测试的分析,获得测试策略。
输出产物:《产品或者版本总体测试方案》
4、测试用例实现阶段。
本阶段主要是完成各个特性的测试用例的编写和自动化脚本的编写。
输出产物:《产品自动化测试用例》和《手工执行测试用例》
5、测试执行阶段。
本阶段是根据测试策略开展测试执行和回归测试。
输出产品:《产品或版本测试报告》和《缺陷分析报告》
6、评估与关闭阶段。
只对前面的各个阶段的执行情况,完成对测试项目的关闭,同时提供完整的度量数据和项目总结报告。
输出产物:《遗留问题风险分析报告》、《度量分析报告》和《测试关闭报告》
你好!测试程序负责给编写好的程序提供样本数据,自动收集运行结果,并根据结果作出反馈。测试程序可以单独写,也可以做为模块整合在源程序中。
像我们熟知的debug语句,就是测试的最简单例子。在没有“断电查看”这一功能之前,为了监测程序每步执行后变量的结果,往往加入一些输出关键变量的语句。
例如以下程序:
#incldue<iostream>
using namespace std
#define DEBUG
int main(){
int n
#ifdef DEBUG
cout<<n<<endl
#endif
n = 3
cout<<n<<endl
return 0
}
此处DEBUG的作用是查看未初始化的变量n的值。通常会显示-89******00(0xcccccccc).
一般这样的语句还会出现在对指针进行 *** 作之后,用debug语句输出指针所指向内存的内容等。
这只是测试程序的一个功能。正如前面提到的,测试程序应该提供数据以检测程序的健壮性和安全性,以及用海量数据对执行效率进行检验等。
测试数据的选择有以下几个要点,分别检测程序的不同特性:
@ 尽可能包括输入集合内所有可能出现的元素,观察程序能否给出正确结果。(Authenticity)
比如:有一个程序输入给定迷宫平面图,要测试出最短路径长度。那么输入的迷宫应该包括各种可能:有通路的和没有通路的,有死胡同的和没有的,有回路的(避免搜索时出现死循环),出口在左上角,右上角的等,都要考虑进去。程序应该对每种情况都做出正确的反应。
@ 注意测试极端情况以及临界情况。(Security)
这是为了检测程序的健壮性,用户不可避免地会做出不合法的举动,程序需要有足够的防护强度来应对这些意外。
比如:如果编写了一个简易的计算器,那么一定要检查除数为0的情况;一个程序的功能是将一片文档的内容链接到另一个文档内,那么一定要检查自己链接自己的情况;等等。
@ 注意输入数据的规模以及随机性。(Efficiency)
衡量程序效率的标准应该考虑大规模数据下的表现。数据需要有足够的随机性以避免意外情况。
比如:比较几种不同排序算法的效率时,选用的数据应该是随机顺序的。在顺序数据的情况下:冒泡算法显然比快排还快,但这是偶然情况。
@ 如果有可能,还可以检测程序的通用性及扩展性(Versatility &Compatibility)
好的程序应该易于扩展,可利用价值高。大多数软件都在不停的打补丁,而不是推倒重写。
测试程序一般无法直接检测这两种特性。然而,测试中出现的错误有时可以帮助我们提升程序的质量。
我曾经写过一个类似于美图秀秀的图像处理程序,C++写的,相当粗糙。输入还要用命令行控制。当时我用各种图片进行了测试,包括纯色的,有明显背景色调的,以及完全混乱的噪声点。前面的图片表现都很好,但处理最后一张图片时程序抛出了异常——经过检验发现,我的处理程序是基于24位图片写的,而最后一张图片是32位的。类似的情况还有32位系统和64位系统下程序运行的问题等,在此就不赘述了。
要编写测试程序,一般分为两个模块:数据生成和结果检测。
测试程序的第一部分将生成的数据写入一个文件,让程序读取文件并运行后,再将结果写入另一个文件,之后由测试程序的第二部分比对输出文件和标准答案。
对于检测健壮性的测试程序,只需有第一部分即可,待检测程序在处理数据时如果发生异常,就根据结果作相应的修改。
测试效率的程序,可以在待检程序内加入计时模块。具体写法如下:
#include<ctime>
#define CHECK_TIME
int main(){
//....intput
#ifdef CHECK_TIME
clock t start = clock()
#endif
#ifdef CHECK_TIME
cout <<"Execution Time: " <<clock() - start <<" ms." <<endl
#endif
嗯,就是这么多啦,希望对你有帮助!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)