嵌入式的测试浅谈

合集下载

嵌入式软件自动化测试技术分析

嵌入式软件自动化测试技术分析

嵌入式软件自动化测试技术分析嵌入式软件自动化测试技术是指使用自动化工具和技术来实现对嵌入式软件进行测试的过程。

嵌入式软件是指嵌入在硬件设备中的软件系统,常见于电子产品、汽车、医疗设备等领域。

由于嵌入式软件的特殊性,传统的测试方法往往无法满足需求,因此需借助自动化测试技术来提高测试效率、减少测试成本。

1.测试框架和工具:嵌入式软件自动化测试需要使用一些测试框架和工具来辅助测试过程。

常见的测试框架有JUnit、TestNG等,它们提供了一系列的断言和测试运行机制。

还可以使用一些专门针对嵌入式软件的测试工具,如LDRA Testbed、VectorCAST等,它们具备更强的兼容性和适应性。

2.模拟器和仿真器:嵌入式软件往往需要在特定的硬件环境中运行,但对硬件的依赖性会增加测试的复杂度和成本。

为了解决这个问题,可以使用模拟器和仿真器来模拟硬件环境。

模拟器和仿真器是一种虚拟的硬件平台,可以在不真实硬件设备的情况下运行嵌入式软件,并对软件进行测试。

常见的模拟器和仿真器有QEMU、Gem5等。

3.持续集成和自动化构建:嵌入式软件通常需要在不同的平台和配置下进行测试,而手动进行这些测试会非常耗时且容易出错。

可以使用持续集成和自动化构建技术来实现自动化测试。

持续集成是指将代码库中的修改自动集成到主干代码中,并对整个系统进行测试和验证。

自动化构建是指自动化生成可执行文件或固件的过程。

使用这些技术可以实现自动化地构建和测试不同配置下的嵌入式软件。

4.代码覆盖率工具:对于嵌入式软件来说,代码的覆盖率是一个重要的测试指标。

代码覆盖率工具可以帮助测试人员评估测试用例对代码的覆盖情况。

常见的代码覆盖率工具有Gcov、Bullseye等。

5.硬件调试工具:由于嵌入式软件通常运行在硬件设备中,因此在测试过程中可能还需要使用一些硬件调试工具来辅助定位问题。

常见的硬件调试工具有逻辑分析仪、示波器等。

嵌入式软件自动化测试技术包括测试框架和工具、模拟器和仿真器、持续集成和自动化构建、代码覆盖率工具以及硬件调试工具等。

浅谈Testbed在嵌入式软件单元测试的应用

浅谈Testbed在嵌入式软件单元测试的应用

浅谈Testbed在嵌入式软件单元测试的应用嵌入式软件作为嵌入式系统的重要组成部分,嵌入式软件质量问题可能会带来设备的损坏和人员的伤亡,因而用户对其质量有较高的要求。

软件测试是对软件质量检验的一个非常重要的手段。

而软件测试中动态测试最基础的测试就是单元测试。

如何开展单元测试以及如何提高单元测试的效率是一个值得研究的问题。

1 软件单元测试的要求及重点软件单元测试是对软件基本组成单元进行测试,测试软件单元是否正确地实现规定的功能,是否满足软件性能和接口要求。

并验证程序与详细设计说明的一致性。

因此在单元测试时,需要模拟被测单元与其他模块之间的交互,开发驱动模块和桩模块两种辅助模块,构建一个可执行的环境,驱动模块用于模拟被测单元的上层模块,测试执行时由驱动模块调用被测单元使其运行;桩模块用于模拟被测单元在执行过程中所调用的模块。

单元测试重点考虑的测试类型有:(1)接口测试。

接口测试主要检查实参与形参的数目是否相等、实参与形参的属性是否匹配、实参与形参的单位是否一致、传到被调用模块的实参的属性是否与形参的属性匹配、是否把常量当作变量传递等内容。

(2)功能测试。

功能测试主要是对照软件单元的设计说明,验证软件是否完成了所需的功能。

(3)重要执行路径测试。

应设计测试用例以发现错误的计算、不正确的比较和不正常的控制流向等错误。

在计算中比较常见的错误是:误解或错误处理算术运算的优先次序、混用不同类的操作、计算精度不够等。

