AQtime代码覆盖率深度分析之二

MS UI Automation简介 MS UI Automation(Microsoft User Interface Automation:UIA)是随.net framework3.0一起发布的,虽然在如今这个几乎每天都有各种新名词、新技术出来的所谓的21世纪,它显得已经有些过时了。前些日子,正好一个项目,可以 阅读详情

AQtime的Coverage Profiler有一些不错的特性,能方便我们更好的进行代码覆盖率的检测。

New Area和 Files to Ignore

当目标module被加进来是,AQtime会以树形结构,把module的对象层次图显示出来,如c/c++的dll,就会dll-->obj-->API三个层次。如果我们只想对特定的obj文件进行profile,或者排除编译时编译工具加入了自己的obj文件(因为这些obj文件会影响最终的结果,也无需对他们进行profile),就需要用到New Area这个功能:

展开dll到obj这个层次的视图,选中自己的obj文件,右键-->Add Selected to Area-->Add to New Area...,这样就可以按line level或routine level,只针对自己想要obj文件,也就是只profile完全是自己程序的代码。记得只选中新建的这个area。

同时,如果这些你的程序中也调用了其他人写的函数库,可以找到这些函数库文件的完整路径名,在AQtime的菜单栏Options-->Files to Ignore...,把他们加入到需要忽略的文件列表中。注意,这里是一个全局选项,对所有的project都有效的。这里加的文件越多,AQtime启动coverage profile所需的时间就越长,甚至会造成假死的现象。

通过建New Area和Files to Ignore选项,就可以只针对特定的代码进行coverage profile。

Mark partially executed lines as

AQtime提供一个选项,叫做"Mark partially executed lines",该选项的值设置不同,会影响到最终的line coverage的结果。默认情况下,AQtime是把该选项设为"Partially executed (yellow dot)"的。选择Add or Remove Buttons-->Customize-->Commands,可以把该选项显示的添加到AQtime的菜单栏。

为什么该选项的值不同会影响line coverage的结果呢?因为对于if(condition1 || condition2)等这样的语句,AQtime会根据该选项的值,认为该行具有1个还是2个hit block。

First chance exception 0xxxxx

当设置好工程后,执行coverage profile任务,在event view中,可以看到一些"First chance exception ...."的信息,并且前面有个大红叉。给人第一感觉就会怀疑是否程序中有重大的问题。其实通常情况下不是这样的,它是告诉我们有一个异常被引发并且被处理了,具体可见http://blogs.msdn.com/b/davidklinems/archive/2005/07/12/438061.aspx

Merge

AQtime提供对结果的merge功能,一是可以对不同的测试任务的coverage进行集成,二则对于AQtime本身而言,个人任务意义更为巨大,因为AQtime对一个比较大一点的,时间比较长的任务,有时候会crash,这个时候就很悲催了。这种情况下,我们最好把大的,时间长的任务分割为几个比较小的,分别执行,最后在合并。在合并之前,最好copy一份保存有结果的工程。如果在合并的时候,还是出现了crash的对话框,千万不要选择“terminate the application..."这个选项,否则会因为debug info的丢失,所有的之前profile的结果都没有了。

Top 10 uncovered routines

在summary中,总的和每个thread都有一个"Top 10 uncovered routines"和"Routines with max HitCount",”Routines with max HitCount"好理解,就是比较谁hit的次数多;但是对于uncovered,就有些费解,开始以为是AQtime基于代码的静态分析函数调用关系得出的,问了AQtime support的人,结果完全不是这样的。AQtime会根据coverage的百分比进行自动排序,hit最高的当然就是max hitcount了,而"Top 10 uncovered",则是hitcount都为0的routine中,随机产生的。

 

 

