Web Analytics

cmockery支持mock输出参数

近两天一有空就会去看看项目代码,思考一下如何利用cmockery对项目里已有的代码进行测试。项目代码中很多被调用的接口都带有输出参数,而且在这些接口中多利用返回值指示执行成败也否,而利用输出参数返回一些关键结果,这些结果值甚至影响着后续的函数执行流程。前期研究cmockery时没有注意到cmockery是否可以设置被mock接口的输出参数的值,不过回顾了一下cmockery实现的原理,觉得cmockery是应该可以支持的。遂重新翻看了一下cmockery的manual,发现在mock_query_database中确有对输出参数的mock调用,代码如下: // Mock query database function. unsigned int mock_query_database( DatabaseConnection* const connection, const char * const query_string, void *** const results) { *results = (void**)mock(); return (unsigned int)mock(); } void test_get_customer_id_by_name(void **state) { DatabaseConnection connection = { “somedatabase.somewhere.com”, 12345678, mock_query_database }; int customer_ids = 543; will_return(mock_query_database, &customer_ids); will_return(mock_query_database, 1); assert_int_equal(get_customer_id_by_name(&connection, “john doe”), 543); } ...

August 26, 2009 · 2 min · Tony Bai

C单元测试之使用cmockery

这么久以来一直没有找到一款很好的支持mock测试的C语言单元测试工具包,但前不久在一网友的评论中得知:去年Google曾发布了一款c语言的轻量级单元测试framework — “cmockery”,cmcokery很小巧,对其他开源包没有依赖,对被测试代码侵入性小;它支持mock test,同样也可以支持常规的单元测试。 之前在博客中曾描述过C语言实现mock的一个思路,不过和cmockery对比起来,当时我的思路显然还处于初级阶段,而cmockery则走到了更高级,使用起来也更为简便。 还是以我上一篇文章中的代码来举例,利用cmockery来对biz.c进行mock test。 应用层被测试代码不变: /* biz.h */ #ifndef BIZ_H #define BIZ_H ...

August 22, 2009 · 4 min · Tony Bai

模拟器陷阱

暑去清凉来,一场大雨让燥热一去不复返了,这让身体舒服了许多。本周四晚有一次产品升级操作,按惯例每次升级前的都会对产品做一次针对性的回归测试,这次也不例外,不过临近下班时测试组爆出一个莫名奇妙的问题。 测试人员在BUG说明中写到:产品在只运行某个流程A的情况是正常的,但是当流程A和流程B一起运行时,就会出XX异常情况。作为开发人员遇到类似的问题第一反映多为:这怎么可能呢?这个产品已经经过N轮测试并且早前已在某个省份上线运行了近两个月,如果有此潜在的BUG应该早就暴露出来了才对。及时找到测试人员沟通,测试人员很轻松的就复现出了该BUG,眼见为实!离升级时间点已经不多了,赶紧解决吧。 ...

August 22, 2009 · 2 min · Tony Bai

天儿太热了!

记得一年前的六月份到北京客户那里开会,从Taxi里出来后,走在北京著名的金融街上,那叫一个热!夹杂着湿气的热浪一阵阵的扑面而来,让我浑身不舒服,豆粒大的汗珠瞬间就从额头、颈部流了下来。见识过北京糟糕的夏季天气的我当时心里还在庆幸:还好这是在北京,远在东北的沈阳可从来没有这么热过,起码没热的这么难受。 ...

August 12, 2009 · 2 min · Tony Bai

我眼中的哈利波特6

周二半价日,委托一个朋友提前买了"哈利波特与混血王子"的电影票,位置在百老汇影城,虽说提前了(如果下班后再买,基本就得等午夜场了),但是还是晚了,只买到了8号小厅的票。下了班车,紧赶慢赶还是差了5分钟,习惯了在一号大厅看片,冷不丁的来到小厅还有些不是很适应。屏幕略小,而且效果一般,屏幕最左侧还有些光影瑕疵,顿感不爽。但位置还不错,厅的正中。此时离首映都一个半月过去了,人还是不少,当然了半价也是吸引大家的一个重要原因。 ...

