
软件测试服务


图 嵌入式测试整体解决方案
• 嵌入式系统单元测试服务
针对嵌入式软件开发的 C 和 C ++语言代码,提供代码在开发阶段的单元测试,使用测试工具自动驱动测试用例,包括单元代码功能实现正确性测试、覆盖率分析,被测软件源程序复杂性及软件结构和内存测试。
• 嵌入式系统代码静态分析
提供代码质量的静态分析,包括检测程序中未初始化的变量、数据的访问冲突、空指针和越界指针、数组越界、 整数和浮点数的 溢出、 非法的算数运算、 不可达代码, 分析被测软件是否符合编程标准 等服务,提前发现代码中潜在的运行时错误,保证被测嵌入式软件的质量,有效减轻开发后期排错工作量。
• 嵌入式系统集成测试服务
借助测试工具 CodeTest 以及开发人员丰富的嵌入式开发经验,能够针对基于 ARM 、 x86 等不同硬件, VxWorks 、 Linux 等不同的嵌入式系统,提供整体软件的性能测试、内存测试和覆盖率分析,能够有效的检测内存泄漏等问题,强有力的帮助开发人员分析和定位系统存在的瓶颈。
• 嵌入式系统功能测试服务
提供系统级的功能测试,帮助用户完成大量的功能测试,提供测试用例设计咨询服务、测试环境配置服务,测试执行以及回归测试,能够为有条件的测试提供自动化功能测试服务,自动采集系统输出,自动比对测试结果等服务。
测试环境提供
PolySpace 测试环境
测试类型:白盒测试,运用数学公式与抽象分析代码中潜在的错误
测试目的: 提供代码质量的静态分析,包括检测程序中数据的访问冲突、空指针和越界指针、数组越界、不可达代码等服务,提高被测嵌入式软件的质量。
测试过程:
• 为客户提供嵌入式系统 C/C++ 软件测试,根据客户的软硬件开发环境配置代码静态分析环境
• 根据客户需求定制测试错误或规则
• 及时反馈测试结果
测试优化:
• 提前发现代码中潜在的错误,降低测试成本
• 能够发现测试用例不易发现的数组越界、非法的算数运算 ( 例,除零错误,负数开方 ) 、浮点溢出等错误
• 提供自动回归测试
测试结果:
• 规则检测:检测代码是否符合国际编码标准 C99 或 MISRA (汽车工业标准)或国际航天标准等国际通用行业标准,提高代码质量与可靠性
• 运行时错误检测:提供非常高效的选择性(诊断出安全、不安全和死代码)测试结果并且极大的缩短彻底的代码评审的时间要求。
代码分析能够自动检查下面 8 种错误:
• 企图读未初始的变量
• 多线程应用中未保护数据的访问冲突
• 对空指针和越界指针的引用
• 对超界数组的访问
• 非法类型转换 (long to short, float to integer)
• 非法的算数运算 ( 例,除零错误,负数开方 )
• 整数和浮点数的上溢出 / 下溢出
• 不可达到的代码
• 能够有效测试软件运行时错误,适合对代码健壮性,可靠性要求较高的嵌入式系统进行测试
CodeTest 测试环境
测 试类型:白盒测试
测试目的:在软件测试过程中有效地监控代码覆盖率与在程序运行时实时动态的分析内存分配情况,识别内存漏洞(如申请空间而不释放,有内存空间闲置,释放无效指针和空指针),指明那些内存在什么地方在什么情况下被那些函数占用。
测试过程: CodeTEST 采用硬件辅助软件的系统构架和 AMC 公司专利的源代码插装技术,用适配器或探针,直接连接到被测试系统,从目标板总线获取信号,为跟踪嵌入式应用程序,分析软件性能,测试软件的覆盖率以及内存的动态分配等提供了一个实时在线的高效率解决方案。
测试结果:提供 常用的代码覆盖率指标,如下:
• 语句覆盖( Statement );
• 分支 / 判定覆盖( Branch/Decision );
• 多条件覆盖( MultipleCondition );
• 修正条件 / 判定覆盖( ModifiedCondition/Decision );
• 循环覆盖( Loops );
• 过程 / 函数调用覆盖( Procedure/FunctionCall );
• 动态数据流覆盖( DynamicDataFlow )。
内存分析在问题发生之前,识别内存漏洞,指出错误的隐患,并且定位出错的地方。
Cantata++ 测试环境
测试类型:灰盒测试
测试目的:针对嵌入式软件开发的 C 和 C ++语言代码,提供代码在开发阶段的单元测试,包括单元代码功能实现正确性测试、覆盖率检测等。
测试过程:
• 提供测试用例编写常用方法,如等价类法、边界值法,与具体应用结合产生测试用例集
• 为客户产生自动测试脚本,利用自动化测试工具自动执行,并自动校对测试结果
测试优化:
• 为客户判断测试用例是否完备,提供各类代码覆盖率检测,发现没有覆盖到的路径、分支等
• 提供自动回归测试