另外在控制软件执行流程的比较操作中比较常见的错误有:不同数据类型的比较、不正确的逻辑操作符或不正确的优先次序、因精度不够使本应相等的数不相等(如浮点数)等。

(4)软件单元的局部数据结构测试。

软件单元的局部数据结构是一个主要的错误来源,应设计测试用例来发现不正确的或不一致的数据说明、初始化有错或没有赋初值、不正确的变量名、不一致的数据类型、上溢/下溢或引用错误等类型的错误。

(5)错误处理路径测试。

一般软件错误处理路径测试应考虑下面几种可能的错误:对错误的描述不易理解、指出的错误并不是所遇到的错误、出错时还没有进行出错处理就先进行系统干预、错误边界条件的处理不正确、描述错误的信息不正确从而不足以确定出错的原因等。

嵌入式系统的测试方法

嵌入式系统的测试方法

嵌入式系统的测试方法嵌入式系统是指嵌入在某个特定应用之中的计算机系统。

与传统的计算机不同,嵌入式系统通常体积小、功耗低、功能单一、操作系统简单。

嵌入式系统被广泛应用于智能家居、智能交通、医疗设备等领域,为我们的生活带来了很多便利。

然而,因为嵌入式系统的特殊性质,如实时性、维护难度高等,对其进行测试非常重要。

本文将介绍几种常用的嵌入式系统的测试方法。

1.黑盒测试黑盒测试也被称为功能测试,主要是从用户的角度出发测试嵌入式系统的功能是否满足需求。

黑盒测试是一种无需了解系统内部实现细节的测试方法,只测试输入和输出。

黑盒测试通常是由测试人员编写测试用例,对系统进行功能测试,包括界面测试、输入输出测试、性能测试等。

例如,在智能家居系统的测试中,对于智能插座,可以通过测试开关按钮、使用手机APP进行控制,来测试插座是否可以正常工作。

如果测试发现插座不能正常工作,测试人员需要记录测试结果并将其反馈给开发人员。

2.白盒测试白盒测试是一种测试方法,需要了解系统的内部实现细节,对系统代码进行测试,主要考查代码是否符合设计规范以及代码是否有可能引发意外错误。

这种测试方法对于内部逻辑复杂的嵌入式系统特别重要。

例如,在智能家居系统的测试中,对于嵌入式系统的控制板,需要进行白盒测试。

测试人员需要检查控制板的代码并针对代码编写测试用例,测试代码是否可靠、是否会出现死循环等问题。

3.自动化测试自动化测试是通过测试脚本甚至测试工具实现对嵌入式系统测试的自动执行,比起人工测试,其具有更高的执行效率和精度,并且可以重复使用。

自动化测试可以通过模拟用户输入,执行黑盒测试,也可以针对系统代码执行白盒测试。

例如,在智能家居系统的测试中,对于嵌入式控制板的功能测试,可以通过编写自动化测试脚本,模拟用户使用控制板的过程,测试控制板是否能够正常工作。

此外,利用模拟工具,可以模拟网络波动、文件传输等环境来测试嵌入式系统的鲁棒性。

4.压力测试压力测试主要是通过对嵌入式系统进行大负载模拟,对系统的性能指标进行测试,评估系统是否能够承受持续的工作负荷,如停电重启、网络连接断开等情况。

嵌入式系统的调试与测试技术研究

嵌入式系统的调试与测试技术研究

嵌入式系统的调试与测试技术研究嵌入式系统是一种高度集成的各种硬件和软件系统,其应用范围广泛,包括汽车、医疗设备、航空航天、工业自动化等领域。

嵌入式系统的调试和测试是确保系统可靠性和稳定性的重要步骤。

本文将从嵌入式系统的调试和测试技术入手,深入探讨如何提高嵌入式系统的可靠性和稳定性。

一、嵌入式系统的调试和测试方法嵌入式系统的调试和测试在整个系统开发过程中起着至关重要的作用。

常见的嵌入式系统调试和测试方法包括:仿真测试、单元测试、集成测试、验收测试等。

其中,仿真测试是利用仿真器或者模拟器对嵌入式系统进行各种测试,可以帮助开发人员在没有实际硬件的情况下快速进行开发和调试;单元测试是对嵌入式系统中的各个模块进行测试,确保每个模块的功能正确性;集成测试是对整个系统进行测试,确保各个模块之间的协同工作正常;验收测试是为了验证开发的系统是否符合客户的需求和要求。

