马上行动 - Action Now
===========================================================
我用FreeMind
===========================================================

原文出处:http://risker.org/tech/FreeMind/
1. 所谓MindMap
1.1 MindMap是什么
MindMap是什么呢?其实是英国人托尼·巴赞创造的一种提出笔记方法,和传统的直线记录方法完全不同,它以直观形象的图示建立起各个概念之间的联系。在国内,MindMap又被称为脑图或思维导图。

思维导图(Mind Mapping)以放射性思考(Radiant Thinking)为基础的收放自如方式,除了提供一个正确而快速的学习方法与工具外,运用在创意的发想与收敛、项目企划、问题解决与分析、会议管理等方面,往往产生令人惊喜的效果。它是一种展现个人智力潜能极至的方法,将可提升思考技巧,大幅增进记忆力、组织力与创造力。它与传统笔记法和学习法有量子跳跃式的差异。

1.2 MindMap软件介绍
其实当前MindMap软件相当多,最为流行的应该这三款:

Mindjet MindManager
Inspiration
FreeMind
对我来说,FreeMind最合适,原因有二:

跨平台,这样无论我在Windows、Debian或者FreeBSD下都可以正常使用;
采用xml保存数据,方便读取或者与其它程序转换;
功能简洁,却又恰到好处的够用,因此我就选定它了!

2. 我用FreeMind
2.1 速读
通过我的读书笔记可以看出,用FreeMind做记录是非常方便的。

采用了FreeMind后,我对一些“快餐书籍”的阅读方式是这样的:

仔细看一遍目录,根据目录先画一张mindmap,基本把握作者的思路;
进入阅读状态,边读边写写画画,圈出重点,读完一章,便在mindmap中完善一章的内容,如此周而复始;
看整张mindmap,从整体回顾,找出重点,标记不同的颜色以便今后重点重读,并且结合自己的感觉,填进mindmap中;
扔开mindmap,闭上眼睛回忆阅读的结果。
2.2 小项目管理
FreeMind有个很好的功能是根据目录创建文件,也就是可以根据某个目录下的文件结构来直接生成一个MindMap,这个功能也很诱人,于是我利用它来管理我的小项目。

首先直接生成一幅MindMap,然后进行部份细节调整和分类,再标出生要等级。当项目中有新任务创建时,就做简单记录。这样就能轻松地将企业内部的项目放在一起全盘考虑和分析了。

2.3 脑力激荡
一帮朋友在一起讨论某个创业机会时、几个程序员在商量产品功能特点的时候、企业管理人员聚会研究公司发展战略的时候……或者,仅仅是自己想写一篇文章的时候,比如我现在:)

FreeMind是否都能助你一臂之力?

2.4 会议记录
会议记录这点似乎乏善可陈,谁都能看出用它做会议记录,相对较能抓住所谈事务的主题,并且容易促进与会者的关联分析。

3. 小技巧
3.1 快捷键或鼠标
我常用的快捷键有:

在下方新增节点 = Enter
新增子节点 = INSERT
在上方新增节点 =Shift+Enter
查找 = Ctrl+F
编辑 = F2
展开或缩起 = Space

当然,按F3-F9能够给节点设置不同的颜色等等,也是很常用的。另外还有些组合键,如按住Alt键后用鼠标选中根节点,就是全选。按住Ctrl+Shift后用鼠标连接两个节点,便是在节点间创建连接线……快捷键也可以自定义,但通常无须这样做。具体的细节也可以参见帮助文件。

3.2 在web上发布
当你精心完成一个MindMap后,是否有希望别人看到的愿望呢?直接通过freemind-browser可以轻松地将Mindmap发表到网站上,并且访问者能够象直接操作程序般对各节点进行展开、关闭等行为。

只要将freemindbrowser.html中的两部份稍做修改,即标题和具体mm文件的位置,并连同freemindbrowser.jar一起复制到你的web服务器上,用户应该就能够正常浏览了。

3.3 聪明的复制与粘贴
FreeMind比其它软件优势的一个地方还在于它智能的复制方式,例如,我可以通过一个有缩进层次关系的txt、html或其它文件复制成很漂亮的MindMap,也能将MindMap直接复制进word、excel甚至outlook中,并保持良好的缩进和层次关系。

3.4 修改配置文件
在一份user.properties的文件中,保存着许多可配置的选项,其中仅有几项是通过Edit->Preference可以设定的。这份文件通常在你的~目录下,在windows 2k、xp和2003下,应该在c:Documents and Settings(your user name) freeminduser.properties,如果是Win9x下则在C:WINDOWSfreeminduser.properties,要判断你的HOME目录,可以直接在cmd窗口输入:echo %HOMEPATH%

里面的部份格式如下:

## Experimental features, "true" / "false"
#experimental_file_locking_on = false
##If dnd is enabled. "true" or "false"
#draganddrop = true
###The Modes which Freemind will load on startup, full Class names separated by a comma.
#modes = freemind.modes.browsemode.BrowseMode,freemind.modes.mindmapmode.MindMapMode,freemind.modes.filemode.FileMode
##The initial mode that is loaded on startup
#initial_mode = MindMap
并不难理解,就不多做说明了。

