动态测试及调试工具

一、         DT10介绍

DT10是一款自动化的软件测试及调试工具,无需依赖任何OS 和CPU,支持C/C++、Java、C#多种语言,用于动态测试和调试的工具,可对运行时目标程序进行长时间跟踪,适用于各个开发阶段。

DT10是动态测试工具中唯一能实现灰盒测试的工具。不只软件内部的测试,连同CPU周边的传感器 , 端口等硬件状态也都会和执行路径一起被验证,所以可以在同一个时间测试软件和硬件的整个运行过程。测试结果,会自动产生报告。开发者和QA的工作人员都能通过使用该工具提升产品质量,使得工作更为高效。

在DT10 软件的界面上,可以输入运行时间、周期时间、参数、变量的设计值。除了输入的设计值可以在同一个页面(一览表)做管理之外,还可以当作设计书被导出。这些设计值,将在测试过程中被使用,可以和目标板上实际测量值做对照,如出现与设计值有出入的状况,系统会有警告的讯息弹出,便可通过这样的警告掌握问题的状况。

非常适合对长时间运行的软件进行跟踪调试。因为可以取得并分析︰任务的变化、函数的周期时间、运行时间、覆盖率、变量值的变化,所以整个调试的效率会大幅提升。就连不容易重现的问题,只要能重现1次,也可以从跟踪数据里来分析原因。所以通过长时间运行测试及修正是非常高效的方式。

主要功能点:

<!--[if !supportLists]-->u  <!--[endif]-->不依赖操作系统和目标板CPU,支持任何处理器和嵌入式操作系统;

<!--[if !supportLists]-->u  <!--[endif]-->可支持C/C++, Java, C#语言的覆盖测试、性能测试、Bug定位调试;

<!--[if !supportLists]-->u  <!--[endif]-->与目标设备连接灵活多样。可支持直接通过网口,串口,GPIO,异步总线,SD卡,CAN总线等连接方式,特别是可直接通过网卡和串口直接连接目标设备,不用接飞线,大大增强了DT10的易用性和可支持的硬件环境多样性;

<!--[if !supportLists]-->u  <!--[endif]-->软硬件同步测试。DT10提供一个Analog Box的连接盒,可监控4路数字信号输出端口和2路模拟信号端口,可同步检测变量值,实时查看硬件信号输出端口和变量变化情况与软件执行情况,从而实施软硬件同步测试;

<!--[if !supportLists]-->u  <!--[endif]-->可长时间跟踪目标设备执行情况,最长可记录32天跟踪数据

<!--[if !supportLists]-->u  <!--[endif]-->回放调试功能,提供可视化的函数执行跟踪报告,便于进行Bug分析,尤其是难以重现的Bug或者是偶发性程序崩溃错误

<!--[if !supportLists]-->u  <!--[endif]-->动态覆盖率测试,提供系统测试覆盖率分析,支持语句覆盖率,分支覆盖率

<!--[if !supportLists]-->u  <!--[endif]-->性能测试,检测函数执行时间,周期时间,统计代码中任意两行语句间的执行时间,便于进行性能分析和评估

<!--[if !supportLists]-->u  <!--[endif]-->变量跟踪,跟踪程序真实执行过程中,变量值实时变化情况,并提供可视化图形报告

<!--[if !supportLists]-->u  <!--[endif]-->验证设计值,回归测试。DTPlaner可定义函数执行时间的设计值(期望值),变量的设计值(期望值),目标设备实时执行过程中,其执行时间或者变量值一旦超过设计值范围,将给出警告错误

<!--[if !supportLists]-->u  <!--[endif]-->CPU压力监测,多个任务的切换监控,各个任务所占用系统资源统计;

<!--[if !supportLists]-->二、         <!--[endif]-->DT10构成

主要版本:

<!--[if !supportLists]-->1.       <!--[endif]-->DT10 Hardware-In-Circuit version (硬件在线测试)

<!--[if !supportLists]-->2.       <!--[endif]-->DT10 Software-In-Circuit version (软件在线测试),

