ClearCase tips

记载关于clearcase的一些常用命令:

(alias ct /opt/rational/clearcase/sun5/bin/cleartool)

1.使用view –  setview,通常是在服务器上打开已经mount的view
ct setview clsallall_dev

2.如果view没有开启,需要通过下面这个打开:
ct startview clsallall_dev

3.查找element,比如用在检查要部署的文件有没有正确放到clearcase
find ./ -version ‘{lbtype_sub(label1) && !lbtype_sub(label2) }’ -print
–列出打了label1而没有打label2的所有元素
find ./ -version ‘{version(mainLATEST) && !lbtype_sub(label1)}’ -print
–列出最新版本的元素中没有被打上label1的元素

4.打label(标签)
ct mklbtype -nc USR_BAU_SRXXX

spring的tip

发现用spring有一个问题,如果某个人忘记加入一个类文件,而这个依赖是在spring中体现的,那么在编译时不会报错, 而显然是不好的.这种错误应该在编译的时候就应该报出来. 考虑在编译时检查一次bean依赖, 最简单就是初始化一次application-context.

links for 2008-05-27

idea书屋网

为什么不可以提供一个专门针对书屋活动的网站。所谓书屋就是经常可以看到的社区附近的一些小书店,虽然小却贴近生活,书的类型也比较侧重生活,文化方面。如果有一个这样的网络,书屋可以更贴近社区 – 这也是书屋最想达到的境界。书屋主人可以自己营造一个“社区”来吸引更多的读者,增加交流。
而一般人,可能会通过这样的网络去找到附近的各种书屋,以及每个书屋的特色,进而可以多点读书的兴趣。

再往后书屋应该逐渐向社区图书馆融合,毕竟“书城”功能还是有限的 – 他可以提供大全广 – 用来买书,却不可以提供小快舒适的环境 – 用来读书。
现在好像大家都不读书写字了,让更多的人有读书的兴趣,也算是一件有意义的事。

HttpUnit的一些实践体会

1.编程式的web测试,可以把httpunit看作是firefox
2.可以用来做smoke test,最简单的做法就是遍历一遍所有的链接或点击一遍所有的按钮
3.用来检查行为而不是表现,比如你可以用httpunit来测试验证是否起作用,但不可以用眼验证按钮的名字是不是拼错了.(其实理解这点很容易,HttpUnit会整合到测试套件并会在每次构建后被自动执行,有点类似回归测试(测试新的改变会不会影响到原来的功能),如果像按钮名字错误这样的错误,是不会影响到系统运行的,改好了就是好了,没有什么其他的猫腻. 所以,如果为了这种错误来搞一大堆测试用例就只能用”闲的蛋疼”来形容了.
4.上面这种情况不是绝对的,如果你的项目不是企业应用,而是一个纯表现层的应用,你需要测试javascript或者css,也许htmlunit,jsunit会比较合适
5.批量的生成测试用例,通过一些数据feed来生成测试用例,这些数据可以是csv格式的数据映射 – 便于增加,扩展.
6.很多人还是很难接受HttpUnit,似乎人都有一种”认为自己的代码不会出错”或者”出错改好以后不大会再错”的倾向.(可能这就是乐观)
7.还有一种情况是”需求仍然有改动,我维护一套测试用例岂不是多了一重负担”. 呵呵,首先测试肯定是不可避免的,如果没有测试用例,你仍然要手动去测试当然如果你说这个QA的事,那就没办法了.而测试用例只是在需求改动后改一次而已,因为以后都是可重复的,可自动化的 – 这保证了同样原因的问题不会出现第二次.
8.根据实际的应用需求设计合适的测试用例也是很必要的,不需要OO,可以把测试用例看作一些批处理的操作
9.依赖数据的测试用例最好用一个独立的数据库,这不只是httpunit时候需要的了.我们用dbunit来初始化数据,非常灵活简单.但是准备这套用来测试的数据并且和测试用例同步也是很多人觉得”没意义”的事情.

DbUnit的AmbiguousTableNameException

昨天在用Dbunit时遇到这个异常:

org.dbunit.database.AmbiguousTableNameException: BIN$KWdKkk3jYEvgQAB/AQAa8A==$0<br />

在这里找到了答案
因为oracle会保存一些已经被删除的表在recycle bin里面.回想起来我确实在执行dbunit前删除了一些表.
在oracle命令行执行 “PURGE RECYCLEBIN” 既可以删除这些临时表.或者过一段时间这些表自然会被oracle删掉.