3.5 MindManager数据导出到FreeMind
身边有很多朋友使用的Mind Map工具是MindManager X5,这毫无疑问是一款杰出的商用软件,但与FreeMind之间的格式却是不相通用的,好在两者都采用xml格式来保存数据,因此数据转换并不困难。

先用解压缩工具打开MindManager的*.mmap文件--该格式实际上就是将相关信息打包压缩。下图是用winrar打开时的情况,我们可以看到里面有一个Document.xml的文件,这就是MindManager的主文件了。

采用特定的xslt,比如mm2fm.xslt,再配合xsltproc软件,将Document.xml解压后直接进行处理,便能够轻松地将该xml顺利转成Freemind所能理解的mm格式:

c:xsltproc>xsltproc.exe -o ssp2p.mm mm2fm.xslt Document.xmlc:xsltproc>
3.6 FreeMind数据保存到MindManager
因为成功地游说了几个朋友转移到FreeMind上来,因此一般我自己没有这个需求,偶尔要做这种转换时,就投机取巧了一把:

选择File->Export to HTML,将mm导出为html;
用MS Word打开该html文件,并另存为Word的doc格式;
打开MindManager,采用File->Open->Microsoft word document(*.doc,*.dot),选定刚才保存的文件后打开。

3.7 添加自己的插件
一个程序如果可定制程度高,当然能让人觉得更加自由。MindManager可以使用vb编写宏,并且直接载入菜单,这方面FreeMind做得如何呢?

答案是:相当出色,事实上你可以用java或者jython编写插件并加载。

在windows下,到C:Program FilesFreeMindaccessoriesplugins下创建文件Pyhello.py如下:

from freemind.extensions import NodeHookAdapterimport javax.swing as swingclass Pyhello(NodeHookAdapter): def __init__(win): win = swing.JFrame("HelloWorld") win.size = (200, 200) win.show()instance=Pyhello()
这是插件程序本身,唯一的功能就是显示Hello World :)

创建Pyhello.properties如下:

documentation=This is a simple Jython script that tests the node hook possibilites
## the script returns an object of this type:base=freemind.extensions.NodeHookAdapterscript=Pyhello.pymodes=freemind.modes.mindmapmodedocumentation=welcome to risker.orgicon=accessories/plugins/icons/kcmsystem.png
这里定义了上面那个程序的位置、运行模式、说明及图标,重新载入FreeMind时,我们可以看到在工具栏上多出一个图标,点击弹出helloworld。

3.8 数据导出
当前的最新测试版本是v 0.72,在这个版本中新增了将MindMap导出为图片或xslt文件的插件,不用费劲心机地截屏或者打印了,直接存成图片发送好了。


