测试覆盖率统计
###什么是代码覆盖率(code coverage)
代码覆盖(Code coverage)是软件测试中的一种度量,描述程式中源代码被测试的比例和程度,所得比例称为代码覆盖率。
代码覆盖主要包括如下四个方面:
语句覆盖(StatementCoverage)
判定覆盖(DecisionCoverage)
条件覆盖(ConditionCoverage)
路径覆盖(PathCoverage) 或者叫条件/判断覆盖率
具体的参见参考文献1 2.
###怎么得到覆盖率数据
这里我们主要说测试工具的使用的问题。c++的项目测试里面我们用gcc产生测试数据,用gcov和lcov生成测试结果的报表。
gcc这里需要做的工作是编译的时候打...
git reset和git revert
git reset 作用
git reset 主要完成到版本库某个特定版本的回退,分为如下三种方式
git reset –mixed:此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息
git reset –soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可
git reset –hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容
git revert 作用
git revert从字面的理解上跟git reset是一样的,不同之处在于git revert生成一个反向的差异(特...
svn vim 整合方案
这也是实际工作中遇到的问题,所以还是分类到了oceabase分类里面。
遇到的情况是这样的,有可能同时做多个任务的修改,或者说上一个任务的修改并未提交(尚未ship不能提交),但是下一个已经修改了,这样的话,post-review的时候是需要管理post列表的,而不能把所有的修改一起post。之前应该写过一篇文章说一个post-review插件的实现,但是实际上颇为不便,最好的办法是直接在vim里面操作一个修改列表。这里我们首先通过如下方式生成修改列表。
alias sta='st|grep ^A '
alias stm='st|grep ^M '
alias std='st|grep ^D '
alias po='echo "#!/bin/sh" >post-review...
关于svn commit fail的问题
svn commit失败的时候会产生一个svn-commit.tmp 文件, 打开之后发现里面是commit-message,难道下次提交的时候还需要把消息复制进去么?
看看 svn help commit, 发现有 -F 可以用, 平常都只有用 -m ‘message’ 而已。定义如下:
-F: 会把档案内容读进来, 然后直接 commit, 想当然就用 -F 直接取 svn-commit.tmp 来 commit.
例: svn ci -F svn-commit.tmp
PS: commit 完后, 还是要手动 rm svn-commit.tmp.
另一个关于commit的问题是,如果 svn ci 进入填充commit-log的交互界面的时候,突然发现提交文件列表...
几个svn的问题
误用rm删除了未提交文件
经常会遇到这种情况:本地修改了一部分东西,增增改改删删,后来发现已经用svn add过的的文件被删除了,但是这个文件只是加入了版本控制,而并不再版本库里,这时候post-review就会有各种问题。如图(前面有感叹号的文件):
解决办法也很简单,我们直接:
svn revert ob_alive_table_tablet_iter.h
这时候文件并不会被恢复,但是svn status上已经显示删除了,post-review不会再报错,如下图所示:
版本控制中移除文件
经常会遇到错误的把文件加入了版本控制的情况,比如我加了一个Makefile.in到版本控制里(如图),但是svn rm 会同时从版本库和本地删除这个文件,这是我所不希望的...
记几个诡异的bug
ERROR: mutli target patterns
这个莫名其妙啊,不知道在Makefile.am里改了什么,然后就这样,网上的解释大部分是说target里面有多余的冒号,但是我发现问题啊。最后该来该去bug没了,但是也复现不出来,只是在这里记一下,如果有复现的时候再说。
后来 聿明 解决了这个问题,原来是编译的线程开太多了,而开发机性能又不好,争用然后冲突。
alias make='make -s -j 4' #这里开到4-5就不要更多了
ob集群无法启动
怀疑是机器的问题,但是如果大部分机器我都无法启动这算怎么一回事,
rs的日志如下:
[2013-10-12 14:41:56.484203] WARN create_first_table (ob_ro...
post-review在svn和git共同存在下的冲突问题
有时候我们会同时用多种版本管理工具进行管理,或许这听着很eggache,但是有时候确实会发生,比如
不习惯某种版本管理工具,希望通过另一种熟悉的版本管理工具进行管理
有些特性是其他的版本管理工具所没有的
开发的版本管理和自己的分支管理策略之间有冲突,开发的版本库不允许随便建立测试分支
具体到一种情况下,比如我们有一个svn的版本库,版本管理策略比较严格,而我们需要做一些有风险的本地开发的时候,都原意建立一个test分支,开发确定没有问题之后再合并到master分支,但是现实的情况不允许我们随便建立丢弃分支。这样就可以通过加入一个git的版本管理来实现。
比如我们建立了一个新的版本库(repository)
mkdir repository.git &a...
霸气风骚的系统监视器htop
做测试和运维的同学都比较熟悉top工具,top工具提供了强大的系统性能监视能力,但是top毕竟比较简陋,而服务器端又不能运行需要X的程序,所以需要一款更人性更强大的系统监视器。HTOP就是一个很好的选择。
###介绍
htop 是Linux系统中的一个互动的进程查看器,一个文本模式的应用程序(在控制台或者X终端中),需要ncurses。
与Linux传统的top相比,htop更加人性化。它可让用户交互式操作,支持颜色主题,可横向或纵向滚动浏览进程列表,并支持鼠标操作。
与top相比,htop有以下优点:
可以横向或纵向滚动浏览进程列表,以便看到所有的进程和完整的命令行。
在启动上,比top 更快。
杀进程时不需要输入进...
506 post articles, 64 pages.