二、硬件调试测试技术硬件调试测试技术是指对嵌入式系统硬件进行测试和调试,主要包括CPU分析器、电路分析仪、万用表、示波器等设备。

在进行硬件调试时,一般首先要进行硬件电路图的设计和分析,确保电路图的正确性和稳定性。

其次,要对板子进行功率测试、时钟测试、引脚测试等测试,保证板子的正常工作。

最后,要进行连通性测试,确保各个模块之间的连接正常。

三、软件调试测试技术软件调试测试技术是指对嵌入式系统软件进行测试和调试,主要包括GDB调试、Trace调试、代码覆盖率测试、文本比对测试等技术。

在进行软件调试时,一般首先要对软件进行静态分析和代码审查,发现潜在的错误和问题。

其次,要利用GDB调试器进行调试,对函数的输入、输出进行跟踪和观察。

最后,要进行文本比对测试,确保程序输出结果的正确性和稳定性。

四、嵌入式系统测试工具嵌入式系统测试工具是指针对嵌入式系统进行测试和调试的软件工具,包括MBIST、JTAG debugger、FileScope、Coverity等工具。

MBIST是一种存储器内置自检工具,可以帮助开发人员快速发现存储器中的问题。

嵌入式系统中的自动化测试技术研究

嵌入式系统中的自动化测试技术研究

嵌入式系统中的自动化测试技术研究在嵌入式系统的开发中,自动化测试技术已经成为越来越重要的一环。

自动化测试技术可以帮助开发人员有效地提高测试效率,减少测试和开发人员的工作量,最终提高产品质量。

本文将就嵌入式系统中的自动化测试技术进行探讨。

一、嵌入式系统的特点嵌入式系统是一种集成了硬件和软件的系统,通常被用于控制其他设备或执行特定任务。

与通用计算机不同,嵌入式系统通常有以下几个特点:1、资源受限:由于嵌入式系统的成本和功耗要求,通常具有非常有限的资源。

2、去中心化:嵌入式系统通常工作于不同的场景,很少有或没有能够通过网络互联的中心节点,如医疗器械、智能家居设备等。

3、实时性:嵌入式系统通常被用于控制或监控实时任务,如智能家居设备、工业自动化设备等。

4、可靠性:嵌入式系统在工业、医疗、安防、交通等领域扮演着重要角色,对可靠性的需求是非常高的。

由于这些特点的存在,嵌入式系统测试相比一般软件测试是更加困难的。

嵌入式系统测试需要综合考虑多种因素,如系统硬件和软件的交互、外部设备的使用、大量测试数据集等。

二、自动化测试技术在嵌入式系统中的应用自动化测试技术在嵌入式系统中的应用,可以分为单元测试、集成测试、界面测试和性能测试。

1、单元测试单元测试是对嵌入式系统中各模块的测试。

测试人员可以使用自动化测试工具来完成单元测试并生成详细的测试报告。

在单元测试中,测试人员可以采用不同的测试框架,以确保测试结果的准确性和可靠性。

测试框架包括JUnit、CTest等。

在测试过程中,可以采用模拟器和调试器,在电脑上进行远程测试和调试。

2、集成测试集成测试是对嵌入式软件与硬件的集成测试。

集成测试需要进行一些复杂的测试,如接口测试、模块测试等,以确保系统各部分可以正常协同工作。

在集成测试中,需要进行多个嵌入式系统之间的集成测试和数据传输测试。

测试人员需要使用一些自动化测试工具来模拟和测试数据传输和文件传输等功能。

3、界面测试界面测试是对嵌入式系统中的交互界面进行测试。

嵌入式系统测试方法

嵌入式系统测试方法

嵌入式系统测试方法1.静态测试方法:-代码静态分析:通过对源代码或目标代码进行分析,检测是否存在潜在的程序错误、性能问题、可移植性问题等。

-代码审查:由开发人员对代码进行检查,查找逻辑错误、潜在的缺陷和不规范的代码。

-配置文件检查:对配置文件进行检查,确保配置参数正确、缺陷或冲突消除。

2.黑盒测试方法:-界面测试:对嵌入式系统的图形界面、命令行界面等进行测试,包括用户交互的各种功能。