nmtcolin 发表于:2006.06.09 09:18 ::分类: ( Testing ) ::阅读:(611次) :: 评论 (9)
===========================================================
我收藏的链接(http://jackei.cnblogs.com/archive/2005/04/10/135242.aspx)
===========================================================

燕南-思想门户学海领航 无意中发现的网站读书 --养心莫若寡欲,至乐无如读书I love beyond——永远的Beyond
三思科学网站——国内最著名的科普网站,内容非常好! 虽然我们不太可能成为科学家,但还是应当具备一些基本的科学素养,并且学会科学的看待问题。人民网专题之“今日曝光”——好好看看吧!我不是想告诉人们这个世界多么的丑恶,而是大家都应该有权力知道真相南方周末——《南方周末》的网络版 现在的《南方周末》已经让人有一种被阉割的感觉,每次看到报纸都让人有种怀念以前的感觉。历史上的今天——看看历史上的今天发生过什么 图行天下——一个非常好的在线地图,功能强大,定位准确。推荐广州的朋友使用。在线翻译 个人感觉翻译质量还可以接受,对我等E文差生,算是一个好帮手了。大航海时代——永远的大航海II 永远都无法忘记大学时最喜欢的一个游戏。广州指南

校园民谣网——一个我很喜欢的校园民谣网站 素心书斋——提供了很多冷门的哲学、经济学以及其他人文社会科学的书籍下载 。曾经这也是网上唯一一个提供这方面书籍的网站。很喜欢。能力成熟度整合網 ——无意中发现的一个网站,有时间慢慢看看,希望可以从彼岸学习到一些不同的方法。

http://debian.cn99.com/--国内一个很快的Debian服务器

The Debian GNU/Linux FAQ
JMeter 用户手册,资源链接

Debian GNU/Linux 安装手册
广州天气预报-广东气象台

FVWM简明使用手册

Feedback

# re: 我收藏的链接 回复

2006-02-26 22:04 by jackei
http://opensourcetesting.org/

# re: 我收藏的链接 回复

2006-02-26 22:05 by jackei
Better Software Magazine

http://www.stickyminds.com/BetterSoftware/magazine.asp

# re: 我收藏的链接 回复

2006-02-26 22:06 by jackei
Software QA and Testing Resource Center ★★★★★

http://www.softwareqatest.com/index.html

# re: 我收藏的链接 回复

2006-02-26 22:11 by jackei
QA Forums

http://www.qaforums.com/

# re: 我收藏的链接 回复

2006-02-26 22:37 by jackei
Software Performance Testing and Training

http://www.perftestplus.com/

# re: 我收藏的链接 回复

2006-03-19 17:49 by jackei
逃之夭夭的blog 有关 Watir 和其他技术

http://www.blogjava.net/raimundox/

# re: 我收藏的链接 回复

2006-03-19 17:50 by jackei
一个 Watir 的应用

http://www.blogjava.net/martinx/archive/2006/01/23/29032.html

# re: 我收藏的链接 回复

2006-03-19 18:02 by jackei
Watir 的主页

http://wtr.rubyforge.org/

# re: 我收藏的链接 回复

2006-04-02 19:41 by jackei
《出租司机给我上的MBA课》作者的 blog

http://blog.run2me.com/runliu/

# re: 我收藏的链接 回复

2006-04-11 12:05 by jackei
BEA 的技术社区,有一些不错的性能测试方面的资料, 包括 J2EE 应用,WebLogic,Tuxedo 等方面。

英文版: http://dev2dev.bea.com/

中文版: http://dev2dev.bea.com.cn/

# re: 我收藏的链接 回复

2006-04-11 12:06 by jackei
IBM 的 DeveloperWork 社区,有不少关于 Linux 、WebSphere 、J2EE 以及性能测试基础、调优方面的文档

英文版: http://www-128.ibm.com/developerworks/

中文版: http://www-128.ibm.com/developerworks/cn/

# re: 我收藏的链接 回复

2006-04-11 12:07 by jackei
MSDN,不用我多说了吧?关于 WINDOWS 、SQL SERVER 等方面的开发、配置、性能优化,诸如此类,自己找吧。

英文版: http://msdn1.microsoft.com/en-us/default.aspx

中文版: http://www.microsoft.com/china/msdn/

# re: 我收藏的链接 回复

2006-04-26 22:45 by jackei
计世资讯 的 IPTV 栏目

http://www.ccwresearch.com.cn/store/column.asp?columnId=23&view=

# re: 我收藏的链接 回复

2006-06-01 15:54 by jackei
=两个不错的英语学习网站=

中国英语学习网

http://www.24en.com/


英语之声

http://www.4english.cn/englishstudy

# re: 我收藏的链接 回复

2006-06-06 16:09 by jackei
Microsoft Job in China

http://members.microsoft.com/careers/international/default.asp?lang=EN&loc=CHN

# re: 我收藏的链接 回复

2006-06-06 16:10 by jackei
竞学网-英语学习

http://www.jxue.com/xlist.aspx?cID=489

# re: 我收藏的链接 回复

2006-06-07 23:33 by jackei
使用数字电视关键技术典型的数字电视系统框图

http://sh.sina.com.cn/20041207/231743447.shtml


有线网络数字电视平台的基本构架是怎样的?

http://sh.sina.com.cn/20041207/231943449.shtml


数字电视有条件接收(CA)是什么意思?为什么要有CA功能?有几种终端实现方式?

http://sh.sina.com.cn/20041207/232043450.shtml

# re: 我收藏的链接 回复

2006-06-07 23:59 by jackei
PKI/CA的部署与工程实施

http://media.ccidnet.com/media/ccu/562/03901.htm


国富安电子证书和CA系统介绍

http://www.cacenter.com.cn/product/index_product.asp


吉大正元电子证书认证系统

http://www.jit.com.cn/support/productor/INDEX.ASP


安装和配置证书颁发机构

http://www.microsoft.com/technet/prodtechnol/windowsserver2003/zh-chs/library/ServerHelp/d6eab6a4-a680-40b0-9fde-4978be14ebf4.mspx?mfr=true


安证通介绍

http://www.itrus.com.cn/support/faq/itrus/faq_004.asp


CA(certification authority)的设计与实现

http://bbs.chinaunix.net/viewthread.php?action=printable&tid=86064

nmtcolin 发表于:2006.06.08 23:02 ::分类: ( Testing ) ::阅读:(3517次) :: 评论 (0)
===========================================================
测试工具的选择和使用
===========================================================
2003年第9期《程序员》上啄木鸟部落发文“测试工具的选择和使用”,现将其中的工具列表摘录,以备忘

Parasoft白盒测试工具集

工具名支持语言环境简介
JtestJava代码分析和动态类、组件测试
JcontractJava实时性能监控以及分析优化
C++ TestC,C++代码分析和动态测试
CodeWizardC,C++代码静态分析
Insure++C,C++实时性能监控以及分析优化
.test.Net代码分析和动态测试

Compuware白盒测试工具集

工具名支持语言环境简介
BoundsCheckerC++,DelphiAPI和OLE错误检查、指针和泄露错误检查、内存错误检查
TrueTimeC++,Java,Visual Basic代码运行效率检查、组件性能的分析
FailSafeVisual Basic自动错误处理和恢复系统
JcheckM$ Visual J++图形化的纯种和事件分析工具
TrueCoverageC++,Java,Visual Basic函数调用次数、所占比率统计以及稳定性跟踪
SmartCheckVisual Basic函数调用次数、所占比率统计以及稳定性跟踪
CodeReviewVisual Basic自动源代码分析工具

Xunit白盒测试工具集

工具名支持语言环境官方站点
AunitAdahttp://www.libre.act-europe.fr
CppUnitC++http://cppunit.sourceforge.net
ComUnitVB,COMhttp://comunit.sourceforge.net
DunitDelphihttp://dunit.sourceforge.net
DotUnit.Nethttp://dotunit.sourceforge.net
HttpUnitWebhttp://c2.com/cgi/wiki?HttpUnit
HtmlUnitWebhttp://htmlunit.sourceforge.net
JtestJavahttp://www.junit.org
JsUnit(Hieatt)Javascript 1.4以上http://www.jsunit.net
PhpUnitPhphttp://phpunit.sourceforge.net
PerlUnitPerlhttp://perlunit.sourceforge.net
XmlUnitXmlhttp://xmlunit.sourceforge.net

主流黑盒功能测试工具集

工具名公司名官方站点
WinRunnerMercuryhttp://www.mercuryinteractive.com
Astra QuicktestMercuryhttp://www.mercuryinteractive.com
RobotIBM Rationalhttp://www.rational.com
QARunCompuwarehttp://www.compuware.com
SilkTestSeguehttp://www.segue.com
e-TestEmpirixhttp://www.empirix.com

主流黑盒性能测试工具集

工具名公司名官方站点
WASM$http://www.micro$oft.com
LoadRunnerMercuryhttp://www.mercuryinteractive.com
Astra QuicktestMercuryhttp://www.mercuryinteractive.com
QaloadCompuwarehttp://www.empirix.com
TeamTest:SiteLoadIBM Rationalhttp://www.rational.com
WebloadRadviewhttp://www.radview.com
SilkperformerSeguehttp://www.segue.com
e-LoadEmpirixhttp://www.empirix.com
OpenSTAOpenSTAhttp://www.opensta.com

测试管理工具典型产品的比较

工具名称TestdirectorClearQuestBMSBugzilla
流程定制YYNY
查询功能定制YYYY
功能域定制YYYY
用户权限分级管理YYYY
Email通知YYYY
构架模式B/SC/S,B/SB/SB/S
报表定制功能Y强,集成Crystal Report有标准报表和高级报表,定制功能不够Y
支持平台WindowsWindows, UnixWindowsLinux, FreeBSD
支持数据库Oracle, M$ Access, SQL Server等Oracle, M$ Access, SQL ServerSQL Server等MSDEMySQL
安装配置的复杂度简单有些复杂容易不复杂
许可证费用昂贵昂贵适中免费
售后服务国内有多家代理公司提供相关服务在国内有分公司提供技术支持技术支持和服务体系完备可自行修改源代码
与其他工具集成本身又是测试需求、测试案例管理工具, 与winRunner, LoadRunner集成,并且具有多种主流Case工具接口Add-In与rational公司的其它产品无缝集成,特别与Clear Case配合以可实现UCM的配置管理体系M$ VSS, Project开源配置管理工具CVS
公司背景世界主流测试软件提供商已被IBM合并,世界著名软件公司微软与上海市政府新成立的软件企业 世界著名开源项目
商业化自动功能测试工具特性比较
特性WinRunnerSilkTestEtester
易于安装是,不支持设置代理服务等设置
GUI对象和脚本分离对象声明在单独的include文件中,但是case脚本中还有包含两者都在VB脚本的case中
toolbar/field定制可以无法定制toolbar,可以定制GUI的fields内容无法定制
操作系统WindowsUnix,WindowsUnix, Windows
浏览器NetScape,IENetScape,IENetScape,IE
支持测试对象HTML,DHTML,JavaScript,VBScript,XML,JAVA applets, ActiveX,VB, PowerBuilder,Delphi,Terminal Emulator,,Oracle,SAP,PeopleSoft, SiebelHTML, DHTML, JavaScript, XML, Java apps and applets, MFC, VB, Oracle, PowerBuilder, Delphi, SAPJava apps and applets in M$JVM/SunJVM, HTML, DHTML, JavaScript, XML, MFC, VB, Oracle, SAP, Delphi, Terminal Emulator, PowerBuilder, Oracle, Peoplesoft
脚本语言TSL第四代面向对象的脚本语言4Test,类似C++提供可编程接口,用户可使用标准语言扩展可视脚本,如VB,C++,Java
脚本调试功能强大类似C++DebuggerVBA Debugger结合Visual Script Debugger
允许数据驱动的测试
自动数据生成支持支持不支持
允许通过数据库验证数据通过ODBC及本地数据库连接自带Database Tester通过ODBC
应用程序改变后的脚本维护直接修改GUImap更新include 文件。自动更新无需录制
数据库支持市场流行的数据库市场流行的数据库市场流行的数据库
无人看管下的自动执行测试通过Testdirector允许允许,通???>??????师?过eTestSuite
分布式测试控制/同步/执行Testdirector支持支持支持
自动创建测试结果日志
非预期错误的恢复允许允许允许
与测试管理工具接口Testdirector自带Case管理功能。e-test suite
图形化设计脚本执行集合通过Testdirector设计不支持通过e-test suite设计
培训有,Onsite及public training有,提供kickoff training有,onsite及public training
技术支持曾获SSPA STAR荣誉很好客户对其评价
License灵活的记费方式,既可以按使用次数计费也可以按协议算永久使用费提供floating以及node-locked两种方式提供Floating以及Node-locked两种方式
价格昂贵较贵一般
Add-in收费部分收费不收费不收费
总论在全球的市场占有率较高,功能全面,价格昂贵在国内的推广还处于起步阶段价格较低,只支持web的测试,在金融、证券、电子商务等领域有广泛应用。

nmtcolin 发表于:2006.06.08 22:56 ::分类: ( Testing ) ::阅读:(3212次) :: 评论 (0)
===========================================================
怎样成为优秀 软件测试人员
===========================================================
软件测试员的目标是找出软件缺陷,尽可能早一些。

软件测试员的一个基本素质是:打破沙锅问到底。

大多数软件测试员应具备的素质:

1.探索精神:软件测试员不会害怕进入陌生环境。
有较强的学习能力,可以用最快的速度成为一个新的行业的专家(就像 jerod 那样)。
2.故障排除能手:软件测试员善于发现问题的症结,喜欢猜谜。可以迅速的通过事物的表面现象发现事物的本质,能够从琐碎的现象中发现内部的联系和规律。

3.不懈努力:软件测试员总是不停尝试。他们可能会碰到转瞬即逝或者难以重建的软件缺陷;他们不会心存侥幸,而是尽一切可能去寻找。
只要出现过的缺陷,就说明一定是存在的,找不到只能说明没有能够真的重新当时的环境和全部的操作细节。测试人员要能够敏感的察觉到细微的变化,并立即开始在大脑中努力重现之前的整个场景。把残存的瞬间记忆整理在纸上,通过分析,把这些碎片整理起来,最终找到缺陷重现的场景和规律。牢记:在做这样的事情之前给自己制定一个规则,例如只花费N多时间来努力重现这个缺陷,如果超过这个时限还没有找到,那么就把当前的工作整理成一份文档保留下来,然后去按计划继续进行下面的工作,直到再次“偶遇”这个缺陷。
4.创造性:测试显而易见的事实,那不是软件测试员;他们的工作是想出富有创意甚至超常的手段来寻找软件缺陷。
虽然创造性是必需的,但是还是更建议把大多数时间放在熟悉真实用户的工作上,测试的基础是现实中已经存在的场景,在冥思苦想新的场景的时候,先同用户沟通一下,试图发现一些新的场景效率会更高一些。有很多事实并不是那么显而易见。
5.追求完美:他们力求完美,但是知道某些无法企及时,不去苛求,而是尽力接近目标。
做任何事情都应当有一个策略,分配给每项任务一个指标或者一部分资源(也就是说如果这件事情成功,那么它带来的收益值得我们付出的最大成本),当这部分资源耗尽时,就停止这项任务。
6.判断准确:软件测试员要决定测试内容、测试时间,以及看到的问题是否算作真正的缺陷。
要不断的提高自己的专业素养,除了行业知识、测试专业知识以外,还要尽可能的去学习一些软件行业的基础知识,例如操作系统、数据库、程序设计开发、计算机网络等。
7.老练稳重:软件测试员不害怕坏消息。其实做任何工作、任何事情都一样,人生就是一个不断的发现问题和解决问题的过程,没什么好怕的。

8.说服力:软件测试员要善于表达观点,表明软件缺陷为何必须修复,并通过实际演示力陈观点。测试工作开展的好坏,很大程度上就靠沟通能力和展示自己工作的能力了。

9.在编程方面受过教育。一个有过开发经历的测试人员,对系统的领悟能力和学习速度同没有开发经历的测试人员是截然不同的。

nmtcolin 发表于:2006.06.08 22:48 ::分类: ( Testing ) ::阅读:(199次) :: 评论 (0)
===========================================================
开源测试工具介绍
===========================================================

Linux Test Project
http://ltp.sourceforge.net/
工具描述:
Linux Test Project是一个测试Linux内核和内核相关特性的工具集合。该工具的目的是通过把测试自动化引入到Linux内核测试,提高Linux的内核质量。
使用环境:
Linux

MaxQhttp://maxq.tigris.org/
工具描述:
MaxQ是一个免费的功能测试工具。它包括一个HTTP代理工具,可以录制测试脚本,并提供回放测试过程的命令行工具。测试结果的统计图表类似于商用测试工具,比如Astra QuickTest和Empirix e-Test,这些商用工具都很昂贵。MaxQ希望能够提供一些关键的功能,比如HTTP测试录制回放功能,并支持脚本。
使用环境:
Java 1.2以上版本

WebInject
http://www.webinject.org/
工具描述:
WebInject是一个针对Web应用程序和服务的免费测试工具。 它可以通过HTTP接口测试任意一个单独的系统组件。可以作为测试框架管理功能自动化测试和回归自动化测试的测试套。
使用环境:
Windows, OS Independent, Linux

开源测试工具—性能测试工具

Apache JMeter
http://jakarta.apache.org/jmeter/
工具描述:
Apache JMeter是100%的Java桌面应用程序,它被设计用来加载被测试软件功能特性、度量被测试软件的性能。设计Jmeter的初衷是测试Web应用,后来又扩充了其它的功能。Jmeter可以完成针对静态资源和动态资源(讹误女监, Servlets, Perl脚本, Java对象, 数据查询s, FTP服务等)的性能测试。。 Jmeter可以模拟大量的服务器负载、网络负载、软件对象负载,通过不同的加载类型全面测试软件的性能。Jmeter提供图形化的性能分析。
使用环境:
Solaris, Linux, Windows (98, NT, 2000). JDK1.4以上.

DBMonster
http://dbmonster.kernelpanic.pl/
工具描述:
DBMonster是一个生成随机数据,用来测试SQL数据库的压力测试工具。
使用环境:
OS Independent

OpenSTA (Open System Testing Architecture)
http://portal.opensta.org/index.php
工具描述:
基于CORBA的分布式软件测试构架。使用OpenSTA,测试人员可以模拟大量的虚拟用户。OpenSTA的结果分析包括虚拟用户响应时间、web服务器的资源使用情况、数据库服务器的使用情况,可以精确的度量负载测试的结果。
使用环境:
OS Independent

TPTEST
http://tptest.sourceforge.net/about.php
工具描述:
TPTest的提供测试Internet连接速度的简单方法。
使用环境:
MacOS/Carbon、 Win32

Web Application Load Simulator
http://www.openware.org/loadsim/index.html
工具描述:
LoadSim是一个网络应用程序的负载模拟器。
使用环境:
JDK 1.3以上

开源测试工具—缺陷管理工具

Mantis
http://mantisbt.sourceforge.net/
工具描述:
Mantis是一款基于WEB的软件缺陷管理工具,配置和使用都很简单,适合中小型软件开发团队。
使用环境:
MySQL, PHP

Bugzilla http://www.mozilla.org/projects/bugzilla/
工具描述:
一款不错的软件缺陷管理工具。
使用环境:
TBC

开源测试工具—测试管理工具

TestLink
http://testlink.sourceforge.net/docs/testLink.php
工具描述:
基于WEB的测试管理和执行系统。测试小组在系统中可以创建、管理、执行、跟踪测试用例,并且提供在测试计划中安排测试用例的方法。
使用环境:
Apache, MySQL, PHP

Bugzilla Test Runner http://sourceforge.net/projects/testrunner/
工具描述:
Bugzilla Test Runner基于Bugzilla缺陷管理系统的测试用例管理系统。
使用环境:
Bugzilla 2.16.3 or above


nmtcolin 发表于:2006.06.05 21:33 ::分类: ( Testing ) ::阅读:(226次) :: 评论 (0)
===========================================================
CppUnit测试框架入门- -
===========================================================

下载源代码

  测试驱动开发(TDD)是以测试作为开发过程的中心,它坚持,在编写实际代码之前,先写好基于产品代码的测试代码。开发过程的目标就是首先使测试能够通过,然后再优化设计结构。测试驱动开发式是极限编程的重要组成部分。XUnit,一个基于测试驱动开发的测试框架,它为我们在开发过程中使用测试驱动开发提供了一个方便的工具,使我们得以快速的进行单元测试。XUnit的成员有很多,如JUnit,PythonUnit等。今天给大家介绍的CppUnit即是XUnit家族中的一员,它是一个专门面向C++的测试框架。

本文不对CppUnit源码做详细的介绍,而只是对CppUnit的应用作一些介绍。在本文中,您将看到:

      1、CppUnit源代码的各个组成部分。
      2、怎样设置你的开发环境以能够使用CppUnit。
      3、怎样为你的产品代码添加测试代码(实际上应该反过来,为测试代码添加产品代码。在TDD中,先有测试代码后有产品代码),并通过CppUnit来进行测试。

本文叙述背景为:CppUnit1.9.0, Visual C++ 6.0, Windows2000。文中叙述有误之处,敬请批评指正。

一、CppUnit源码组成

   CppUnit测试框架的源代码可以到 http://sourceforge.net/projects/cppunit/ 上下载。下载解压后,你将看到如下文件夹:


图一

主要的文件夹有:

  • doc: CppUnit的说明文档。另外,代码的根目录,还有三个说明文档,分别是INSTALL,INSTALL-unix,INSTALL-WIN32.txt。
  • examples: CpppUnit提供的例子,也是对CppUnit自身的测试,通过它可以学习如何使用CppUnit测试框架进行开发。
  • include: CppUnit头文件。
  • src: CppUnit源代码目录。

二、初识CppUnit测试环境

  解压源代码包后,您一定急着想看看CppUnit到底是个什么样?Ok,下面我们就来揭开CppUnit的神秘面纱:

1、进入example文件夹,用VC打开examples.dsw。我们先来看看CppUnit自带的测试例子。这些例子都是针对CppUnit自身的单元测试集,一方面这是CppUnit作者开发CppUnit框架过程中写的测试用例,另一方面,我们可以通过这些例子来学习如何在我们自己的工程中添加测试用例。

2、将CppUnitTestApp工程设为Active Project(Win32 Debug),编译后运行,则可以看到CppUnit的基于GUI方式进行单元测试TestRunner的界面。点击"Run",将会看到如图二所示界面:


图二

这是一个针对CppUnit的单元测试结果,它表明刚才我们做了11个测试,全部通过。
点击"Browse",我们还可以选择想要进行的单元测试,如图三:


图三

   CppUnit将所有的单元测试按照树的结构来表示。在CppUnit中,最小的测试单元,称为TestMethod测试方法,而多个相关的测试方法又可以组成一个TestCase测试用例。多个测试用例又组成TestSuite测试包。测试包互相嵌套在一起,就形成了上面我们看到的树结构。我们可以选择其中任意的树节点来进行单元测试。

3、将CppUnitTestMain工程设置为Active Project(Win32 Debug),编译并运行,我们来看看另一个单元测试的环境,如图四:


图四

   这是一个基于文本方式的单元测试环境。CppUnit提供了几种测试环境,一种基于文本,一种基于GUI,即图三。

4、将HostApp工程设置为Active Project(Win32 Debug),编译运行。如图五:


图五

   这亦是一个对CppUnit自身进行的测试,只不过它向我们演示的是各种失败的测试。在基于GUI的测试环境中,若测试不成功,进度条显示红色,反之则为绿色。从测试结果我们可以看到失败的单元测试名称,引起测试不能通过的原因,以及测试失败的语句所在的文件及所在行数。

三、CppUnit开发环境设置

  认识了CppUnit的测试环境,想必你已经是在磨拳擦掌,准备在你的开发过程中感受一下测试驱动开发的感觉了。不过,在使用CppUnit前,还需要设置一下你的开发环境。

1、CppUnit的lib和dll
  CppUnit为我们提供了两套框架库,一个为静态的lib,一个为动态的dll。

cppunit project:静态lib
cppunit_dll project:动态dll和lib

  在开发中我们可以根据实际情况作出选择。进入src文件夹,打开CppUnitLibraries.dsw。分别编译这两个project,输出位置均为lib文件夹。
  另外一个需要关注的project是TestRunner,它输出一个dll,提供了一个基于GUI 方式的测试环境,即前面我们提到的两种测试环境之一。我们也需要编译这个project,输出位置亦为lib文件夹。
为了方便开发,我们把这些编译出来的lib和dll(包括Debug版和Release版) copy 到我们自己建立的一个文件夹中(当然你也可以不这么做),例如F:cppunit1.9.0lib,同时我们也把CppUnit源代码中include文件夹copy到我们自己的include文件夹下。然后在VC的tools/options/directories/include files和library files中设置include路径和lib路径。最后别忘了在你的project中link正确的lib。

2、在你的VC project中打开RTTI开关。
  具体位置Project Settings/C++/C++ Language。

3、为TestRunner.dll设置环境变量
  TestRunner.dll为我们提供了基于GUI的测试环境。为了让我们的测试程序能正确的调用它,TestRunner.dll必须位于你的测试程序的路径下。但最简单的方法是在操作系统的环境变量Path中添TestRunner.dll的路径,这样是最省事的。

四、你的第一个TDD example

  一切准备就绪,现在我们可以来看看怎样添加测试代码了。前面我们提到过,CppUnit最小的测试单位是TestCase,多个相关TestCase组成一个TestSuite。要添加测试代码最简单的方法就是利用CppUnit为我们提供的几个宏来进行(当然还有其他的手工加入方法,但均是殊途同归,大家可以查阅CppUnit头文件中的演示代码)。这几个宏是:

        CPPUNIT_TEST_SUITE() 开始创建一个TestSuite 
        CPPUNIT_TEST() 添加TestCase 
        CPPUNIT_TEST_SUITE_END() 结束创建TestSuite 
        CPPUNIT_TEST_SUITE_NAMED_REGISTRATION() 添加一个TestSuite到一个指定的TestFactoryRegistry工厂 
感兴趣的朋友可以在HelperMacros.h看看这几个宏的声明,本文在此不做详述。

1、一个实现两个整数相加的类
  假定我们要实现一个类,类名暂且取做CPlus,它的功能主要是实现两个数相加(多简单的一个类啊,这也要测试吗?不要紧,我们只是了解怎样加入测试代码来测试它就行了,所以越简单越好)。 假定这个类要实现的相加的方法是:
int Add(int nNum1, int nNum2); 
Ok,那我们先来写测试这个方法的代码吧。TDD 可是先写测试代码,后写产品代码(CPlus)的哦!先写的测试代码往往是不能运行或编译的,我们的目标是在写好测试代码后写产品代码,使之编译通过,然后再进行重构。这就是Kent Beck说的"red/green/refactor"( 还记得基于GUI的测试环境的状态条吗?)。所以,上面的类名和方法应该还只是在你的心里,还只是你的idea而已。

2、在VC中为测试代码建立一个 Project
  通常,测试代码和被测试对象是处于不同的Project中的。这样就不会让你的产品代码被测试代码所"污染 "。
在本例中,我们将建立一个基于GUI 方式的测试环境。在VC中,我们建立一个基于对话框的Project。别忘了link正确的lib,本例中我们使用静态的CppUnit lib。由于我们希望这个Project运行后显示的是图2这样的界面,所以我们需要在App的 Instance()中屏蔽掉原有的对话框,代之以CppUnit的GUI。
CppUnit::MfcUi::TestRunner runner;
runner.addTest(PlusTest::suite()); //添加测试
runner.run(); //show UI
/*
CCPlusTestDlg dlg;
m_pMainWnd = &dlg;
int nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
	// TODO: Place code here to handle when the dialog is
	// dismissed with OK
}
else if (nResponse == IDCANCEL)
{
	// TODO: Place code here to handle when the dialog is
	// dismissed with Cancel
}
*/
   前面我们提到过,TestRunner输出图2这样的对话框,这也是前面我们为什么要为TestRunner.dll的路径设置环境变量的原因。
注意:PlusTest::suite()返回一个指向CppUnit::Test的指针.这个指针就是整个测试的起点。CppUnit::TestFactoryRegistry::getRegistry()根据TestSuite的名字返回TestFactoryRegistry工厂,然后调用工厂里的makeTest()对TestSuite进行组装,这是个递归调用,将建立起一个树状的测试结构。
namespace PlusTest
{
	CppUnit::Test* suite()
	{
		CppUnit::TestFactoryRegistry ®istry = 
			CppUnit::TestFactoryRegistry::getRegistry(plusSuiteName());
		return registry.makeTest(); 
	}
}

另外别忘加头文件:

#include "CPlusTestSuite.h"
#include
#include
3、在Project中加入一个类,取名CPlusTestCase
  CPlusTestCase从CppUnit::TestCase继承,代码如下:
class CPlusTestCase : public CppUnit::TestCase
{
	CPPUNIT_TEST_SUITE(CPlusTestCase);
	CPPUNIT_TEST(testAdd);
	CPPUNIT_TEST_SUITE_END();
public:
	CPlusTestCase();
	virtual ~CPlusTestCase();
	void testAdd(); //测试方法
}; 
看到这几个宏了吗?它们可是在这大显身手了一把。
CPPUNIT_TEST_SUITE(CPlusTestCase); 
CPPUNIT_TEST( testAdd ); 
CPPUNIT_TEST_SUITE_END(); 
  通过这几个宏,我们就把CPlusTestCase和testAdd注册到了测试列表当中。
另外,我们需要在Cpp文件中加入另外一个宏:
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(CPlusTestCase,PlusTest::plusSuiteName() ); 
  它将CPlusTestCase这个TestSuite注册到一个指定的TestFactory工厂中,这个TestSuite用 PlusTest::plusSuiteName()函数返回的名字来标识(前面介绍的suite()函数中就是通过这个名字来获取这个工厂的)。plusSuiteName()是PlusTest这个namespace下的一个函数,它返回我们为这个TestSuite建立的名字(本例我们取名为"plus")。其实我们也可以不用这么做,直接在宏里写入"plus"即可。但是这样可以防止硬编码带来的麻烦。

在测试类中,我们添加了一个测试方法:
void testAdd(); 

它测试的对象是前面提到的CPlus类的方法:

int Add(int nNum1, int nNum2); 

我们来看看它的实现:
void CPlusTestCase::testAdd()
{
	CPlus plus;
	int nResult = plus.Add(10, 20); //执行Add操作
	CPPUNIT_ASSERT_EQUAL(30, nResult); //检查结果是否等于30
}         
  CPPUNIT_ASSERT_EQUAL是一个判断结果的宏。CppUnit中类似的其它宏请查阅TestAssert.h,本文在此不做详述 。
  另外,我们还可以覆写基类的 setUp()、tearDown()两个函数。这两个函数实际上是一个模板方法,在测试运行之前会调用setUp()以进行一些初始化的工作,测试结束之后又会调用tearDown()来做一些"善后工作" ,比如资源的回收等等。当然,你也可以不覆写这两个函数,因为它们在基类里定义成了空方法,而不是纯虚函数。另外,Cpp中要加入头文件:
#include "plusSuite.h" 

4、根据测试代码编写产品代码
  编写完上面的测试代码后,进行编译。编译肯定通不过,编译器会告诉我们CPlus类没有声明,因为我们还没有实现CPlus类呢!现在的工作就是马上实现CPlus类,让编译通过。现在你应该嗅到一点"测试驱动"的味道了吧?
  在VC中建立一个MFC Extension Dll的Project,在这个Project 中加入类CPlus,它的声明如下:

class AFX_EXT_CLASS CPlus
{
public:
	CPlus();
	virtual ~CPlus(); public:
	int Add(int nNum1, int nNum2);
};        
仅有一个方法,就是我们的测试代码要测试的那个方法。来看看它的实现:
int CPlus::Add(int nNum1, int nNum2)
{
	return nNum1+nNum2;
} 
  非常简单,不是吗?现在让前面那个包含测试代码的Project dependent这个Project,include 相关头文件 ,Rebuild All,你会发现编译已通过。你体会到了测试代码驱动产品代码了吗?当然我们的这个例子还很简单 ,没有重构这一步骤。
运行我们的测试程序,你就会看到如图六的界面:


图六

单击"Browse", 如图七:


图七

  这下你应该对前面我们说的TestSuite的名字理解更深了吧。plus是一个测试包TestSuite,它的下面包含一个测试用例,这个测试用例下面又包含一个测试方法。
  至此,我们对CppUnit测试框架的应用作了一个详细的介绍,希望能对你在进行TDD过程中有所帮助。


nmtcolin 发表于:2006.06.05 21:32 ::分类: ( Testing ) ::阅读:(171次) :: 评论 (0)
自我介绍
切换风格
新闻聚合
博客日历
文章归档...
最新发表...
博客统计...
Blog信息
网站链接...