<!--[if !supportLists]-->3.       <!--[endif]-->Native version(主机平台测试

<!--[if !supportLists]-->三、         <!--[endif]-->技术参数:

<!--[if !supportLists]-->l  <!--[endif]-->无OS 和CPU 的限制,可以毫无限制的进行调试

<!--[if !supportLists]-->l  <!--[endif]-->可对运行时目标程序进行长时间跟踪,最长可连续跟踪32天

<!--[if !supportLists]-->l  <!--[endif]-->支持多种语言,包括C/C++/C#/Java代码

<!--[if !supportLists]-->l  <!--[endif]-->可针对函数的入口处/出口处/分支,自动插入测试点,也可以手动插入代码到任何位置

<!--[if !supportLists]-->l  <!--[endif]-->6种连接方式,客户可自行选择:异步总线连接,SD card I/F 连接,GPIO连接,Ethernet连接,CAN连接,UART连接。

<!--[if !supportLists]-->l  <!--[endif]-->通过函数跟踪功能,可透视执行路径。函数内部处理和中断状况发生时的相关详细执行路径,都可以借此图像显示。同时也可以比对源码,是一个既便利又具有直观性操作的功能

<!--[if !supportLists]-->l  <!--[endif]-->可取得硬件的状态(如︰电压)。可以把DT10当作示波器来使用,这样可以检测电压和逻辑。另外,变量值和任务变动也会在同一个页面显示,所以可以通过软件和硬件的跟踪结果,来确认软硬件配合是否有问题。

<!--[if !supportLists]-->l  <!--[endif]-->可长时间追踪变量值的变化。因为插入了用于导出变量值的测试点,所以会随着时间轴的变化,观察到变量值产生变化。可将多数的变量图像合并查看、也可以在同一个页面(一览表)显示各个变量的最大值和最小值。

<!--[if !supportLists]-->l  <!--[endif]-->可方便地掌握“进程占有率”。任务占有率可以通过图像显示,可以一目了然地看到任务中哪个部分负担较高。因为在那个时间点下,可以直接定位到实际处理位置,所以可知道到底是哪个执行路径发生问题,便可很方便地了解问题状况。

<!--[if !supportLists]-->l  <!--[endif]-->可方便获得“运行时间”和“周期时间”。所有函数的运行时间(最大,最小,平均时间等)都可在统计后显示出来。另外,也可以得到任意两点之间的“处理时间”报告,非常方便地发现跟现有设计值有差异的地方。

<!--[if !supportLists]-->l  <!--[endif]-->自动比较实际值和设计值。可预先设置期望的“运行时间”和“变数值”。在目标

<!--[if !supportLists]-->l  <!--[endif]-->板上实际执行后,可将“测试值”和“设计值”做比较。不仅可以很方便地发现程序代码中发生异常的地方。如果后续该项目开发下一个版本时也可以重复使用这些设计值。这可以使软件开发更有效率。

<!--[if !supportLists]-->l  <!--[endif]-->可透视“处理时间的波动”。如果使用“运行时间的长条图”,则可发现实际的处理

<!--[if !supportLists]-->l  <!--[endif]-->时间与设计值是否有差异。另外,也可以看到目标板上处理时间的变化(波动);因为能知道异常的处理时间,所以可提前发现/修正“与时间相关的潜在问题”。

<!--[if !supportLists]-->l  <!--[endif]-->可以获取集成/系统测试的覆盖率。可以得到语句覆盖率和分支覆盖率。对于集成测试和系统测试,都可以从用户角度进行常规测试即可获取覆盖率数据。

<!--[if !supportLists]-->l  <!--[endif]-->支持内存资源非常小的芯片,可在极小的目标环境上获取覆盖率,业界测试工具多半无法无法在极小资源的目标环境(如单芯片)上进行测试并获取覆盖率,DT10完全可以做到

<!--[if !supportLists]-->l  <!--[endif]-->通过Event测试点,可确认状态变化和顺序变化

<!--[if !supportLists]-->l  <!--[endif]-->可测量CPU的负荷情况,分析CPU的负荷测量数据,并且用图形化的方式,显示随时间轴变化的CPU负荷情况

<!--[if !supportLists]-->l  <!--[endif]-->测试报告自动生成,运行时间和覆盖率测量的结果,可以自动生成报告。对开发人员来说,不用花时间在做测试报告上,而可以更专注于开发。

有效提升新版本的测试效率,可以将测试点只插入在与前一个版本不同之处。如果和覆盖率测试组合,将有倍增的效果。有版本更新的状况下,可只测试更新的程序代码,使测试的程序代码量降到最低,这样会是最有效率的测试方式。

原文地址:https://www.cnblogs.com/lichongjie/p/4458694.html