-功能测试:对嵌入式系统的各个功能进行测试,验证是否满足需求规格说明书中的功能要求。

-兼容性测试:测试嵌入式系统与硬件、软件、操作系统或其他设备的兼容性,确保系统在各种环境下都能正常工作。

-安全测试:测试嵌入式系统的安全性,包括抗攻击能力、数据保护能力等。

-性能测试:测试嵌入式系统对各种负载情况下的性能表现,包括响应时间、并发能力、吞吐量等。

3.白盒测试方法:-单元测试:对嵌入式系统中的每个模块进行独立测试,验证其功能的正确性。

-集成测试:对嵌入式系统中各个模块的集成进行测试,验证模块之间的接口和数据交互是否正确。

-内存测试:通过测试程序的内存使用情况,检测内存泄漏、内存溢出等问题。

-代码覆盖率测试:通过分析测试过程中覆盖的代码行数,评估测试的完整性,并查找测试中遗漏的代码。

4.回归测试方法:-自动化测试:用自动化测试工具执行各种测试用例,提高测试效率和准确性。

-故障注入测试:有目的地在系统中注入故障,测试系统在异常条件下的反应和恢复能力。

-长时间运行测试:模拟系统在长时间运行状态下的使用情况,检测系统是否存在内存泄漏、资源不释放等问题。

-恢复测试:测试系统在异常情况下的恢复能力,包括系统的自动恢复和手动恢复。

5.安全测试方法:-渗透测试:通过模拟黑客攻击系统,查找系统的漏洞和安全隐患。

-加密测试:测试系统的加密算法和密钥管理机制,确保系统的数据安全性。

-防护测试:测试系统的防护机制,包括入侵检测、防火墙等,确保系统能有效地抵御攻击和恶意行为。

嵌入式可信计算技术要求与测评方法

嵌入式可信计算技术要求与测评方法

嵌入式可信计算技术要求与测评方法一、概述嵌入式可信计算技术是指通过硬件、软件和系统架构等手段,确保计算机系统的安全、可靠、可信赖和隐私保护的一种新型计算机技术。

随着信息安全日益受到重视,嵌入式可信计算技术逐渐成为人们关注的热点。

在本文中,我们将从嵌入式可信计算技术的要求与测评方法两个方面深入探讨,希望能够为读者提供全面、深刻的理解。

二、嵌入式可信计算技术的要求1. 安全性要求安全性是嵌入式可信计算技术最基本的要求之一。

在设计嵌入式系统时,必须考虑如何防范恶意攻击、数据泄露和信息篡改等安全威胁。

为了确保系统的安全性,需要采用可靠的身份识别技术、访问控制机制以及安全通信技术等手段。

2. 可靠性要求嵌入式系统通常被应用于一些关键领域,如金融、医疗和军事等,因此其可靠性要求非常高。

在设计嵌入式系统时,需要考虑硬件和软件的可靠性,以及系统的自诊断和容错能力。

还需要采用可靠的数据存储和传输技术,以确保数据的完整性和保密性。

3. 可信赖性要求可信赖性是指系统在面对各种攻击和故障时能够保持良好的正常运行状态。

为了提高系统的可信赖性,需要采用多层次的安全防护机制,并建立完善的安全管理体系。

还需要对系统进行全面的安全测试和评估,以确保系统能够在各种恶劣环境下正常运行。

三、嵌入式可信计算技术的测评方法1. 安全性测评方法对于嵌入式系统的安全性测评,可以采用黑盒测试和白盒测试相结合的方式。

黑盒测试是指通过模拟攻击和渗透测试等手段,评估系统在实际运行中的安全性能。

而白盒测试是指通过对系统的源代码和算法进行分析,评估系统在设计和实现层面的安全性能。

还可以采用安全标准和认证评估等方法,对系统进行全面的安全性测评。

2. 可靠性测评方法对于嵌入式系统的可靠性测评,可以采用负载测试、压力测试和故障注入等手段,评估系统在不同负载和故障条件下的可靠性表现。

还可以采用模拟环境和仿真技术,对系统的可靠性进行全面的评估。

还可以采用故障树分析和可靠性建模等方法,揭示系统可靠性的内在机理。

嵌入式软件安全测试的关键要点

