技术背景
十几年前,随着IT产业的崛起以及计算机技术和产品对其他传统行业的冲击和渗透,从中产生了一个新生分支——嵌入式软件系统。这一新兴技术很快被其他行业所接受和应用,并从中取得了卓越的成就,比较典型的如航空航天、医疗器械、移动信息、工业控制等等。
国内这一行业的发展则更具规律。在过去的十几年中,软件企业或研究机构都是在探究和尝试各种方法来改进嵌入式开发环境,以期望能够得到一种模式来保障软件开发的质量。可以说经过十几年的发展,我们的软件开发流程以基本成熟和完善——实现了“开发流程的软件工程化”。尽管近年来,国内也越来越重视“软件测试工程化”的发展,但是由于各方面原因,软件测试长期以来却一直被当作软件开发中的一个“附属品”,而没有真正的实现工程化。好处是,我们的软件终于被测试了;坏处则是:这样被动的测试其实对我们软件质量的提高并没有实质性的改变,却浪费了大量的人力物力。
2源代码分析技术
软件测试领域里面有一句大家非常熟知的话,即软件测试越早的介入到软件开发中,则越能尽早的发现软件的缺陷,那么也就能够更早更多的降低软件后续的维护成本。尽管这一道理早已被广泛传播,却很少被应用于实际中,软件开发过程中,插入测试,在很多人看来这无异于捣乱,会大大降低开发者的效率。且长期以来,软件测试一直被认为是测试人员的工作,与开发人员没有关系,开发人员只要写代码就可以了。不能说这一想法是错误的,只不过有些事情只要稍微改变一下,就可能会使事情得到一个更为良好的结果。
我们不期望让开发人员去对自己的代码进行更为复杂的单元测试,虽然这是验证代码是否正确工作的最有效手段,但是却能够让开发人员进行快速的代码走查或缺陷检测——源代码分析。源代码分析是一种不需要测试用例,完全自动化且能够适用于嵌入式软件开发的各个重要阶段的缺陷检查方案,其特点是:能提供更具有价值的分析结果,分析速度快,Bug定位准确(如内存及资源管理缺陷、缓冲区溢出、内存泄露、空指针的使用等等),可覆盖所有执行路径等。所以,与其让它作为测试人员的一款流程化工具,倒不如使其为开发人员所用,以带来更大的价值。
测试人员在使用源代码分析技术时,其面对繁重的工作量,更多的是进行机械的记录,而不是对于缺陷规则的深入理解。因为测试人员一般不涉及代码编写,所以也就不会在意那些经过多少专家想破脑袋才制定出来的安全准则。他们更多的是北京中科医院怎么样北京中科医院怎么样