White使用简介 最近有个文件格式转换的任务,需要把一批用旧版本上创建文件用新版本打开,存为另外一种版本。想想蛮适合自动化实现的:只是涉及到一些简单的最常用的控件, 固定而机械的操作。于是就马上想到了White这个开源的项目(http://white.codeplex.com/)(公司目前还没有商业的自动化测试工具)。 UIA & UISpyWhite是基于微软的UIA(UI automation)这套 阅读详情

相关推荐

使用petalinux做嵌入式设计开发(1)

1.创建vivado工程,建立硬件环境,最终导出hdf文件 既可以在windows系统下的vivado上编写硬件工程并导出hdf文件,也可以在linux系统下的vivado中编写硬件工程并导出hdf文件。(对于windows系统下导出的hdf文件还需要传递到linux系统下的文件夹中。) 2.以hdf硬件文件为基础创建,配置,编译,打包petalinux工程,导出linux系统所需镜像文件。 具体步骤: (0)设置环境变量 设置环境变量使得我们可以直接使用petalin...

plotup的博客 2076

AQtime使用简介-覆盖率测试方法

AQtime使用简介-覆盖率测试方法一.AQtime计算覆盖率的方法AQtime对实际可执行的代码行(不包括注释、空行、函数头、#include语句、宏定义、数据结构定义、case语句和对应的break、部分{}等)进行打点标记,完全执行的代码行标记绿点,部分执行到的代码行标记黄点,完全没有执行到的代码标记红点。这样AQtime统计的是插入的点数而不是实际的代码行数,这个点数要远远小于实际的代

闵瑞的专栏 1715

ESP32S3开发实战:从Vscode+IDF环境配置到OpenOCD单步调试全流程

本文详细介绍了ESP32S3开发环境的完整搭建流程,重点讲解如何在Vscode中配置ESP-IDF开发框架,并利用OpenOCD工具实现硬件单步调试。内容涵盖从环境准备、工程创建、代码烧录到高级调试技巧的全方位实战指南,旨在帮助开发者快速掌握ESP32S3的高效开发与调试方法。

weixin_29168813的博客 208

CentOS 6 Iptables关于--hitcount数值限制的问题

一直知道iptables 很强大,但是所知甚少,今天突然想做下iptables 限制连接数的问题,参照iptables man手册 recent 部分,在iptables 文件中写了两条规则,命令行写法如下: iptables -A INPUT -p tcp –dport 80 -m recent –name badguy –seconds 60 –update 100 -j DROP

WOOOLILI 3202

高通Camera IFE时钟配置

高通Camera IFE时钟配置中的minHorizontalBlanking和minVerticalBlanking配置计算方法

一个懒癌的驱动工程师的随笔分享 6167

多视图学习 (Multi-View Learning)

多视角/多视图学习(Multi-view learning)是陶大成提出的一个研究方向。我们都知道,在机器学习中样本可以用不同的特征(如图片可以用LBP、SIFT等特征)来表示,或者从不同的角度进行观察(如从前后左右观察一个对象),甚至是采用不同的传感器来观测(如RGB摄像头,Depth摄像头),这些不同的观测手段、角度或特征在多视角学习中称为“视角”。多视角学习通过对不同的视角进行统一分析和研究,希望能够得到更好的分类或聚类等等的效果。

CarpeDiem 3万+

[原创]DebugTools系列(2):AQTime配置

导读通过上一篇文章, 相信大家已经对AQTime有了初步的认识,并能够上手做简单的性能优化工作,这篇文章我们重点说说在开始收集数据前关于AQTime的配置细节,合理的配置是保证最后能收集到理想数据的基础,所以很重要。 记得留下宝贵意见哦!!! 源代码下载: 首先,阅读此篇文章之前,请确认已经认真看过[上一篇]文章。在这篇文章理,我们分别从范围、粒度、过程三个方面介绍AQTime的配置问题;...

weixin_34378767的博客 174

Unity3D用c#脚本调用前端javascript函数:H5获取unity - webgl 加载并初始化完成的消息

unity3d发布的Webgl 可以作为静态文件加载到H5页面中,并通过javascript 调用unity内置的C#脚本函数,详见Webgl调用unity api。而往往我们需要知道Webgl ready的消息,本文将给出unity 内部调用javascript函数的方案加以解决。

Bravo 2475

性能分析工具AQTime

性能优化的工具:统计出统计粒度(函数/行)在运行过程中,各粒度运行的占用时间。从而来为性能优化提供依据。 AQTime-具有性能统计功能,下面对AQTime的主要分析方面进行介绍   首先,选择performance profile(缺省的),进入性能统计模式   AQTime用作性能分析时 提供几种分析模式

春夜喜雨的专栏 2191

告别命令行恐惧!用TBtools的MCScanX插件,5分钟搞定拟南芥和水稻的基因组共线性分析

本文介绍如何利用TBtools的MCScanX插件快速完成拟南芥和水稻的基因组共线性分析,无需命令行操作,5分钟即可生成专业可视化结果。通过图形化界面简化传统MCScanX的复杂流程,特别适合非生物信息背景的研究者,显著提升基因组数据分析效率。

dianzhuique8587的博客 377

《科研伦理与学术规范》期末考试答案2023

26单选(2 分)某学术杂志的评稿人同时是某高校相关专业的硕士生导师,在评判一个稿件的时候,他发现该作者研究的题目很有价值, 他便一边压下这个稿子,一边将稿子的纲要传给自己门下的硕士生, 指导他们使用这个题目独立写出一篇论文,并帮助他们发表在其他期 刊上。D.要善待实验动物,是指在饲养管理和使用实验动物过程中,要采取有效措施,使实验动物免遭不必要的伤害、饥渴、不适、惊恐、折磨、疾病和疼痛,保证动物能够实现自然行为,受到良好的管理与照料,为其提供清洁、舒适的生活环境。张某在压力之下不得不屈从。

Glenseeds的博客 4万+

AQTime教程

  AQTime教程1 简介AQTime和MemProof都是AutomatedQA旗下的产品,AQTime比MemProof提供了更丰富强大的功能。该产品含有完整的性能和调试工具集,能够收集程序运行时关键的性能信息和内存/资源分配信息,并提交概要报告和详细报告,还提供所有的程序优化处理工具,囊括了自定义过滤器、图形化的调用层次结构一直到源代码浏览等内容。AQTime的特色在于它不仅是

书呆子的专栏 1万+

【数据集】全球大气空气柱平均甲烷(XCH₄)和一氧化碳(XCO)浓度数据集 TROPOMI/WFMD

全球大气空气柱平均甲烷(XCH₄)和一氧化碳(XCO)浓度数据集 TROPOMI/WFMD

WW、forever的博客 387

AQtime代码覆盖率深度分析之一

前一篇介绍了Code Coverage的一些指标,那么如何比较简单的评价一款软件对这些指标的支持呢。由于公司的项目组选择AQtime这个工具,所以有机会能进行比较深入的体验一下。为了避免IDE自动产生的code,我们采用记事本来编写一个简单的C dll,同时,

ffeiffei的专栏 2823

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

AQTime教程(1)

AQTime教程 1 简介 AQTime和MemProof都是AutomatedQA旗下的产品,AQTime比MemProof提供了更丰富强大的功能。该产品含有完整的性能和调试工具集,能够收集程序运行时关键的性能信息和内存/资源分配信息,并提交概要报告和详细报告,还提供所有的程序优化处理工具,囊括了自定义过滤器、图形化的调用层次结构一直到源代码浏览等内容。AQTime的特色在于它不仅是一款调试...

weixin_30800807的博客 277

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

AQTime 基本使用方法

http://www.cnblogs.com/gleam/archive/2013/05/12/3073778.html#2678616 一、 概要     AQtime是一个在性能分析和资源调试中非常好的工具软件。不用修改任何代码,就能直接进行分析。丰富的分析方法,能非常轻松的搞定32位和64位应用程序性能问题、资源和内存泄漏。详细的报告不仅仅能告诉你性能的瓶颈或内存泄漏,还能知道那

l799623787的专栏 8896

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

代码覆盖率分析

无论是单元测试、API测试还是功能性测试,最终都是调用了产品的代码;如何评价这些测试的效率,是否真正全部或者大部分覆盖了产品的代码,这个时候,代码覆盖率(code coverage)就是一个比较有价值的参考指标了。通常,代码覆盖率用在如下几个方面找出程序中没有被测试代码执行到的地方;增加新的测试代码,以提高代码覆盖率;分析测试代码的效率,以便设计出更有效的测试代码或测试用例代码覆盖率常用的指标语句

ffeiffei的专栏 1万+

Hudson/Jenkins--配置TestNG/JUnit的email-ext email模板

Hudson/Jenkins默认提供了发送邮件的功能,但是比较有局限性。插件Email-ext提供了比较好的email功能。安装好该插件后,可以在$JENKINS_HOME($HUDSON_HOME)/email-templates目录下定义自己的email模板。下面提供一个jelly script基于junit的测试结果生成email的模板,先上email效果图: 该email rep

ffeiffei的专栏 1万+

Hudson配置个人持续集成服务器

1. 安装Java Run Time or JDK,并把java安装目录设置到系统环境变量中(JAVA_HOME);2. 创建Hudson工作目录,例如d:/Hudson,并设置系统环境变量HUDSON_HOME到d:/hudson;3. 下载最新版本的Hudson安装包到d:/hudson目录下(http://hudson-ci.org/latest/hudson.war);4. 从windows命令行启动Hudson:java -jar d:/hudson/hudson.war,打开IE,输入http:

ffeiffei的专栏 7920

Nant使用简介

 下载地址:http://nant.sourceforge.net/1. 创建一个最简单的target:以为标记,输出预定义的常量PROJECT_NAME 和PROJECT_VER

ffeiffei的专栏 6957

Hudson/Jenkins--如何自定义build name

Hudson/Jenkins的job的默认的build name一般都是基于时间格式的,如何在给出一个比时间更具有意义的build name呢,可以利用以下2个插件: Description Setter Plugin 下载地址:https://wiki.jenkins-ci.org/display/JENKINS/Description+Setter+Plugin 该plugi

ffeiffei的专栏 6523

Hudson/Jenkins -- 消除svn警告: "clock of the subversion server appears to be out of sync"

Hudson/Jenkins中配置svn的URL时,有时会出现如下警告信息: “WARNING: clock of the subversion server appears to be out of sync. This can result in inconsistent check out behavior” 基本选择每次重新checkout最新的版本,也会出现该警告信息,其解决

ffeiffei的专栏 6431

Selenium学习笔记之五:封装几个通用的函数

<br />实际测试中,不可避免的需要等待控件完全ready,才能进行相关的操作,这个时候,就需要动态的以小步递进的方式,对某个条件判断,进行时间等待,而不是简单的等待几秒。可以把相关函数封装在一个SeleniumUtils类中,供大家调用:<br />import com.thoughtworks.selenium.Selenium; import com.thoughtworks.selenium.SeleneseTestCase; public class SeleniumUtils exte

ffeiffei的专栏 5613

Hudson配置slave machine

运行Hudson服务的机器叫做Master machine,通过Hudson的node功能,可以配置其他机器作为Master的slave,在master统一分配,运行任务。1. 启动Hudson;2. 点击Hudson-->Manage Hudson-->Manage Nodes-->New Node,输入要作为slave机器的机器名,并选中Dumb Slave;3. 配置相关的slave machine信息:点击Save,一个slave machine创建好了。可以在Hudson左侧栏中看到各个machi

ffeiffei的专栏 5194
上一篇: AQtime代码覆盖率深度分析之一
下一篇: 利用with关键字写sql语句的一个小技巧
ffeiffei
博客等级 码龄16年 36粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值