嵌入式软件安全测试的关键要点

嵌入式软件安全测试的关键要点嵌入式软件安全测试是测试嵌入式设备中的软件系统以验证其安全性的过程。

随着嵌入式设备在日常生活中的广泛应用,安全问题日益凸显。

因此,嵌入式软件安全测试的重要性也日益突出。

为了确保嵌入式设备的安全性,以下是嵌入式软件安全测试的关键要点。

1. 风险分析和威胁建模:在进行嵌入式软件安全测试之前,首先需要进行风险分析和威胁建模。

这将有助于识别潜在的威胁和漏洞,从而确定测试的重点和目标。

2. 安全需求定义和测试计划制定:在进行测试之前,明确安全需求并制定详细的测试计划是至关重要的。

安全需求将定义预期的安全功能和性能,测试计划将确保测试用例的设计和执行能够全面覆盖这些需求。

3. 源代码和二进制代码分析:嵌入式软件的源代码和二进制代码分析是发现安全漏洞和弱点的重要手段。

通过对代码的静态分析和动态分析,可以识别潜在的安全问题,例如缓冲区溢出、代码注入等。

4. 安全性测试用例设计和执行:根据安全需求和风险分析的结果,设计合适的安全性测试用例是确保嵌入式软件安全的关键一步。

其中包括输入验证、访问控制、会话管理、安全配置等。

通过执行这些测试用例,可以发现潜在的安全性缺陷并进行修复。

5. 威胁模拟和渗透测试:威胁模拟和渗透测试是验证嵌入式软件的安全性和脆弱性的重要工具。

通过模拟恶意攻击和安全漏洞的利用,可以评估嵌入式系统的抵御能力,并找出潜在的漏洞和缺陷。

6. 运行时环境和外部接口分析:嵌入式软件往往与外部设备和接口进行交互。

对运行时环境和外部接口进行分析和评估,可以发现可能的安全漏洞和攻击面。

通过加固和修复这些漏洞,可以提高嵌入式软件的整体安全性。

7. 安全性评估和验证:进行安全性评估和验证是确保嵌入式软件安全的最后一步。

通过模拟实际环境下的攻击和攻击场景,验证嵌入式软件的安全性和强壮性。

还可以进行安全性评估以评估嵌入式软件在实际使用中的脆弱性和安全性。

8. 安全性问题修复和持续监测:发现安全性问题后,必须及时修复这些问题,并确保嵌入式软件经过修复后的版本不再存在这些漏洞。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

黑盒测试(Black box testing) ── 不考虑内部设计和代码,根据需求和功能进行测试。

白盒测试(White box testing) ── 根据应用软件的代码的内部逻辑,按照代码的语句、分支、路径和条件进行测试。

部件测试(Unit testing) ── 最小范围的测试,针对特定的函数和代码模块进行测试。

因为需要了解程序的设计和代码的细节才能进行,所以部件测试一般是由程序员,而不是由测试人员来做。

除非应用软件的结构设计良好,而且代码也写得清楚,否则部件测试并非易事。

也许需要开发测试驱动模块或测试工具。

递增的综合测试(incremental integration testing) ── 不断进行的测试过程,每增加一个新的功能模块,都进行测试。

这要求一个应用软件在最终完成之前,各功能模块要相对独立,或者已根据需要开发出测试驱动软件。

这种测试可由程序员或测试人员进行。

综合测试(integration testing) ── 对应用软件的各个部件进行组合测试,来检查各功能模块在一起工作是否正常。

“部件”可以是代码模块、独立的应用程序、也可以是网络中的客户/服务器应用软件。

这种测试特别适用于客户/服务器环境和分布式系统。

功能测试(functional testing) ── 对一个应用软件的功能模块进行黑盒测试。

这种测试应当由测试人员进行。

但这并不意味着程序员在推出软件之前不进行代码检查。

(这一原则适用于所有的测试阶段。

)系统测试── 针对全部需求说明进行黑盒测试,包括系统中所有的部件。

端到端测试(end-to-end testing) ── 类似于系统测试,但测试范围更“宏观”一些。

模仿实际应用环境,对整个应用软件进行使用测试。

例如与数据库进行交互作业、使用网络通信、与其他硬件、应用程序和系统之间的相互作用是否满足要求。