August 1, 2009 · 3 min · Tony Bai

分享一个Oracle OCI库的BUG

上周测试组反馈在一台HP X86-64主机Solaris 10 for X86环境下部署的应用无法连接Oracle数据库,错误码ORA-12154。而另外一个产品的部署在这台主机上的应用却能正常连接到数据库。本周安排专人对该问题进行查找,在先后排除了用户环境设置、Oracle数据库服务端等问题后,我们最终把目光集中在了Oracle客户端的OCI库上。 ...

July 31, 2009 · 2 min · Tony Bai

Picasa Web Albums疑似被和谐了

网络相册,我一直用Google的Picasa Web Albums。若干年前的我最初使用的是Flickr,可好景不长,Flickr的图片地址在国内无法访问到了。无奈换到Picasa Web Albums,当初还花了好大力气将各个blog文章中的图片重新上传到Picasa,并更换文章中的链接。近期我最喜欢的巴萨开始正式赛季前的热身了,本打算写几篇文章发表下看法,但是却发现Picasa Web Albums无法显示相册图片了,而且以前上传的图片在blog中也无法显示出来。到Google的帮助中心看了一下,才发现原来国内很多地方的网友都在帮助中心的论坛上发帖,咨询为什么无法看到Picasa的图片了。这时我才醒悟:疑似Picasa Web Albums遭遇了与饭否等的同等待遇-被和谐了。 ...

July 27, 2009 · 1 min · Tony Bai

周末“捉虫”记

周六,对于上班族来说是多么好的日子,能在家里享受自由的无拘无束的生活而且不用担心第二天的工作,应该说是一周中最没有压力的一天。六点半起床,慢慢喝下一杯225ml左右的凉白开(保健医生说20-25摄氏度的凉白开比较适宜作为起床后的第一杯水),套上运动短裤和上衣,打开MP3播放器,塞上耳机,出门在园区内慢跑。昨晚下了一场雨,所以园区早上的空气很好。耳畔酷玩乐队的“Viva La Vida”让我跑起来很轻松,30分钟的有氧慢跑能让我的大脑和心脏获得足够的氧气,心情也变得更好。最后绕着园区走上一圈结束锻炼。 ...

July 18, 2009 · 4 min · Tony Bai

体检·SSH·Safari4

一年一度的公司福利体检结果刚刚出炉不久,与去年相比,我今年身体状况有些“不妙”:体重超重、血压有些偏高,另外谷丙转氨酶也略高于正常值。今天中午公司委托体检机构安排一名老医生给我们说说体检结果。老医生针对从全体员工体检结果中统计出的TOP3问题状况给出了具体的讲解和预防/缓解措施。这三个常见身体状况是:超重/肥胖、高血脂/血糖和脂肪肝,相信不仅我们公司的员工有这些问题,大多数做IT的人都或多或少有类似的情况。医生的讲解让在座的同事们不时发出“惊叹之声”。如何摆脱这些身体问题,老医生给了我们一个大家可能都熟知的“六字真经”:管住嘴,迈开腿。其实真经大家都知道,但是能否坚持做下去,这个却不是每个人都能肯定的。关于谷丙转氨酶略高的问题,医生的答复是:“可能与体检前一阶段的睡眠不好、压力过大等等有一定关系,问题不大。不放心可一段时间后去复查一下”。听了这番解释,我悬着的心才放了下来。 ...

July 17, 2009 · 3 min · Tony Bai

“牢骚”几句

饭否无法访问,Twitter也无法访问,不知道是否是被GOV和谐了,弄得我想“牢骚”几句都没有地方。 下午在家里“关门闭户”独自一人通过家庭影院重温了2007年上映的真人版“Transformers”以及一张花絮盘。虽然这部片子看过多次了,但是今天看起来依旧还是那么“起劲儿”。从花絮里看到了幕后电影制作人员努力和智慧,要知道仅仅一个擎天柱身上的零件就达到了10000多个,而且制作人员为了提高逼真度,每个重要的零件都是来摄自真实的汽车零件图片。 ...

July 12, 2009 · 2 min · Tony Bai