LoadRunner CPC考试居然没过, 68分,没有把我郁闷坏.
本来以为顶多能考四五十分,谁成想差那么2分,加油吧,下次一定要过了,否则浪费了考试的费用4,500千快,白花花的银子呐.
不过据51的老师们说,2007年的考试全部改成选择题,跟SP考试一样,当场出结果,难度可能降低了,没有挑战,那样岂不是没有多少含金量了,这是Mercury(美科利)被HP并购之后的对认证考试的最初的影响吧,天知道以后会不会全部并入HP的认证系统哪? (HP有什么认证好像没太听说过,知道的朋友给介绍介绍?)
--end
2007年1月31日星期三
[+/-] |
CPC考试居然差点没过 |
2007年1月30日星期二
[+/-] |
庆祝自己升级51系统测试版版主 |
经过努力,于今日升级为51testing系统测试版斑竹一职.
就职演说就免了,还是要发表一下感言:
首先感谢51各位老师特别是水老师和蒋老师的信任,我一定不辜负两位老师的信任.
在我做斑竹期间,我一定坚持弘扬51tesging一贯的对软件测试的专业精神,努力学习,提高自己.
在技术上和管理上争取有更大的进步,为51testing的发展和中国的软件测试事业贡献自己的力量.
首先技术上要不断否定自己,反思自己,总结自己, 学习国内外先进的测试经验和测试理论知识,自己总结特别是创作一些优秀的文章并与广大的网友分享,一起提高,一起进步.
管理上,要加强管理方面的学习,兢兢业业,做好日常的版块的管理工作.
希望得到各位的及时监督.
谢谢了哈.
--end
2007年1月29日星期一
[+/-] |
好的测试工程师应具备的素质 |
人是测试工作中最有价值也是最重要的资源,没有一个合格的、积极的测试小组,测试就不可能实现。然而,在软件开发产业中有一种非常普遍习惯,那就是让那些经验最少的新手、没有效率的开发者或不适合干其他工作的人去做测试工作。这绝对是一种目光短浅的行为,对一个系统进行有效的测试所需要的技能绝对不比进行软件开发需要的少,事实上,测试者将获得极其广泛的经验,他们将遇到许多开发者不可能遇到的问题。
①、沟通能力
一名理想的测试者必须能够同测试涉及到的所有人进行沟通,具有与技术(开发者)和非技术人员(客户,管理人员)的交流能力。既要可以和用户谈得来,又能同开发人员说得上话,不幸的是这两类人没有共同语言。和用户谈话的重点必须放在系统可以正确地处理什么和不可以处理什么上。而和开发者谈相同的信息时,就必须将这些活重新组织以另一种方式表达出来,测试小组的成员必须能够同等地同用户和开发者沟通。
②、移情能力
和系统开发有关的所有人员都处在一种既关心又担心的状态之中。用户担心将来使用一个不符合自己要求的系统,开发者则担心由于系统要求不正确而使他不得不重新开发整个系统,管理部门则担心这个系统突然崩溃而使它的声誉受损。测试者必须和每一类人打交道,因此需要测试小组的成员对他们每个人都具有足够的理解和同情,具备了这种能力可以将测试人员与相关人员之间的冲突和对抗减少到最低程度。
③、技术能力
就总体言,开发人员对那些不懂技术的人持一种轻视的态度。一旦测试小组的某个成员作出了一个错误的断定,那么他们的可信度就会立刻被传扬了出去。一个测试者必须既明白被测软件系统的概念又要会使用工程中的那些工具。要做到这一点需要有几年以上的编程经验,前期的开发经验可以帮助对软件开发过程有较深入的理解,从开发人员的角度正确的评价测试者,简化自动测试工具编程的学习曲线。
④、自信心
开发者指责测试者出了错是常有的事,测试者必须对自己的观点有足够的自信心。如果容许别人对自己指东指西,就不能完成什么更多的事情了。
⑤、外交能力
当你告诉某人他出了错时,就必须使用一些外交方法。机智老练和外交手法有助于维护与开发人员的协作关系,测试者在告诉开发者他的软件有错误时,也同样需要一定的外交手腕。如果采取的方法过于强硬,对测试者来说,在以后和开发部门的合作方面就相当于“赢了战争却输了战役”。
⑥、幽默感
在遇到狡辩的情况下,一个幽默的批评将是很有帮助的。
⑦、很强的记忆力
一个理想的测试者应该有能力将以前曾经遇到过的类似的错误从记忆深处挖掘出来,这一能力在测试过程中的价值是无法衡量的。因为许多新出现的问题和我们已经发现的问题相差无几。
⑧、耐心
一些质量保证工作需要难以置信的耐心。有时你需要花费惊人的时间去分离、识别和分派一个错误。这个工作是那些坐不住的人无法完成的。
⑨、怀疑精神
可以预料,开发者会尽他们最大的努力将所有的错误解释过去。测式者必须听每个人的说明,但他必须保持怀疑直到他自己看过以后。
⑩、自我督促
干测试工作很容易使你变得懒散。只有那些具有自我督促能力的人才能够使自己每天正常地工作。
11、洞察力
一个好的测试工程师具有“测试是为了破坏”的观点,捕获用户观点的能力,强烈的质量追求,对细节的关注能力。应用的高风险区的判断能力以便将有限的测试针对重点环节.
转载自CSDN
--end
[+/-] |
自动化测试的思考和总结之平台利器篇 |
上周休了一周的假, 在医院照顾老爸
这周继续自动化测试的思考系列,今天谈谈平台建设.
自动化测试一般来说,随着产品的不同,都会有不同的测试架构和测试平台,稳定和合适的平台对于一个产品的自动化测试来说,相对来说相当重要,有了合适的载体和工具,自动化测试就能很好的扩容和执行.
一般来说,自动化测试的平台包含以下一些方面:
测试管理部分--管理不同产品,不同版本的测试用例
测试执行部分--执行测试用例
测试维护部分--测试用例的维护,版本控制等
测试资源部分--测试资源特别是实验室资源的管理
测试调度部分--测试的调度,控制和执行中心
一般来说,这几个部分可以集成于一个平台本身,也可是独立的子系统,通过接口有机的结合起来,其实市场上也有很多商用的产品,比如Mercury的QC(Quality Center, Test Director的后续版本)就覆盖了其中的测试管理,测试执行等, Rational的Test Manager覆盖了另外一些部分等等.
因为这些商业工具相对来说,价格比较昂贵,而且对具体产品的适应能力等方面的考虑,不一定适合所有的公司,因此我们自己开发了自己的相应的系统.
测试执行平台:我们的测试执行平台其实覆盖了测试执行部分,测试维护部分和测试调度部分,是一个很强大的平台,从最初的1.0版本,到现在的2.1.1版本,基本可以支持我们公司的绝大多数的产品,另外测试管理的部分也有一些涉及,但是相对来说比较薄弱,特别是版本管理部分,目前是通过和测试管理工具的接口来实现的,我们正在改进这些薄弱的环节.
测试资源平台:我们也有一个自己开发的资源管理平台,可以预定实验室的各项资源,并用于测试,目前我们在测试执行平台预留了资源的相关接口.这部分跟具体的产品联系比较密切.
总体来说,下面这个图能详细说明这些部分之间的一个关系和接口.
下图是我们自己的测试执行平台的架构:
其中
ATS: automated testing system
LRMS: lab resource management system
TMS: test management system
(转载请注明出处)
--to be continued
2007年1月27日星期六
[+/-] |
老爸的颈椎病有救了 |
这几天一直在医院,老爸的颈椎病经过确证,是脊髓型颈椎病,椎间盘突出压制到中枢神经,导致四肢麻木,严重束缚感。对比两个月前在老家做的MRI(磁共振),已经压迫到第3/4/5脊椎,如果不及时解除压迫,很有可能导致全身瘫痪。
颈椎病一般分为三种类型,这种是最严重的,而且是唯一一种不能通过按摩或者其他保守疗法治疗的颈椎病。幸好是比较及时动了手术。不过,这种手术虽然目前已经比较成熟,还是存在很大的风险。手术主要是通过把颈椎挪开,然后植入钢板,在从其它部位取一块骨头垫上,等彻底融合之后就可以达到手术目的。手术费用主要是材料费比较贵(我老爸用的进口钢板,25,3000元,如果用国产的钢板,大概可以节省10,000多元,不过因为制作工艺,可能会影响到以后进食),其他费用不高,手术费用+药费+住院费用应该在10,000元左右。
今天是手术后第三天了,老爸的手和脚已经恢复差不多了,只是头部还暂时不能移动,而且三个月之内不能随意转动头部,否则可能导致进一步的麻烦。
我们的手术室在深圳平乐骨伤科医院脊柱外科做的,虽然这是二级甲等医院,但是总体来说,骨科的技术力量还是比较雄厚的。而且服务都还不错。我们是冲着这医院口碑不错的想法过去试试的,结果果然没有让我们失望。医院的前任院长郭春园是一位传奇式的医生,有点精神领袖的意味。
--end
2007年1月21日星期日
[+/-] |
世界网站之最 |
1、世界上最长的网站,号称已经18.939 kilometers 了,不相信,就进去看看。
不过如果你不是很闲的话,建议你乘坐电梯,否则,哈哈。。。自己看看就知道了。
http://worlds-highest-website.com/
2、世界上最小的网站。进来看看吧。
http://www.guimp.com/home.html
--end
2007年1月20日星期六
[+/-] |
Mercury LoadRunner的内部架构 |
Mercury LoadRunner的内部工作原理和架构。
以前看到过这个Mr Wilson的介绍,看来他对很多的工具和技术(不仅仅是LoadRunner)都有很深入地研究。
--end
[+/-] |
Oracle Database 10g为数据库管理员提供的20个最重要的特性(四) |
第 4 周
高速的导出/导入:Oracle Data Pump
利用 Oracle Database 10g 实用工具数据移动得到了很大的提高。
迄今为止,导出/导入工具集仍是跨多个平台转移数据所需劳动强度最小的首选实用工具,尽管人们常常抱怨它速度太慢。导入只是将每条记录从导出转储文件中读出来,然后使用常见的 INSERT INTO 命令将其插入到目标表中,因此导入可能是个很慢的过程,这一点并不让人感到吃惊。
进入 Oracle Data Pump,Oracle Database 10g 中的导出/导入工具包的更新更快的同类工具,它被设计来成倍地加速这个过程。
Data Pump 反映了整个导出/导入过程的彻底革新。它不是使用常见的 SQL 命令,而是应用专用 API 来以更快得多的速度加载和卸载数据。在我的测试中,我看到导出性能比在直接模式下提高了 10-15 倍,导入过程性能提高了 5 倍。此外,与使用导出实用工具不同,它还能够只取出特定类型的对象(如过程)。
Data Pump 导出
这 个新的实用工具称为 expdp,以和原来的导出 exp 区分开。在本例中,我们将用 Data Pump 来导出一个大表 CASES,大小约为 3GB。Data Pump 在服务器端使用文件处理来创建和读取文件;因此,目录作为位置使用。在这种情况下,我们将使用文件系统 /u02/dpdata1 来保存转储文件。
create directory dpdata1 as '/u02/dpdata1';
grant read, write on directory dpdata1 to ananda;
接下来,我们将导出数据:
expdp ananda/abc123 tables=CASES directory=DPDATA1
dumpfile=expCASES.dmp job_name=CASES_EXPORT
让我们来分析该命令的各个部分。用户 ID/口令组合、表和转储文件参数的意义是显而易见的。与原来的导出不同,文件是在服务器(不是客户端)上创建的。位置由目录参数值 DPDATA1 指定,它指向之前创建的 /u02/dpdata1。这个进程还在目录参数指定的位置上创建一个日志文件(同样在服务器上)。默认地,这个进程使用一个名称为 DPUMP_DIR 的目录;因此可以创建它来代替 DPDATA1。
注 意上面的参数 job_name,这是个特殊的参数,在原来的导出中没有。所有的 Data Pump 工作都通过作业来完成。Data Pump 作业 — 与 DBMS 作业不同 — 只是服务器进程,它代表主进程处理数据。主进程(称为主控制进程)通过高级队列 (AQ) 来协调这项工作;它通过在运行期内创建的一个特殊的表(称为主表)来实现这个目的。在我们的例子中,如果您在 expdp 运行时检查用户 ANANDA 的模式 ,您将注意到一个表 CASES_EXPORT 的存在(对应参数 job_name)。当 expdp 结束时,这个表被丢弃。
导出监控
当 Data Pump Export (DPE) 运行时,按 Control-C;它将阻止消息在屏幕上显示,但不停止导出进程本身。相反,它将显示 DPE 提示符(如下所示)。进程现在被认为处于“交互式”模式:
Export>
这种方法允许在这个 DPE 作业上输入几条命令。要查看概要,在提示符下使用 STATUS 命令:
Export> status
Job:CASES_EXPORT
Operation:EXPORT
Mode:TABLE
State:EXECUTING
Degree: 1
Job Error Count: 0
Dump file:/u02/dpdata1/expCASES.dmp
bytes written = 2048
Worker 1 Status:
State:EXECUTING
Object Schema:DWOWNER
Object Name:CASES
Object Type:TABLE_EXPORT/TBL_TABLE_DATA/TABLE/TABLE_DATA
Completed Objects: 1
Total Objects: 1
Completed Rows: 4687818
记住,这只是状态显示。导出在后台工作。要继续在屏幕上查看消息,从 Export> 提示符下使用命令 CONTINUE_CLIENT。
并行操作
您可以通过 PARALLEL 参数为导出使用一个以上的线程来显著地加速作业。每个线程创建一个单独的转储文件,因此参数 dumpfile 应当拥有和并行度一样多的项目。您可以指定通配符作为文件名,而不是显式地输入各个文件名,例如:
expdp ananda/abc123 tables=CASES directory=DPDATA1
dumpfile=expCASES_%U.dmp parallel=4 job_name=Cases_Export
注意 dumpfile 参数拥有一个通配符 %U,它指示文件将按需要创建,格式将为 expCASES_nn.dmp,其中 nn 从 01 开始,然后按需要向上增加。
在并行模式下,状态屏幕将显示四个工作进程。(在默认模式下,只有一个进程是可见的。)所有的工作进程同步取出数据,并在状态屏幕上显示它们的进度。
分离访问数据文件和转储目录文件系统的输入/输出通道是很重要的。否则,与维护 Data Pump 作业相关的开销可能超过并行线程的效益,并因此而降低性能。并行方式只有在表的数量多于并行值并且表很大时才是有效的。
数据库监控
您 还可以从数据库视图获得关于运行的 Data Pump 作业的更多信息。监控作业的主视图是 DBA_DATAPUMP_JOBS,它将告诉您在作业上有多少个工作进程(列 DEGREE)在工作。另一个重要的视图是 DBA_DATAPUMP_SESSIONS,当它与上述视图和 V$SESSION 结合时将给出主前台进程的会话 SID。
select sid, serial#
from v$session s, dba_datapump_sessions d
where s.saddr = d.saddr;
这条指令显示前台进程的会话。更多有用的信息可以从警报日志中获得。当进程启动时,MCP 和工作进程在警报日志中显示如下:
kupprdp:master process DM00 started with pid=23, OS id=20530 to execute -
SYS.KUPM$MCP.MAIN('CASES_EXPORT', 'ANANDA');
kupprdp:worker process DW01 started with worker id=1, pid=24, OS id=20532 to execute -
SYS.KUPW$WORKER.MAIN('CASES_EXPORT', 'ANANDA');
kupprdp:worker process DW03 started with worker id=2, pid=25, OS id=20534 to execute -
SYS.KUPW$WORKER.MAIN('CASES_EXPORT', 'ANANDA');
它显示为数据泵操作启动的会话的 PID。您可以用以下查询找到实际的 SID:
select sid, program from v$session where paddr in
(select addr from v$process where pid in (23,24,25));
PROGRAM 列将对应警报日志文件中的名称显示进程 DM (为主进程)或 DW (为工作进程)。如果一个工作进程使用了并行查询,比如说 SID 23,您可以在视图 V$PX_SESSION 中看到它,并把它找出来。它将为您显示从 SID 23 代表的工作进程中运行的所有并行查询会话:
select sid from v$px_session where qcsid = 23;
从视图 V$SESSION_LONGOPS 中可以获得其它的有用信息来预测完成作业将花费的时间。
select sid, serial#, sofar, totalwork
from v$session_longops
where opname = 'CASES_EXPORT'
and sofar != totalwork;
列 totalwork 显示总工作量,该列的 sofar 数量被加和到当前的时刻 — 因而您可以用它来估计还要花多长时间。
Data Pump 导入
不过,数据导入性能是 Data Pump 真正出色的地方。要导入先前导出的数据,我们将使用
impdp ananda/abc123 directory=dpdata1 dumpfile=expCASES.dmp job_name=cases_import
导入进程的默认行为是创建表和所有相关的对象,然后在表已存在时产生一个错误。如果您想把数据添加到一个现有的表中,您可以在上述命令行中使用 TABLE_EXISTS_ACTION=APPEND。
和使用 Data Pump 导入一样,在进程中按 Control-C 将进入 Date Pump Import (DPI) 的交互模式;同样,提示符是 Import>。
处理特定对象
您是否有过只需要从一个用户导出特定的过程,以在一个不同的数据库或用户中重新创建这些过程的情况?与传统的导出实用工具不同,Data Pump 允许您只导出特定类型的对象。例如,以下命令让您只导出过程,而不导出其它任何东西 — 不导出表、视图、甚至函数:
expdp ananda/iclaim directory=DPDATA1 dumpfile=expprocs.dmp include=PROCEDURE
要只导出一些特定的对象 — 比如说,函数 FUNC1 和过程 PROC1 — 您可以使用
expdp ananda/iclaim directory=DPDATA1 dumpfile=expprocs.dmp
include=PROCEDURE:"='PROC1'",FUNCTION:"='FUNC1'"
这个转储文件充当了源对象的一个备份。您甚至可以用它来创建 DDL 脚本,以供之后使用。一个称为 SQLFILE 的特殊参数允许创建 DDL 脚本文件。
impdp ananda/iclaim directory=DPDATA1 dumpfile=expprocs.dmp sqlfile=procs.sql
该指令在 DPDATA1 指定的目录中创建一个名称为 procs.sql 的文件,并将对象的脚本包含在导出转储文件中。这种方法帮助您快速地在另一个模式中创建源对象。
利用参数 INCLUDE 允许您从转储文件中定义要包含或排除的对象。您可以使用子句 INCLUDE=TABLE:"LIKE 'TAB%'" 来仅导出那些名称以 TAB 开头的表。类似地,您可以使用结构 INCLUDE=TABLE:"NOT LIKE 'TAB%'" 来排除所有名称以 TAB 开头的表。作为另一种选择,您可以使用 EXCLUDE 参数来排除特定的对象。
通过外部表,Data Pump 还可以用来传输表空间;它非常强大,能够即时地重定义并行方式,将更多的表添加到一个现有的进程中等等(这超出了本文的范围;关于更多详细信息,请参考 Oracle Database Utilities 10g Release 1 10.1)。以下命令显示Data Pump 导出实用工具提供的所有参数的列表:
expdp help=y
类似地,impdp help=y 将显示 DPI 中的所有参数。
当 Data Pump 作业在运行时,您可以通过在 DPE 或 DPI 提示符下发出 STOP_JOB 来暂停它们,然后用 START_JOB 来重起它们。这个功能在您空间不足和想在继续执行之前进行修改时非常方便。
--end
2007年1月19日星期五
[+/-] |
Hotel California |
关于Eagles的“Hotel California”,的介绍几乎多到泛滥。从六七十年代摇滚乐的繁荣上升时期以来,数不清的人们被这首绝世佳作深深地打动.有些乐队不但多产,而且精 品甚多,Eagles也是这样,但是正因为这首“加州旅馆”太过出色,以至人们只记得Eagles是唱"加州旅馆"的乐队。在九天音乐有整整一张cd,全 是“加州旅馆”的不同版本的演绎。但是总归最最动人的,最最经典的,还是Eagles自己演绎的Unplugged版本,只有吉他,鼓声伴奏。步入中年的 Eagles,光芒四射的舞台,唯一被人们记住的“Hotel California”,歌词里如同宿命般断言:你永远也离不开“Hotel California”,了,Eagles的终生成就,似乎只有这首“Hotel California”,霜华染鬓,怕见人去,不如帘儿底下,静静听人欢笑。灯影车流中,穿越喧嚣繁华,“热闹是他们的,我什么也没有。”现场歌迷们的喝 彩声浪里,是不被真正理解的Eagles的寂寞。借用中国的一句古语“成也萧何、败也萧何”,可能是《Hotel California》太成功了,以后,The Eagles再也没有创作出超过《Hotel California》的作品。或许是听众们太苛刻了,他们对这首歌曲近乎于崇拜的喜爱已使他们忽略了The Eagles其他的单曲。更有甚者,传说The Eagles到日本举行演唱会,演唱会第一支曲子就安排的是Hotel California,但演唱完了这首曲子之后,音乐会就走了近一半的人。
the eagles(老鹰乐队)
On a dark desert highway.
Cool wind in my hair.
Warm smell of colitas rising
Up through the air Up ahead in the distance.
I saw a shimmering light
My head grew heavy and my sight grew dim
I had to stop for the night
There she stood in the doorway
I heard the mission bell
And I was thinking to myself
This could be heaven or this could be hell
Then she lit up a candle
And she showed me the way
There were voices down in corridor
I thought I heard them say... ...
Welcome to the Hotel California
Such a lovely place (such a lovely face)
There's plenty of rooms at the
Hotel California
Any time of year you can find it here
Her mind is Tiffany-twisted
She got the Mercedes-Benz
She got a lot of pretty,
Pretty boys that she calls friends
How they dance in the courtyard
Sweet summer sweat
Some dance to remember
Some dance to forget
So I called up the captain
Please bring me my wine
He said we haven't had that spirit
Here since nineteen sixty nine
And still those voices are
Calling from far away
Wake you up in the middle of the night
Just to hear them say... ...
Welcome to the Hotel
California Such a lovely place
(such a lovely face)
They livin'it up at the Hotel California
What a nice surprise bring your alibis
Mirrors on the ceilling
The pink champagne on ice
And she said we are all just prisoners
Here of our own device
And in the master's chambers
They gathered for the feast
They stab it with their steely knives
But they just can't kill the beast
Last thing I remember,
I was running for the door
I had to find the passage back
To the place I was before
Relax said programmed to receive
You can check out any time you like
But you can never leave
--end
[+/-] |
自动化测试的思考和总结之天下三分篇 |
对于自动化测试的组织划分,一般来说,在企业内部,有两种结构: 隶属于系统测试部门或者专门的自动化测试部门.
我所经历的自动化测试部门,就经过这么一波三折的过程,首先始于系统测试部门的一个team,专门为这个产品的系统测试服务,自动化也就仅仅局限于这个产品的系统回归测试. 随着自动化程度的不断提高和管理层的重视,自动化测试也逐步发展壮大,服务的部门也从仅仅是系统测试部门的回归测试拓展到集成测试,单元测试等等. 服务的产品也从单一的产品扩大到整个公司的产品. 这是一个必然的过程. 专门的自动化测试部门有利于从整个公司的角度协调各种资源,所以是必然的.
在自动化测试独立成单独的部门,角色一般是这样:有一个经验丰富的自动化经理,负责全局的统筹和管理. 对于不同的产品或者不同的系统有资深的自动化测试专家/自动化测试主管, 下面会有专门的自动化测试工程师,对自动化测试工程师甚至资深自动化测试专家要求首先有过开发经验,并且有一定的测试经验,做过手工测试,这个必须的,另外,对相关的产品要比较熟悉. 另外对资深自动化测试专家要求对被测系统的架构有全面和深刻的理解. 另外可能还有一些自动化测试工程师或者测试工程师, 来执行相关的自动化测试用例. 这些测试工程师要求对系统要相当了解,可以从手工测试部门抽调过来,也可以本身就属于系统测试部门, 这样就是一个虚拟的泛自动化测试部门.
有了组织结构,就可以进行自动化测试了吗,当然不, 首先自动化测试需要以来很多的因素,自动化测试平台就是其中一个,下节重点介绍自动化测试的平台建设.
--to be continued
2007年1月18日星期四
[+/-] |
自动化测试的思考和总结之天时地利篇 |
昨天谈到自动化适合的产品,今天简单聊聊何时开始引入自动化最有效.
自动化测试的建设不是一蹴而就的,首先自动化测试的发展依赖于手工测试.
一般来说,手工测试进展到比较成熟的阶段,公司有完整的手工测试流程,相应的手工测试工程师具有一定的编程经验或者脚本开发经验,这个时候引入自动化测试才会比较有效.
相反,如果一个公司或者一个产品基本的手工测试都很不完善和规范,测试的质量也得不到保证,更谈不到测试的覆盖率,这个时候贸然的想通过实行自动化来提高测试的质量或者测试的效率.失败的机会就会非常大了.
完善的自动化测试流程和规范不是简单的几个文档就能解决问题的,而是要把这种流程或者规范彻底贯彻到每个测试工程师身上. 测试用例如何写? 产品规格说明书更新及时不及时?有没有符合本公司的测试管理系统? 测试报告能不能按时提交?等等一系列问题,不是简单停留在是否存在几篇文档或者开几次会议就能解决的问题.
现在国内我知道好多朋友所在的公司,看到自动化测试不错,可以提高效率,节省人力,老板就拍脑袋也要搞自动化,好像搞了自动化测试,公司的测试水平就能提高一个台阶,产品的质量就能得到保证. 其实他完全没有看到自动化测试的另外一面. 另外,居然还有人理解我引入了几个自动化测试工具WinRunner, QTP, LoadRunner, 我就是自动化测试了. 大错特错了.
关于测试工具和自动化测试的话题,后面会有讨论.
一个公司或者一个产品在引入自动化测试之前,一定要进行详细和客观的评估.
--to be continued
2007年1月17日星期三
[+/-] |
自动化测试的思考和总结之有的放矢篇 |
对于自动化测试适合的产品,或者更精确到哪些测试测试适合做自动化,已经被广泛的讨论过.总体来说, 有如下一些:
1. 首先是回归测试,这是勿庸置疑的.
利用自动化来进行回归测试,不仅可以把测试工程师从枯燥无味的繁琐测试中解脱出来,而且可以腾出更多的时间设计更多更好的测试用例,提供测试的覆盖率和测试的质量.
2. 其次是部分性能测试
对于一些性能测试,比如系统容量或者系统并发用户的测试,因为资源的限制,利用手工测试有很大的困难,有时候条件也不允许,充分利用一些自动化性能测试工具,就可以很好的完成测试目的.
3. 还有就是利用手工很困难或者根本无法完成的.
有的时候,需要进行一些压力测试,离开工具可能比较困难,这个时候就可以发挥自动化的长处.
4. 还有就是产品趋于稳定,变化小,这样的产品更适合与自动化,我们就曾经在一个产品很不完善的时候进入到自动化,结果耗费了巨大的人力,最后产品变化了,自动化测试脚本和测试用例重用性不好,基本全废了. 其实这也需要产品和软件本身应该满足一些可测性要求. 并在前后的版本之间保持接口的统一. 细节来说,就是配置哪怕是基本的日志都必须满足一定的规范. 否则自动化测试进展起来就比较困难.
另外,无论针对任何产品的自动化测试,都会存在一些普遍的问题:
1. 自动化测试不会比系统测试发现更多的bug,或者说自动化测试更重要的是帮助快速验证产品经过更新或者修改之后的质量.如果要发现更多的潜在问题,必须进行手工测试.
2.对于频繁变化的产品,自动化测试的维护成本很高,这点反复强调,就是因为我们在这方面走过很多弯路,往事不堪回首啊~~
3.通过自动化测试没有发现缺陷并不能代表说一定没有缺陷存在,没有权限的系统或者产品是不存在的.
4.自动化测试对环境的依赖远远大于手工测试对环境的依赖,针对自动化测试的环境问题,因为牵涉到的问题比较多,后面打算专门讨论这个问题.
2007年1月16日星期二
[+/-] |
自动化测试的思考和总结之开篇 |
自己从事自动化测试三年了,经历了很多的波折和教训,当然也积累了些许的经验,很久以来一直有想法把这些内容系统的记录下来,对自己来说,轻装上阵,更好的探索以后的自动化怎么走;对别人来说,也算提个醒,哪些错误最容易犯, 需要避免什么样的误区.
最近看了很多的论坛文章,感觉大家都很茫然,测试怎么做, 刚入行的, 在这个行业打拼了几年的,大家对前途都没有太多的目标,也许只能好好反省自己的过去,总结一下自己过去犯过的错误,回过头去,才能更好的认识前面的路.
罗嗦了这么多,现在开篇,本文打算以系列的形式连载,主要都是自己的经验和教训的回顾,所以有时候想到哪儿就说到哪里,不会刻意去组织很美的文字,不过我会尽量使文章能表达我的意思. 这个系列目前大致想分为几个大的部分:
- 自动化测试的适合产品
- 何时引入自动化
- 自动化测试的组织结构
- 自动化测试的平台建设
- 自动化测试的支持和维护
- 自动化测试和自动化测试工具
- 自动化测试的管理保证
- 自动化测试和回归测试
下次着重讲讲自动化测试的适合产品.
--to be continue
2007年1月15日星期一
[+/-] |
一些软件测试概念的标准定义(下篇) |
test documentation. (IEEE) Documentation describing plans for, or results of, the testing of a system or component, Types include test case specification, test incident report, test log, test plan, test procedure, test report.
test driver. (IEEE) A software module used to invoke a module under test and, often, provide test inputs, control and monitor execution, and report test results. Syn: test harness.
test incident report. (IEEE) A document reporting on any event that occurs during testing that requires further investigation.
test item. (IEEE) A software item which is the object of testing.
test log. (IEEE) A chronological record of all relevant details about the execution of a test.
test phase. (IEEE) The period of time in the software life cycle in which the components of a software product are evaluated and integrated, and the software product is evaluated to determine whether or not requirements have been satisfied.
test plan. (IEEE) Documentation specifying the scope, approach, resources, and schedule of intended testing activities. It identifies test items, the features to be tested, the testing tasks, responsibilities, required, resources, and any risks requiring contingency planning. See: test design, validation protocol.
test procedure. (NIST) A formal document developed from a test plan that presents detailed instructions for the setup, operation, and evaluation of the results for each defined test. See: test case.
test report. (IEEE) A document describing the conduct and results of the testing carried out for a system or system component.
test result analyzer. A software tool used to test output data reduction, formatting, and printing.
testing. (IEEE) (1) The process of operating a system or component under specified conditions, observing or recording the results, and making an evaluation of some aspect of the system or component. (2) The process of analyzing a software item to detect the differences between existing and required conditions, i.e. bugs, and to evaluate the features of the software items. See: dynamic analysis, static analysis
testing, acceptance. (IEEE) Testing conducted to determine whether or not a system satisfies its acceptance criteria and to enable the customer to determine whether or not to accept the system. Contrast with testing, development; testing, operational.
testing, alpha []. (Pressman) Acceptance testing performed by the customer in a controlled environment at the developer's site. The software is used by the customer in a setting approximating the target environment with the developer observing and recording errors and usage problems.
testing, assertion. (NBS) A dynamic analysis technique which inserts assertions about the relationship between program variables into the program code. The truth of the assertions is determined as the program executes.
testing, beta []. (1) (Pressman) Acceptance testing performed by the customer in a live application of the software, at one or more end user sites, in an environment not controlled by the developer. (2) For medical device software such use may require an Investigational Device Exemption [IDE] or Institutional Review Board [IRB] approval.
testing, boundary value. A testing technique using input values at, just below, and just above, the defined limits of an input domain; and with input values causing outputs to be at, just below, and just above, the defined limits of an output domain. See: boundary value analysis; testing, stress.
testing, branch. (NBS) Testing technique to satisfy coverage criteria which require that for each decision point, each possible branch [outcome] be executed at least once. Contrast with testing, path; testing, statement. See: branch coverage.
testing, compatibility. The process of determining the ability of two or more systems to exchange information. In a situation where the developed software replaces an already working program, an investigation should be conducted to assess possible comparability problems between the new software and other programs or systems.
testing, exhaustive. (NBS) Executing the program with all possible combinations of values for program variables. Feasible only for small, simple programs.
testing, functional. (IEEE) (1) Testing that ignores the internal mechanism or structure of a system or component and focuses on the outputs generated in response to selected inputs and execution conditions. (2) Testing conducted to evaluate the compliance of a system or component with specified functional requirements and corresponding predicted results. Syn: black-box testing, input/output driven testing. Contrast with testing, structural.
testing, integration. (IEEE) An orderly progression of testing in which software elements, hardware elements, or both are combined and tested, to evaluate their interactions, until the entire system has been integrated.
testing, interface. (IEEE) Testing conducted to evaluate whether systems or components pass data and control correctly to one another. Contrast with testing, unit; testing, system. See: testing, integration.
testing, mutation. (IEEE) A testing methodology in which two or more program mutations are executed using the same test cases to evaluate the ability of the test cases to detect differences in the mutations.
testing, operational. (IEEE) Testing conducted to evaluate a system or component in its operational environment. Contrast with testing, development; testing, acceptance; See: testing, system.
testing, parallel. (ISO) Testing a new or an altered data processing system with the same source data that is used in another system. The other system is considered as the standard of comparison. Syn: parallel run.
testing, path. (NBS) Testing to satisfy coverage criteria that each logical path through the program be tested. Often paths through the program are grouped into a finite set of classes. One path from each class is then tested. Syn: path coverage. Contrast with testing, branch; testing, statement; branch coverage; condition coverage; decision coverage; multiple condition coverage; statement coverage.
testing, performance. (IEEE) Functional testing conducted to evaluate the compliance of a system or component with specified performance requirements.
testing, qualification. (IEEE) Formal testing, usually conducted by the developer for the consumer, to demonstrate that the software meets its specified requirements. See: testing, acceptance; testing, system.
testing, regression. (NIST) Rerunning test cases which a program has previously executed correctly in order to detect errors spawned by changes or corrections made during software development and maintenance.
testing, statement. (NIST) Testing to satisfy the criterion that each statement in a program be executed at least once during program testing. Syn: statement coverage. Contrast with testing, branch; testing, path; branch coverage; condition coverage; decision coverage; multiple condition coverage; path coverage.
testing, storage. This is a determination of whether or not certain processing conditions use more storage [memory] than estimated.
testing, stress. (IEEE) Testing conducted to evaluate a system or component at or beyond the limits of its specified requirements. Syn: testing, boundary value.
testing, structural. (1) (IEEE) Testing that takes into account the internal mechanism [structure] of a system or component. Types include branch testing, path testing, statement testing. (2) Testing to insure each program statement is made to execute during testing and that each program statement performs its intended function. Contrast with functional testing. Syn: white-box testing, glass-box testing, logic driven testing.
testing, system. (IEEE) The process of testing an integrated hardware and software system to verify that the system meets its specified requirements. Such testing may be conducted in both the development environment and the target environment.
testing, unit. (1) (NIST) Testing of a module for typographic, syntactic, and logical errors, for correct implementation of its design, and for satisfaction of its requirements. (2) (IEEE) Testing conducted to verify the implementation of the design for one software element; e.g., a unit or module; or a collection of software elements. Syn: component testing.
testing, usability. Tests designed to evaluate the machine/user interface. Are the communication device(s) designed in a manner such that the information is displayed in a understandable fashion enabling the operator to correctly interact with the system?
testing, volume. Testing designed to challenge a system's ability to manage the maximum amount of data over a period of time. This type of testing also evaluates a system's ability to handle overload situations in an orderly fashion.
traceability matrix. (IEEE) A matrix that records the relationship between two or more products; e.g., a matrix that records the relationship between the requirements and the design of a given software component. See: traceability, traceability analysis.
usability. (IEEE) The ease with which a user can learn to operate, prepare inputs for, and interpret outputs of a system or component.
validation. (1) (FDA) Establishing documented evidence which provides a high degree of assurance that a specific process will consistently produce a product meeting its predetermined specifications and quality attributes. Contrast with data validation.
validation, verification, and testing. (NIST) Used as an entity to define a procedure of review, analysis, and testing throughout the software life cycle to discover errors, determine functionality, and ensure the production of quality software.
verification, software. (NBS) In general the demonstration of consistency, completeness, and correctness of the software at each stage and between each stage of the development life cycle. See: validation, software.
[+/-] |
Oracle Database 10g:数据库管理员提供的20个最重要的特性(三) |
第 3 周
名字中包含了什么?:改善的表空间管理
表空间管理得到了重大的改进,这可以归因于一个 sparser SYSTEM、为用户定义一个默认表空间的支持、新的 SYSAUX、甚至重命名
您曾经多少次因用户在 SYSTEM 表空间中创建了非 SYS 和 SYSTEM 的段而伤透脑筋?
在 Oracle9i Database 之前,如果在创建用户时没有指定默认表空间,那么它将默认为 SYSTEM 表空间。如果用户在创建一个段时没有显式地指定一个表空间,那么这个段将在 SYSTEM 中创建—前提是用户在 SYSTEM 表空间中拥有配额(要么显式地授予,要么通过系统权限 UNLIMITED TABLESPACE 来授予)。Oracle9i 允许 DBA 为所有未用显式的临时表空间子句创建的用户指定一个默认的临时表空间,从而减少了这个问题。
在 Oracle Database 10g 中,您可以类似地为用户指定一个默认表空间。在数据库创建期间,CREATE DATABASE 命令可以包含子句 DEFAULT TABLESPACE
ALTER DATABASE DEFAULT TABLESPACE;
未用 DEFAULT TABLESPACE 子句创建的所有用户将以
重要注意事项:拥有旧的表空间的所有用户的默认表空间都被修改为
如果在数据库创建期间没有指定默认表空间,它将默认为 SYSTEM。但您如何才能知道现有的数据库的默认表空间是哪一个?发出以下查询:
SELECT PROPERTY_VALUE
FROM DATABASE_PROPERTIES
WHERE PROPERTY_NAME = 'DEFAULT_PERMANENT_TABLESPACE';
DATABASE_PROPERTIES 视图显示默认表空间之外,还显示一些非常重要的信息 — 例如默认临时表空间、全局数据库名、时区等。
非必要模式的默认表空间
几种模式(如智能代理用户 DBSNMP、数据挖掘用户 ODM)与用户操作不直接相关,但对数据库完整性仍很重要。这些模式中的一些曾经用 SYSTEM 作为它们的默认表空间 — 这是在 SYSTEM 表空间内对象增殖的又一个原因。
Oracle Database 10g 引进了一个新的称为 SYSAUX 的表空间,它用来保存这些模式的对象。这个表空间是在数据库创建期间自动创建的,并在本地进行管理。唯一允许修改的是数据文件的名称。
这种方法在 SYSTEM 损坏需要完整的数据库恢复时,为恢复提供支持。SYSAUX 中的对象可以被恢复为任意正常的用户对象,同时数据库本身保持运行。
但 如果您想将 SYSAUX 中的这些模式中的一些转移到一个不同的表空间中时,该怎么办?例如,考虑 LogMiner 使用的对象,这些对象的大小经常增长,直到最终填满表空间。出于可管理性的原因,您可能考虑将它们转移到它们自己的表空间中。但实现这一目的的最好的方法 是什么?
作为一个数据库管理员,了解转移这些特殊对象的正确过程对您而言是很重要的。幸运的是,Oracle Database 10g 提供了一个新的视图使要凭猜测来做的工作形象化。这个视图,V$SYSAUX_OCCUPANTS,列出了表空间 SYSAUX 中的模式的名称、它们的说明、当前使用的空间,以及如何转移它们。(参见表 1。)
注 意 LogMiner 如何被清楚地显示为占用 7,488 KB 的空间。它归模式 SYSTEM 所有,而要转移对象,您需要执行打包的过程 SYS.DBMS_LOGMNR_D.SET_TABLESPACE。不过,对于 STATSPACK 对象,这个视图推荐使用导入/导出方法;而对于流,没有转移过程 — 因而您不能容易地将它们从 SYSAUX 表空间中转移出来。列 MOVE_PROCEDURE 默认显示 SYSAUX 中存在的几乎所有工具的正确的转移过程。也可以逆向使用转移过程来使对象回到 SYSAUX 表空间中。
重命名一个表空间
在 数据仓库环境中(典型地,对于数据中心体系结构),在数据库之间传输表空间是很常见的。但源数据库和目标数据库必须不存在拥有相同名称的表空间。如果存在 两个拥有相同名称的表空间,则目标表空间中的段必须转移到一个不同的表空间中,然后重新创建这个表空间— 这个任务说起来容易做起来难。
Oracle Database 10g 提供了一个方便的解决方案:您可以用以下命令来简单地重命名一个现有的表空间(SYSTEM 和 SYSAUX 除外) — 无论是永久表空间还是临时表空间:
ALTER TABLESPACERENAME TO ;
这个功能还将应用在存档过程中。假定您有一个按范围分区的表,用于记录 销售历史数据,每个月的这个分区位于按这个月份命名的一个表空间中 — 例如,1 月份的分区命名为 JAN,并位于一个名称为 JAN 的表空间中。这样您就拥有了一个将信息保留 12 个月的策略。在 2004 年 1 月,您将能够存档 2003 年 1 月的数据。大致的操作流程类似于以下操作:
- 利用 ALTER TABLE EXCHANGE PARTITION 从分区 JAN 中创建一个独立的表 JAN03。
- 将表空间重命名为 JAN03。
- 为表空间 JAN03 创建一个可传输表空间集。
- 将表空间 JAN03 重新命名为 JAN。
- 将空的分区交换回表中。
第 1、2、4 和 5 步很简单,并且不会过度地消耗资源(如重做和撤消空间)。第 3 步只是拷贝文件并只为 JAN03 输出数据字典信息,这也是个非常轻松的过程。如果您需要恢复之前存档的分区,这个过程也非常简单,您只需要将相同的过程反过来就行了。
Oracle Database 10g 在处理这些重命名的方式上相当智能化。如果您重命名作为 UNDO 或默认临时表空间的表空间,这可能产生混淆。但数据库将自动调整必要的记录来反映这种变化。例如,将默认表空间的名称从 USERS 修改为 USER_DATA 将自动修改视图 DATABASE_PROPERTIES。在修改之前,查询:
select property_value from database_properties
where property_name = 'DEFAULT_PERMANENT_TABLESPACE';
返回 USERS。在运行下面的语句之后
alter tablespace users rename to user_data;
上述查询返回 USER_DATA,因为所有对 USERS 的引用都被修改为到 USER_DATA。
修改默认临时表空间的情况一样。甚至修改 UNDO 表空间的名称也将触发 SPFILE 中的变化,如下所示:
SQL> select value from v$spparameter where name = 'undo_tablespace';
VALUE
--------
UNDOTBS1
SQL> alter tablespace undotbs1 rename to undotbs;
Tablespace altered.
SQL> select value from v$spparameter where name = 'undo_tablespace';
VALUE
--------
UNDOTBS
结论
在最近的几个 Oracle 版本演变的过程中,对象处理得到了稳定的增强。Oracle8i 引进了表从一个表空间到另一个表空间的转移,Oracle 9i Database R2 引进了列重命名,现在 — 在最新的版本中 — 表空间自身的重命名成为可能。这些增强显著地减轻了数据库管理员的任务 — 特别是在数据仓库或数据中心环境中。
--end2007年1月14日星期日
[+/-] |
新域名终于可以访问了 |
新域名终于可以访问了,不过暂时只能通过代理,代理的设置可以参考这篇文章
一些常用的免费日本和韩国代理列在下面:
免费韩国代理服务器列表
165.228.128.10:3128
59.10.72.198:8080
125.248.206.194:8080
125.243.249.194:8080
210.107.249.50:3128
210.107.249.50:3124
210.180.39.92:8080
210.102.99.71:38466
免费日本代理服务器列表
58.80.207.41:3128
133.1.16.172:3127
150.65.32.66:3124
203.178.133.2:3128
203.178.133.10:3128
203.178.133.2:3124
203.178.133.3:3127
203.178.133.10:3124
高兴之余,也要show一下第一次成功访问的截图,再次只想说两句话:
谁让你生在中国!
I am back!
--end
[+/-] |
Google域名已经成功绑定 |
昨天晚上折腾了大半天,利用Blogger提供的主机绑定服务把新域名给绑定了,不过始终还是不能访问我的新域名:www.rickyzhu.com
一度尝试搜索一个国外的免费主机托管服务网站,找到了很多,也成功在kingofhosts.com上注册并进行了域名托管,似乎有些地方设置不对,而且web上进行文件上传功能似乎很弱,还是观望一下看。下面是kingofhosts提供的一些功能,看样子还不错。
KingofHosts has industry leading features that will allow you to build a website above and beyond your competitors, take a look at some of them:
1,000mb Disk Space5,000mb disk space (5gb!)10,000mb Bandwidth50,000mb bandwidth (50gb!).- NO ADVERTISEMENTS on your pages!
- FREE subdomain (yourname.KingofHosts.com)
- Easy to use WYSIWYG editor
- Full FTP Support
- PHP 4 Support
1 mySQL database10 mySQL database's- Instant activation
- Domain name support
- 99.9% Uptime
- and MORE...
没有强制广告,5GB的空间,50GB的带宽,支持MYSQL数据库和二级域名,似乎看起来不错,如果实在不行,就仔细研究研究这个吧。
今天在DNS的设置页面把CNAME设置成ghs.google.com. (似乎后面多了一个点), 很快,在万网上就可以查到我的网站的IP地址,先是托管成功,只是还访问不了,万恶的社会~~
您好! 经查询,贵网站:www.rickyzhu.com 不是由中国万网提供主机服务 贵网站IP地址为: 64.233.179.121 | |||
看来果真验证了之前的说法:参考月光博客的一篇文章。
尝试一下代理吧!
--end
2007年1月13日星期六
[+/-] |
我的Google域名捆绑梦破灭了 |
昨天还在说,我的新域名估计两天后启用,看来似乎不那么现实了。
以下转载: Google的免费主机玩完啦
今天发现,我前几天刚使用Google免费Bloger托管服务绑定的一个域名,今天发现其已经IP无法访问,但是通过代理服务器却访问正常,因此我怀疑,Google Blogger仅仅发布数天的新服务:Blogger Custom Domains,可能已经被封了IP。
主要原因是这个IP:64.233.179.121,所有绑定的域名都指向这个IP,因此这个IP总有一天会被屏蔽掉,只是我没想到这一天会这么快到来。
下面是我Trace这个IP的结果,可以看到,访问到202.97.35.49这个IP后就无法继续访问了。
202.97.35.49这个IP又是何方神圣呢?通过查询得知是“中国电信骨干路由器”。下面是查询的截图,这下明白了吧。当然,我通过韩国或日本的代理服务器访问我绑定的域名,一切正常,直接访问就无法连接。看来大家还是购买自己的主机吧,免费的好东东我们中国人还是用不了滴,还是通过FTP发布到自己主机上更为保险一些啦。
看来我又要破费了。55555~~~~,真命苦啊。
--end
[+/-] |
这三年自动化测试的思考和总结(原创) |
搞自动化测试也有三年的时间了,最近总感觉没有多少提高,进步不大。不像最初的两年,总能接触到很多新的知识,进步也快。我也在思索这个问题和造成问题的根本原因,很多方面影响。 当初开始的时候是一穷二白,所以有点点进展也算是很令人高兴和激动人心的,现在总在思索要怎么发展,怎么改进。似乎国内的自动化测试发展很慢,这跟很多公司的管理层有很大关系的,另外,公司的大环境也决定整个的自动化测试的成败。我私下认为,国内的管理者大多眼光没有那么长远,急功近利。恰恰相反,自动化测试又是一个需要长期投入的过程,而且不容易出成效的系统工程,这也难怪国内的自动化测试发展慢。还是从最初做自动化这一路走来开始总结一下吧:
初次接触自动化测试应该是2003年了,我们公司实施了自动化测试,一个有多年的自动化测试经验的老板带领我们做,目标明确,也得到了管理程的鼎力支持。进展虽然比较慢却也比较顺利。
至于以后的自动化应该怎么发展,我想可能是需要认真思考的问题的。
--end
[+/-] |
Oracle Database 10g:为DBA提供的最佳前20位的特性(二) |
第一个特性就是前面的那篇<Oracle10g中如何追踪数据操作历史>
从本周开始,陆续介绍这20位特性,敬请留意。
Oracle Database 10g:为 DBA 提供的最佳前 20 位的特性第 2 周
第 2 周还要多长时间?:回滚监视
为用户提供对回滚操作时间的准确评估
我们还在这地方吗?还要多长时间?
听起来熟悉吗?这些问题可能是您在前往孩子们最喜爱的主题公园的路上,从汽车后座上提出来的,并且经常是不断地、越来越频繁地提出来。您不想告诉他们还确切需要多长时间吗 — 或者更简单些,您自己知道答案吗?
同样,在回滚长期运行的事务时,经常会有些用户不停地询问相同的问题。这些问题是合理的,因为该事务进行了锁定,正常的处理经常受到回滚进程的影响。
在 Oracle 9i Database 及更低的版本中,您可以执行查询
SELECT USED_UREC
FROM V$TRANSACTION;
该语句返回由当前事务所使用的重做记录的数量,而如果重复地执行该语句,将会显示连续减少的数值,因为回滚进程在其处理过程中会释放重做记录。随后您可以通过对一段间隔进行快照来计算其速率,然后推断出评估结束时间的结果。 虽然在视图 V$TRANSACTION 中有一个名为 START_TIME 的列,但该列只显示整个事务的起始时间(也就是在回滚执行之前)。因此,除了推断,您没有办法知道回滚实际上是在什么时间执行的。
事务回滚的扩展统计信息
在 Oracle Database 10g 中,这种操作很简单。当事务回滚时,事件被记录在视图 V$SESSION_LONGOPS 中,该视图显示长期运行的事务。用于回滚,如果进程耗时超过六秒,则记录出现在该视图中。在回滚执行以后,您可能会隐藏所查看的监视屏幕并执行以下的查询:
select time_remaining
from v$session_longops
where sid = <sid of the session doing the rollback>;
既然您意识到这个视图 V$SESSION_LONGOPS 的重要性,就让我们来看它必须提供的其他信息。该视图在 Oracle Database 10g 的预览版中提供,但没有捕获关于回滚事务的信息。为了以一种易读的方式显示所有的列,我们将使用由 Tom Kyte 在 AskTom.com 中所描述的 PRINT_TABLE 函数。此过程简单地以表格方式而不是常用的行方式来显示列。 SQL> set serveroutput on size 999999
SQL> exec print_table('select * from v$session_longops where sid = 9')
SID : 9
SERIAL# : 68
OPNAME :Transaction Rollback
TARGET :
TARGET_DESC :xid:0x000e.01c.00000067
SOFAR : 20554
TOTALWORK : 10234
UNITS :Blocks
START_TIME :07-dec-2003 21:20:07
LAST_UPDATE_TIME :07-dec-2003 21:21:24
TIME_REMAINING : 77
ELAPSED_SECONDS : 77
CONTEXT : 0
MESSAGE :Transaction Rollback:xid:0x000e.01c.00000067 :
10234 out of 20554 Blocks done
USERNAME :SYS
SQL_ADDRESS :00000003B719ED08
SQL_HASH_VALUE : 1430203031
SQL_ID :306w9c5amyanr
QCSID : 0
注意,此处显示对行的所有更改,即使删除并重新插入行时也是如此。VERSION_OPERATION 列显示对该行执行的操作 (Insert/Update/Delete)。完成这些操作不需要历史表或额外的列。 让 我们仔细检查这些列中的每一列。在会话中可能会有超过多个长期运行操作 — 特别是因为视图中包含以前的会话中所有长期运行操作的历史。列 OPNAME 显示该记录用于“事务回滚”,这为我们指出了正确的方向。列 TIME_REMAINING 显示所评估的剩余时间秒数,这在前面已经描述过,而列 ELAPSED_SECONDS 显示到目前为止所消耗的时间。
那 么该表如何提供对剩余时间的评估呢?可以在列 TOTALWORK 中找到线索,该列显示要完成的“工作”总量,还有 SOFAR 显示到目前为止已经完成了多少工作。工作的单位显示在列 UNITS 中。在本例中以数据块为单位;因此,到目前为止已经回滚了 20,554 个数据块中共计 10,234 个数据块。此操作到目前为止已消耗了 77 秒。因此,剩余数据块将消耗:
77 * ( 10234 / (20554-10234) ) ˜ 77 秒
但您不必利用这种方法来获得该数值,它已经清楚地显示出来了。最后,列 LAST_UPDATE_TIME 显示有关当前视图内容的时间,这将用于加强您对结果的解释。
SQL 语句
另一部分重要的新信息是正在被回滚的 SQL 语句的标识符。在早先,SQL_ADDRESS 和 SQL_HASH_VALUE 用于获取正在被回滚的 SQL 语句。新的列 SQL_ID 对应于视图 V$SQL 的 SQL_ID,如下所示:
SELECT SQL_TEXT
FROM V$SQL
WHERE SQL_ID = <value of SQL_ID from V$SESSION_LONGOPS>;
该查询返回所回滚的语句,因此提供了额外的校验以及 SQL 语句的地址和散列值。 并行实例恢复
如果 DML 操作是并行操作,则列 QCSID 显示并行查询服务器会话的 SID。在并行回滚事件中,如实例恢复以及随后的故障事务恢复期间,经常用到该信息经常。
例如,假设在大型的更新期间,实例异常关闭。当实例启动时,发生故障的事务被回滚。如果启用了用于并行恢复的初始化参数值,则回滚并行地而不是串行地发生,如同它发生在常规事务回滚中一样。下一步的任务是评估回滚进程的完成时间。
视 图 V$FAST_START_TRANSACTIONS 显示为回滚故障事务所产生的事务。类似的视图 V$FAST_START_SERVERS 显示对回滚进行处理的并行查询服务器的数量。这两个视图都在以前的版本中提供,但显示事务标识符的新列 XID 使得联接更方便了。在 Oracle9i Database 以及更低的版本中,您必须通过三列(USN — 重做段号,SLT — 重做段中的存储区号,SEQ — 序列号)来联接视图。其父集显示在 PARENTUSN、PARENTSLT 和 PARENTSEQ 中。在 Oracle Database 10g 中,您只需将其联接到 XID 列,其父 XID 由直观的名称表示:PXID。
最有用的信息部分来自于 V$FAST_START_TRANSACTIONS 视图中的列 RCVSERVERS。如果发生并行回滚,则该列中显示并行查询服务器的数量。您可以查看该列,了解启动了多少并行查询进程:
select rcvservers from v$fast_start_transactions;
如果输出是 1,则事务正在由 SMON 进程进行串行回滚 — 显然这是完成工作的一种不充分的方法。您可以将初始化参数 RECOVERY_PARALLELISM 的值改为除 0 或 1 以外的值,重新启动实例进行并行回滚。随后您可以执行 ALTER SYSTEM SET FAST_START_PARALLEL_ROLLBACK = HIGH,按 CPU 数量的 4 倍创建并行服务器。 如 果上述查询的输出显示不是 1,则正在进行并行回滚。您可以查询同一视图 (V$FAST_START_TRANSACTIONS) 来获得父事务和子事务(父事务 id — PXID,而子事务 id — XID)。XID 还可用于联接此视图与 V$FAST_START_SERVERS,以获得其他详细信息。
结论
总之,当在 Oracle Database 10g 中回滚长期运行的事务时 — 无论是并行实例恢复会话还是用户执行的回滚语句 — 您所需做的一切就是查看视图 V$SESSION_LONGOPS 并评估还需要多少时间。
现在,如果能预测到达主题公园的时间就好了!
--end
2007年1月12日星期五
[+/-] |
终于拥有自己的域名了 |
自从去年的blogger告别beta之后, 前一阵子又推出了一项新功能:域名捆绑.
这对于很久以来就渴望拥有自己域名的特别象我这样又懒于维护一大堆文件的用户来说,无疑十分兴奋.
今天注册了一个自己的域名,59块大洋/年. 找了半天,心仪的域名都被别人抢走了,只能将就了. 不过还要等一天之后才能生效.
ricky.com.cn, ricky.com, ricky.net 都被注册走了.
只能选rickyzhu.com了.
在blogger上进行简单的设置即可把原来的老域名重定向到这个新域名了:
首先把域名坐CNAME设置到ghs.google.com,然后再控制台那,选择设置->发布->自定义域,添上域名即可.
看看blogger的官方网站对这个新功能的描述:
"
The new version of Blogger now supports using a custom domain for serving your blog. If you already own a domain named, say, mysite.com
and want your blog to be served at that address instead of at a blogspot.com
address, we can host your blog on that domain for you ― for free. Your old Blog*Spot address will forward to your new custom domain, so the switch will be seamless for your readers.
Of course, FTP publishing is still available if you'd like to do your own hosting, but using a custom domain gives you a ton of advantages:
- Simpler to set up. You don't have to muck around with FTP paths and file names.
- Fast publishing. There's no waiting for files to upload to a hosting provider.
- Drag-and-drop template editing. You can use the new Blogger's new template features.
- Access control. If you'd like, only let people you choose read your blog.
Using Blogger's custom domains is a simple way to start serving your blog on your own domain without having to deal with the hassle of transferring the files to a separate web host.
"
看来这个周末应该可以用上新域名了. 呵呵.
--end
[+/-] |
如何挑选适合你的自动化测试工具 |
任何工具没有最好的,只有最适合的. 自动化测试工具也是如此. 针对不同的公司,不同的应用,如何挑选最适合自己的自动化测试工具?
下面的几点也许可以作为你的参考.
List of points on which the new automation tool for functional and
regression testing is evaluated:
1. Ability to Identify all controls i.e. support Custom controls
2. Number of controls supported - Windows, IE, Netscape, .Net, Java
3. Number of OS Lang supported - English, Japanese, French etc.,
4. Number of DBs supported - MSSQL, Oracle, DB2 etc, [Execution of
Simple queries, Sprocs, Resultset, etc]
5. Number of environments supported - win32, web
6. Ability to read write from different sources [db, txt, word, excel,
reg etc.,]
7. Should have good error handling mechanism.
8. Dependencies on hardware/software - any new hardware/software to be
installed.
9. Ability to run with out the software being installed on each and
every machine.
10.Ability to interact with other interfaces [software's] - API's
11.Should be easy to learn and use.
12.Operational constraints - cost\support\training.
13.Tool should have good reference for its acceptance.
14.Tool should have backward compatibility.
15.Tool should be pluggable to standard test frameworks available in
the industry.
16.Ability to Analyze results, generate report and send it across.
[Even though it falls under framework.]
已经大致圈定了一些供应商和一些候选工具,针对不同的测试工具和厂商进行考察?
你还在听他们的sales滔滔不绝的给你宣传他们的工具吗?缺少一个衡量的标准吗?
看看下列一些问题他们如何回答,就知道如何决定了.
List of Questions to the tool vendors.
1.What does this tool do?
2.What are the benefits of using this tool?
3.How can this tool solve my problems?
4.Which of my current problems can and can't this tool help with?
5.Will you demonstrate your tool using our tests on our site?
6.What environment is needed to run this tool?
7.How much disk space does it use?
8.What influence do tool users have on future development of the tool?
9.Can tests be re-run in debug mode within the tool?
10.What is the market share of this tool?
11.How do you define market share?
12.Why is this tool better than other similar tools?
13.What proportion of tools sold is providing real benefits to the
organizations, which bought them?
14.What will I have to do to be sure to succeed with this tool?
15.What local support is available?
16.Training, consultancy, help desk, Service Level Agreement for
resolution of problems, technical expertise in our area?
17.What effort is needed in-house by us to support the tool?
18.What test-planning standards need to be in place to gain real
benefits from using this tool?
19.What features are included to ease the learning curve for the tool?
20.How do other sites usually work with the tool?
21.Is there a user group/Forum/Seminar, and can I attend the next
meeting?
22.Can you give me the names of reference sites
23.Can I meet with at least two users who are achieving real benefits
using this tool?
24.How many versions have been released in the past year?
25.Do you release a defect list with the product?
26.How many known defects are there in the tool currently?
27.What kind of tailoring / customization is possible for this tool?
28.What extensions / add-ons / in-house routines have other users
built?
29.How does this tool integrate with other tools?
30.How long will it take to achieve real payback from this tool?
31.Can you help me estimate how much effort will be involved in
implementing this tool in my organization?
--end