健全测试(sanity testing) ── 是一种典型的初始测试。

判断一个新的软件版本的运行是否正常,是否值得对它作进一步的测试。

例如,如果一个新的软件每 5 分钟就破坏系统、大大降低系统的运行速度、或者破坏数据库,那么这样的软件就算不上是“健全”的,不值得在目前状态下进行进一步的测试。

回归测试(regression testing) ── 每当软件经过了整理、修改、或者其环境发生变化,都重复进行测试。

很难说需要进行多少次回归测试,特别是是到了开发周期的最后阶段。

进行此种测试,特别适于使用自动测试工具。

认同测试(acceptance testing) ── 基于说明书的、由最终用户或顾客来进行的测试。

或者由最终用户/顾客来进行一段有限时间的使用。

负荷试验(load testing) ── 在大负荷条件下对应用软件进行测试。

例如测试一个网站在不同负荷情况下的状况,以确定在什么情况下系统响应速度下降或是出现故障。

压力测试(stress testing) ── 经常可以与“负荷测试”或“性能测试”相互代替。

这种测试是用来检查系统在下列条件下的情况:在非正常的巨大负荷下、某些动作和输入大量重复、输入大数、对数据库进行非常复杂的查询,等等。

性能测试(performance testing) ── 经常可以与“压力测试”或“负荷测试”相互代替。

理想的“性能测试”(也包括其他任何类型的测试) 都应在质量保障和测试计划的文档终予以规定。

可用性测试(usability testing) ── 是专为“对用户友好”的特性进行测试。

这是一种主观的感觉,取决于最终用户或顾客。

可以进行用户会见、检查、对用户会议录像、或者使用其他技术。

程序员和测试人员通常不参加可用性测试。

安装/卸载测试(install/uninstall testing) ── 对安装/卸载进行测试(包括全部、部分、升级操作)。

恢复测试(recovery testing) ── 在系统崩溃、硬件故障、或者其他灾难发生之后,重新恢复系统的情况。

安全测试(security testing) ── 测试系统在应付非授权的内部/外部访问、故意的损坏时的防护情况。

这需要精密复杂的测试技术。

兼容性测试(compatability testing) ── 测试在特殊的硬件/软件/操作系统/网络环境下的软件表现。

认同测试(acceptance testing) ── 看顾客是否对软件满意。

比较测试(comparison testing) ── 与竞争产品进行比较,以找出弱点和优势。

α 测试(alpha testing) ── 在开发一个应用软件即将完成时所进行的测试。

此时还允许有较小的设计修改。

通常由最终用户或其他人进行这种测试,而不是由程序员和测试人员来进行。

β 测试(beta testing) ── 当开发和测试已基本完成,需要在正式发行之前最后寻找毛病而进行的测试。

通常由最终用户或其他人进行这种测试,而不是由程序员和测试人员来进行。

从我们公司从事嵌入式软件测试及软件测试的工具推广来的经验来看,为了更好的遵循一些标准和规则,使代码更具有具有可读性和可维护性,建议对于写 C 和C++ 代码开发的人员可以参考一下建议:当然不太适合一切情况,仅供参考!1、减少或排除全局变量的使用。

2、使用说明性的函数和方法名——使用大、小写字符,避免用缩写,使用满足要求的说明文字来进行充分的描述(使用超过20 个字符也不致超行)。

取名要与功能一致。

3、使用说明性的变量名——使用大、小写字符,避免用缩写,使用满足要求的说明文字来进行充分的描述(使用超过20 个字符也不致超行)。

取名要与功能一致。

4、函数和方法的大小要尽可能小——最好不超过100 行,少于50 行最好。

5、在函数代码前面的函数的说明文字应当清楚。

6、书写代码应便于阅读。

7、在水平方向和垂直方向都留出足够的空间8、每行代码字符数不超过70 个9、每条语句占1 行10、一个程序内的代码风格应一致(在使用括弧、缩排、和命名方式等方面)11、注释内容宁多勿少,通常注释行的数量(包括开始部分) 应当不少于代码行的数量12、不管应用程序多么小,都应有文档,包括程序功能的概述和流程图(哪怕只有几行字,也比没有要好)。

如果可能的话,最好有单独的流程图和详细的程序文档。

13、尽最大可能使用错误处理过程,并对状况和错误进行记录。

14、在使用C++ 时,为了减少复杂程度和提高可维护性,应当避免类的继承的层数过多(这取决于应用程序的大小和复杂程度)。

除要尽量减少继承的层次以外,还应少用超负荷运算符(minimize use of operator overloading)。

使用Java 语言可以消除多级继承和运算符超负荷。

15、在使用C++ 时,保持类的方法不要太大,对于每各类的方法,代码行不超过50 行为最佳。

16、在使用C++ 时,应自由进行例外的处理(make liberal use of exception handlers)软件测试是个大工程,需要开发人员和测试人员协调配合完成,如果开发人员在编程的时候能按照一定准则去编程,这对后面的单元,集成测试也是减少很多压力,当然每个编程人员的编程习惯不一样,所以会按照规范去做,会和自己多年的编程的风格有冲突,所以推动规范还是一件比较有挑战的工作。

这也是很多企业遇到的问题。

下面我就上一篇提到的QAC这个软件测试工具做个介绍;它是英国Programming Research 公司的,PR公司是专业从事软件设计方法学和软件编程规范研究的公司,是MISRA的主要起草者,QA C/C++/Java分别是针对三种源代码语言的代码规则检查和静态分析工具,用于鉴别C/C++/Java语言使用过程中出现的问题,这些问题包括语言中比较危险、过于复杂、不可移植、难于维护的特性,或者是编码不符合特定的规则。

而这些问题是不能靠编译器或开发工具识别的。

为什么要做代码规则检查?是标准要求必须进行的软件质量保证过程。

军标Z121、DO-178B标准、CMM/CMMI认证都要求强制进行代码规则检查。

GJB5369更进一步规定了C语言编程规范。

自动代码规则检查能在软件开发早期早期自动检测出软件错误和安全隐患,能够在软件开发的早期有效保证软件代码的质量;而且可以在同一个开发团队形成统一的代码风格,减少代码维护性和单元/集成测试时间,增加团队凝聚力和提高生产效率。

下面简单衔接一下关于行业内的常见一些认证及标准做了个简要解释;1、SEI = “软件工程研究所(So ftware Engineering Institute)”,设在卡内基?梅隆大学,为改善软件开发过程,由美国国防部创建。

2、CMM = “性能完善模型(Capability Maturity Model)”,由SEI 开发。

它是一个分5 级的、可以描述结构完善程度的模型,用它来说明所交付的软件的效能。

它适用于大的机构,例如美国国防部的承包商。

所以,它所涉及的许多质量控制过程适用于任何机构,如果合理地利用它,将会获益不浅。

一个机构经过权威评审机构的评估,可以得到CMM 等级(CM M ratings)。

3、1 级──表现混乱,定期需要应急措施,需要经过很大努力才能完成项目。

很少有适当的过程,成功不可重复。

4、2 级──软件项目跟踪、需求管理、合理计划、以及结构管理过程适当,成功可以重复。

5、3 级──标准软件开发和维护处理过程完整地在整个机构内贯彻。

有一个软件工程处理组来坚实软件过程,开设培训课程来确保理解和一致性。

6、4 级──对生产、处理和产品进行跟踪,项目的特性是可预见的,非常重视质量。

7、5 级──重视持续地改善处理过程。

新的处理过程和新技术的效果是可预见的,在需要时使用它们便可提高效率。

(关于CMM 等级的前景:1992-1996 年间,共有533 个机构经过评估。

其中62% 的机构属于1 级,23% 为 2 级,13% 为3 级,2% 为 4 级,0.4% 是5 级。

中等大小的机构有100 个工程师/维护人员;31% 的机构是美国国防部的承包商。

在那些CMM 等级为1 级的机构里,有问题的关键处理领域在于软件质量保障。

)8、ISO = “国际标准化组织(International Organisation for Standards)” ── ISO9001、9002和9003是针对质量系统的标准,由外部的评估人员进行评价,适用于许多类型的生产和制造机构,而不仅仅适用于软件开发。

其中最复杂的是9001,它被广泛用于软件开发机构。

9 001 涵盖文档、设计、开发、生产、测试、安装、服务和其他过程。

ISO 9000-3 (不是9003)是ISO 9001 用于软件开发机构时的指导方针。

相关文档
最新文档