LabVIEW论坛

 找回密码
 注册

扫一扫,访问微社区

查看: 5445|回复: 7

[推荐文章] 一位测试工程师对测试的理解

[复制链接]
发表于 2008-1-20 19:36:42 | 显示全部楼层 |阅读模式
USB-6009数据采集卡首发
一位测试工程师对测试的理解. e2 L  K. p4 j+ _
编程大师说:“任何一个程序,无论它多么小,总存在着错误。”  Z% q; C( P/ l: Z/ J% C9 h/ o3 L
初学者不相信大师的话,他问:“如果一个程序小得只执行一个简单的功能,那会怎样?”7 l, u+ Z/ _- g. W. p
“这样的一个程序没有意义,”大师说,“但如果这样的程序存在的话,操作系统最后将失效,产生一个错误。”$ \5 U( w; z2 e* |  v
但初学者不满足,他问:“如果操作系统不失效,那么会怎样?”
6 u% B( e3 Y% K. E: |5 u( t  t“没有不失效的操作系统,”大师说,“但如果这样的操作系统存在的话,硬件最后将失效,产生一个错误。”4 Y" ~  E( f1 E2 `  K( e
初学者仍不满足,再问:“如果硬件不失效,那么会怎样?”6 M) W% i) K8 _, k) n! s
大师长叹一声道:“没有不失效的硬件。但如果这样的硬件存在的话,用户就会想让那个程序做一件不同的事,这件事也是一个错误。”: Y" e% P9 A( |, i3 s6 H7 C3 @
没有错误的程序世间难求。[James 1999]- \  f0 ]  e9 R3 ?

: I* I3 d1 ?) T5 U# ~错误是一种严重的程序缺陷。测试的目的是为了发现尽可能多的缺陷,并期望通过改错来把缺陷统统消灭,以期提高软件的质量。但关于测试与改错实在没有什么高明的方法值得大书特书,也不能表现出程序员的聪明才智。相反地,它们带来了更多的牢骚与痛苦。因此在教学和开发实践中,测试与改错总是被当作万般无奈的工作踢到角落里。! i9 d3 J1 B4 T) D: q7 [
医生可以把他的错误埋葬在地下了事,但程序员不能。我们必须要学会测试与改错,并且把测试与改错工作做好。
% E( _& X# R. t# ?5 ]  f4 C6 k0 X& ]; r# K* b* L
7.1 对测试的理解. v1 @( Q8 l6 U  s9 w( f7 L
测试的道理并不深奥,计算机专业人员都应该明白。但就是这么简单的事,计算机专业的博士们也未必都已经理解。
1 F$ T% j$ `: g. k3 W. z0 f* T5 Y) n有一天,一位比我聪明,编程比我快,学习能力比我强的计算机专业博士生恭恭敬敬地请我坐好,并且史无前例地削了苹果请我吃,为的是向我请教“软件工程”问题。你必定以为这位仁兄好学之极。非也,我和他同事三年来从未探讨过“软件工程”问题。只因为他明天要去应聘,参加面试,生怕被人问倒,就央我当晚为他恶补一把“软件工程”。他还特地问我“什么是白盒测试和黑盒测试?应该由谁来执行?”(有公司曾经这样面试应聘者)当我解释完测试的道理时,他叹了一口气说:“这些玩意儿我读大学十年来都没搞过,怎么能讲得出道理来。唉,就去碰碰运气吧。”我有“兔死狐悲”的感觉。我们这一群博士生三年来尽干些自欺欺人的事,到毕业时学问既不深也不博。个个意志消沉,老气横秋。长此以往,总有一天招聘会的大门前将贴出标语“博士与狗不得入内”。
- q& }' Q- _: {/ b. q以下是关于测试的几个重要观念。
; Y# c4 x/ Y! u
0 W! c2 D, P7 K( P$ J7.1.1 测试的目的
! s0 V! T8 p- E, [, N% b( v, k测试的目的是为了发现尽可能多的缺陷。
0 z- q3 n: `( [* a1 S. N这里缺陷是一种泛称,它可以指功能的错误,也可以指性能低下,易用性差等等。测试总是先假设程序中存在缺陷,再通过执行程序来发现并最终改正缺陷。理解测试的目的是个很重要的意识问题。如果说测试的目的是为了说明程序中没有缺陷,那么测试人员就会向这个目标靠拢,因而下意识地选用一些不易暴露错误的测试示例。这样的测试是虚假的。
# x/ q) i) s+ Y. k& y目前高校的科技成果鉴定会普遍存在类似的虚假现象。我在读硕士时就亲身经历过这样的事。我们的项目是研究集成电路制造过程中的成品率问题。当时国内大多数工厂的集成电路成品率只有百分之几,我编写的示例程序可以将集成电路的成品率优化到98%。示例效果是如此的好,以致一位评委(某厂的总工程师)不无讽刺地说:“采用你们的成果,我们可要发大财了。”这个项目就轻易地通过了鉴定,并且不久后获得了电子工业部科技进步二等奖。这就象在考试时通过作弊取得了好成绩而被表扬。我那时尚且纯真,羞愧之余,不禁对高校科研成果的水平和真实性大失所望(现在我已不再失望,因为很少抱希望)。. \5 r3 p4 }/ r- x- E
一个成功的测试示例在于发现了至今尚未发现的缺陷。" ~& V1 f8 U7 R; \2 v4 e
测试并不仅是个技术问题,更是个职业道德问题。
# T1 X/ s' O" |+ ]8 W- W0 B) Y% o+ t0 w# C) P0 f# ?$ {" \
7.1.2 测试的心理要求
# p; O/ b/ I% ?" U  }9 [测试主要是由人而不是由机器执行,这就不免与心理因素相关。为了测试的真实性,对测试的心理要求是“无情”。这似乎太残酷了。开发人员不能很好地测试自己的程序是因为做不到无情。而测试人员如果做到了无情却会引起开发人员的愤怒,遭人白眼。
9 W8 ]) `' R7 n- T* T( w# v尽管已经明白了测试的目的是为了发现尽可能多的缺陷,但当测试人员真的发现了一堆缺陷时,却不可乐颠颠地跑去恭喜那个倒霉的开发者,否则会打架的。* U+ @) ?+ i  P: n% ]$ R5 \' @1 M
5 o, o# u  _' y* H( o! f
7.1.3 测试的真理
7 N) N2 E7 @+ t" d) l测试只能证明缺陷存在,而不能证明缺陷不存在。* h! H( O7 c- a: i* W8 Z0 O
这个真理告诉我们,对于一个复杂的系统而言,无论采取什么样的测试手段都不能证明缺陷已经不复存在。“彻底地测试”只是一种理想。在实践中,测试要考虑时间、费用等限制,不允许无休止地测试。
3 s2 t& S/ s7 v
5 H$ F0 C2 t8 x9 e7 g9 q) V; ^. w7.1.4 测试与质量的关系
5 w  K' O7 P) J& n" @测试有助于提高软件的质量,但是提高软件的质量不能依赖于测试。测试与质量的关系很象在考试中“检查”与“成绩”的关系。
( i% ^7 o" L! c! i学习好的学生,在考试时通过认真检查能减少因疏忽而造成的答题错误,从而“提高”了考试成绩(取得他本来就该得的好成绩)。4 `; M% K# c8 v) G+ W6 u3 C9 [6 d, j
而学习差的学生,他原本就不会做题目,无论检查多么细心,也不能提高成绩。
' i7 h5 p5 H3 e' U/ Z) h所以说,软件的高质量是设计出来的,而不是靠测试修补出来的。
$ m  c, @2 a. S" |( {& ^% @9 `
) A% i+ \* g( q7 j7.2 测试人员的选择3 i$ O8 O% {+ [  F. M
测试需要开发人员参与吗?, a4 L6 I4 j- F5 e
测试需要独立的测试小组吗?; S! T- P6 J! T( b
测试需要用户参与吗?
; R5 z: O- i8 [让我们先看一看Microsoft公司关于测试的经验教训,再回答上述问题。' b) h# ^, i0 ~5 O3 r8 S
$ a: h/ L. h: [6 j# s( }/ V/ ?
7.2.1 Microsoft公司的经验教训
) ?/ D9 r1 o/ o) f7 x在80年代初期,Microsoft公司的许多软件产品出现了“Bug”。比如,在1981年与IBM PC机一起推出的BASIC软件,用户在用“.1”(或者其他数字)除以10时,就会出错。在FORTRAN软件中也存在破坏数据的“Bug”。由此激起了许多采用Microsoft操作系统的PC厂商的极大不满,而且很多个人用户也纷纷投诉。
! M6 t, o3 J* r' {1 ^Microsoft公司的经理们发觉很有必要引进更好的内部测试与质量控制方法。但是遭到很多程序设计师甚至一些高级经理的坚决反对,他们固执地认为在高校学生、秘书或者外界合作人士的协助下,开发人员可以自己测试产品。在1984年推出Mac机的Multiplan(电子表格软件)之前,Microsoft曾特地请Arthur Anderson咨询公司进行测试。但是外界公司一般没有能力执行全面的软件测试。结果,一种相当厉害的破环数据的“Bug”迫使Microsoft公司为它的2万多名用户免费提供更新版本,代价是每个版本10美元,一共化了20万美元,可谓损失惨重。
' o5 T/ {' h5 M0 y痛定思痛后,Microsoft公司的经理们得出一个结论:如果再不成立独立的测试部门,软件产品就不可能达到更高的质量标准。IBM和其它有着成功的软件开发历史的公司便是效法的榜样。但Microsoft公司并不照搬IBM的经验,而是有选择地采用了一些看起来比较先进的方法,如独立的测试小组,自动测试以及为关键性的构件进行代码复查等。Microsoft公司的一位开发部门主管戴夫·穆尔回忆说:“我们清楚不能再让开发部门自己测试了。我们需要有一个单独的小组来设计测试,运行测试,并把测试信息反馈给开发部门。这是一个伟大的转折点。”
- D9 l  K0 U* X2 n8 y( T但是有了独立的测试小组后,并不等于万事大吉了。自从Microsoft公司在1984年与1986年之间扩大了测试小组后,开发人员开始“变懒”了。他们把代码扔在一边等着测试,忘了唯有开发人员自己才能阻止错误的发生、防患于未来。此时,Microsoft公司历史上第二次大灾难降临了。原定于1986年7月发行的Mac机的Word 3.0,千呼万唤方于1987年2月问世。这套软件竟然有700多处错误,有的错误可以破坏数据甚至摧毁程序。一下子就使Microsoft名声扫地。公司不得不为用户免费提供升级版本,费用超过了100万美元。[Cusumano 1995]
0 k* U4 g& Q7 _& Z4 _: h" i# Y
! _; l7 P4 j2 T' D% U- |+ {# h7.2.2 测试人员的分工
1 Q' @! e3 @1 L% C7 W4 e从Microsoft公司的教训中可知,公司内部对产品的测试(称为α测试),需要开发人员与独立的测试小组共同参与。开发人员应该执行“白盒”测试,即测试源程序的逻辑结构以及实现细节(“白盒”是指看得见程序的内部结构)。而独立测试小组应该执行“黑盒”测试,即按照规格说明来测试程序是否符合要求(“黑盒”是指看不见程序的内部结构)。比如在测试一个模块时,“白盒”测试方法要对模块的所有代码进行单步跟踪测试。而“黑盒”测试方法只需测试模块的接口是否符合要求,它关心程序的外部表现而不是内部的实现细节。/ w5 B. Y, w: h; a
小型的软件公司可能没有条件设立独立的测试小组,也有可能测试小组人员不多而忙不过来。这时,可以让开发小组的成员相互测试对方的程序。
7 ?6 }( g5 ^  J  r7 Z这里要强调的是,α测试不能依赖于开发人员或者测试小组中的任意一方,必须是双方共同参与。“白盒测试”必须由开发者自己执行,因为别的测试人员无法了解到程序的内部实现细节。而“黑盒测试”必须由独立的测试人员执行,因为开发者难以做到客观、公正。开发者在测试自己的程序时存在一些弊病:
- C; k- e$ m* ]/ A(1)开发者对自己的程序印象深刻,并总以为是正确的(自信是应该的)。倘若在设计时就存在理解错误,或因不良的编程习惯而流下隐患,那么他本人很难发现这类错误。
" A4 [  Q/ b8 f$ O3 d9 Q(2)开发者对程序的功能、接口十分熟悉,他自己几乎不可能因为使用不当而引发错误,这与大众用户的情况不太相似,所以自己测试程序难以具备典型性。
" E  x4 y: V, P8 `(3)程序设计有如艺术设计,开发者总是喜欢欣赏程序的成功之处,而不愿看到失败之处。让开发者去做“蓄意破坏”的测试,就象杀自己的孩子一样难以接受。即便开发者非常诚实,但“珍爱程序”的心理让他在测试时不知不觉地带入了虚假成份。1 w$ a8 }' P8 p2 |
软件产品正式发行前,在公司外部邀请一些用户对产品进行测试,称为β测试。β测试的涉及面最广,最能反映用户的真实愿望,但花费的时间最长,不好控制。一般地,软件公司与β测试人员之间有一种互利的协议。即β测试人员无偿地为软件公司作测试,定期递交测试报告,提出批评与建议。而软件公司将向β测试人员免费赠送或者以很大的优惠价格发行软件的正式版本。# r; O( k$ G( n  o2 ~
; Y4 D  w/ _$ B
7.3 测试的主要内容与常用方法
% w+ k  H) C  J/ x# Z  c有一次文学考试,问高尔基是哪国人。一考生乐极而吟:“尔基啊尔基,你若不姓高,我怎知你是中国人。”这是一种瞎猜法。如果这种方法用于软件测试,人累死也测不出什么结果来。
5 m% }8 O- h; e不论是对软件的模块还是整个系统,总有共同的内容要测试,如正确性测试,容错性测试,性能与效率测试,易用性测试,文档测试等。“白盒测试”是指开发人员从程序内部对上述内容进行测试,而“黑盒测试”是指独立的测试人员从程序外部对上述内容进行测试。很多软件工程教材讲述了各种各样的测试方法并例举了不少示例[Pressman 1997] [Sommerville 1992] [杨文龙 1997]。本节简明地讲述常用的测试方法及其道理。' h2 J" Y2 ?7 d; y0 D( D) L
" S9 ?% p$ q: j' [
7.3.1 正确性测试: q* i- p# \) n  {, B* r9 e
正确性测试又称功能测试,它检查软件的功能是否符合规格说明。由于正确性是软件最重要的质量因素,所以其测试也最重要。
) C1 _/ W4 M3 y! R  e基本的方法是构造一些合理输入,检查是否得到期望的输出。这是一种枚举方法。倘若枚举空间是无限的,那可惨了,还不如回家种土豆有盼头。测试人员一定要设法减少枚举的次数,否则没好日子过。关键在于寻找等价区间,因为在等价区间中,只需用任意值测试一次即可。等价区间的概念可表述如下:3 n- E6 g9 Y2 f4 P# U8 T5 D
记(A, B)是命题f(x) 的一个等价区间,在(A, B)中任意取x1进行测试。, B/ X& D8 {4 j: P4 \" i/ q
如果f (x1) 错误,那么f (x) 在整个(A, B)区间都将出错。
  T9 h% [  K5 \3 N* q0 A! l如果f (x1) 正确,那么f (x) 在整个(A, B)区间都将正确。' i0 @1 h8 `' ^
上述测试方法称为等价测试,来源于人们的直觉与经验,可令测试事半功倍。
: D. j6 S4 Y3 E, `8 V6 q( R4 k: u还有一种有效的测试方法是边界值测试。即采用定义域或者等价区间的边界值进行测试。因为程序员容易疏忽边界情况,程序也“喜欢”在边界值处出错。
) d7 N* A+ u1 B$ D1 e7 Q例如测试的一段程序。凭直觉等价区间应是(0, 1)和(1, +∞)。可取x=0.5以及x=2.0进行等价测试。再取 x=0以及x=1进行边界值测试。  c9 Z3 w. C# `9 E! ]/ u5 L  U
有一些复杂的程序,我们难以凭直觉与经验找到等价区间和边界值,这时枚举测试就相当有难度。
8 m8 P6 ?2 u+ R* u在用“白盒测试”方式进行正确性测试时,有个额外的好处:如果测试发现了错误,测试者(开发人员)马上就能修改错误。越早改正错误,付出的代价就越低。所以大多数软件公司要求程序员在写完程序时,马上执行基于单步跟踪的“白盒测试”。
; `3 e0 i& c9 ]1 @* k) X6 n& {# ~0 J
7.3.2 容错性测试  P; n5 _5 k) O
容错性测试是检查软件在异常条件下的行为。容错性好的软件能确保系统不发生无法意料的事故。
6 W; k  N- h4 j# S! G3 @5 Y6 K  C比较温柔的容错性测试通常构造一些不合理的输入来引诱软件出错,例如:7 M, @( X* n: g9 f! ]
(1)输入错误的数据类型,如“猴”年“马”月。& p- K4 K1 l' g. j0 S. ?
(2)输入定义域之外的数值,上海人常说的“十三点”也算一种。
* I" z" c( T' P& h' c粗暴一些的容错性测试俗称“大猩猩”测试,除了不能拳打脚踢嘴咬,什么招术都可以使出来。这里我举不出例子,因为我没有对程序粗暴过,并且这辈子也不打算学会粗暴。- {  n0 L6 F5 F6 b* f4 K9 U9 p
4 w' v1 [1 A( ^8 _( c) T( r: p
7.3.3 性能与效率测试5 }* |- f/ d+ S% m" @
性能与效率测试主要是测试软件的运行速度和对资源的利用率。有时人们关心测试的“绝对值”,如数据送输速率是每秒多少比特。有时人们关心测试的“相对值”,如某个软件比另一个软件快多少倍。
, t0 V. ^3 A% a0 t( D* P$ G在获取测试的“绝对值”时,我们要充分考虑并记录运行环境对测试的影响。例如计算机主频,总线结构和外部设备都可能影响软件的运行速度;若与多个计算机共享资源,软件运行可能慢得像蜗牛爬行。
+ G$ `: S$ y' e; F/ D( ~在获取测试的“相对值”时,我们要确保被测试的几个软件运行于完全一致的环境中。硬件环境的一致性比较容易做到(用同一台计算机即可)。但软件环境的因素较多,除了操作系统,程序设计语言和编译系统对软件的性能也会产生较大的影响。如果是比较几个算法的性能,就要求编程语言和编译器也完全一致。" _$ }2 e& \5 [" J+ J( n
性能与效率测试中很重要的一项是极限测试,因为很多软件系统会在极限测试中崩溃。例如,连续不停地向服务器发请求,测试服务器是否会陷入死锁状态不能自拔;给程序输入特别大的数据,看看它是否吃得消。
% M& }6 A7 w" j8 ~% b
6 q/ K4 _" L5 ]1 D% V: M7.3.4 易用性测试- N0 G& X; v- S
易用性测试没有一个量化的指标,主观性较强。调查表明,当用户不理解软件中的某个特性时,大多数人首先会向同事、朋友请教。要是再不起作用,就向产品支持部门打电话。只有30%的用户会查阅用户手册。[Cusumano 1995]
5 B. k6 o% @0 n! _' e3 o+ z: s一般认为,如果用户不翻阅手册就能使用软件,那么表明这个软件具有较好的易用性。
  P4 b. v; K$ `  A2 @$ ]  j6 i: ~, y) ?; H/ L$ f! P2 l6 o
7.3.5 文档测试4 P% k! \3 p" D9 h
文档测试主要检查文档的正确性、完备性和可理解性。好多人甚至不知道文档是软件的一个组成部分。8 [* y- L1 I. Z
正确性是指不要把软件的功能和操作写错,也不允许文档内容前后矛盾。! I4 X7 J/ c' Q- K# U
完备性是指文档不可以“虎头蛇尾”,更不许漏掉关键内容。有些学生在证明数学题时,喜欢用“显然”两字蒙混过关。文档中很多内容对开发者可能是“显然”的,但对用户而言不见得都是“显然”的。' E; K2 a$ Y1 t
文档不可以写成散文、诗歌或者侦探、言情小说,要让大众用户看得懂,能理解。0 f" r0 P# v+ {. H3 Z( F
很多程序员能编写出好程序,却写不出清晰的文档。不要说自己以前语文学得差,现在已没救了,找借口不是办法。没有人天生就能写出好程序,都是练出来的。同理,若第一次写不好文档,就多写几次文档,慢慢地就会写出好文档来。我上大学前不会说普通话,不会写作文,现在我极能说会写,当个秘书或书记已绰绰有余。
) d) j- b: n- Q6 A# n  U/ ~6 T' M$ ]* z8 ~' ~
7.4 改 错. b" x; D5 ]% V8 t0 H, L; j/ ?+ k
在软件测试时如果发现了错误,必须请程序员改错,否则测试工作就白干了。5 g/ K3 @& i& I: K$ i3 V; e  z% h  m
改错是个大悲大喜的过程,一天之内可以让人在悲伤的低谷和喜悦的颠峰之间跌荡起伏。如果改过上万个程序错误,那么少男少女们不必经历失恋的挫折也能变得成熟起来。, R) v) |- A7 ~- ]) F
我从大三开始真正接受改错的磨练,已记不清楚多少次汗流浃背、湿透板凳。改不了错误时,恨不得撞墙。改了错误时,比女孩子朝我笑笑还开心。
) V. V. G5 ?0 ]7 m在做本科毕业设计时,一天夜里,一哥们流窜到我的实验室,哈不拢嘴地对我嚷嚷:“你知道什么叫茅塞顿开吗?”: r! C' o) ~1 [: J4 r
我象白痴似的摇摇头。
# K9 z! O* h  W1 a/ z: Z* w8 @' R他说:“今天我化了十几个小时没能干掉一个错误,刚才我去了厕所五分钟,一切都解决了。”
& j/ v% I- k) k8 C他还用那没洗过的手拉我,一定要请我吃“肉夹馍”。那得意劲儿仿佛同时谈了两个女朋友。/ Q' I$ T6 s5 a1 U
在本节,我要替程序员们总结关于改错的几点思想方法:$ S* M( \0 b6 F
(1)要有勇气。东北有个林场工人,工作勤奋,一人能干几个人的活。前三十年是伐树劳模,受到周总理的接见。忽有一天醒悟过来,觉得自己太对不起森林,决心补救错误。后三十年成了植树劳模,受到朱总理的接见。此大勇也。; F+ t6 n( b2 q- F6 z( G: p
程序中的错误只有开发者自己才能找出并改掉。如果因畏惧而拖延,会让你终日心情不定,食无味,睡不香。所以长痛不如短痛,要集中精力对付错误。$ \7 F+ K; Q/ L7 t+ m
(2)不可蛮干。都说急中生智,我不信。我认为大多数人着急了就会蛮干,早把“智”丢到脑后。不仅人如此,动物也如此。
. X; F$ D7 ^! v! t4 @# z6 b3 K8 z我们经常看到,蜜蜂或者苍蝇想从玻璃窗中飞出,它们会顶着玻璃折腾几个小时,却不晓得从旁边轻轻松松地飞走。我原以为蜜蜂和苍蝇长得太小,视野有限,以致看不见近在咫尺的逃生之窗,所以只好蛮干。可是有一天夜里,有只麻雀飞进我的房间,它的逃生方式竟然与蜜蜂一模一样。我用灯光照着那扇打开的窗户为其引路,并向它打手势,对它说话,均无济于事。它是到天亮后才飞走的,这一宿我俩都没息好。
3 l) _; U$ ^' n/ }2 i(3)找出错误的根源。有人问阿凡提:“我肚子痛,应该用什么药?”阿凡提说:“应该用眼药水,因为你眼睛不好,吃了脏东西才肚子痛。”
, {1 C! q* z$ f; p我们应该运用归纳、推理等方法尽早确定错误的根源。
; ]' I- f# e" L. e2 h(4)在改错之后一定要马上进行重新测试,以免引入新的错误。有人在马路上捡到钱包后得意忘形,不料自己却被汽车撞倒。改了一个程序错误固然是喜事,但要防止乐极生悲。更加严格的要求是:不论原有程序是否绝对正确,只要对此程序作过改动(哪怕是微不足道的),都要进行重新测试。
; x! y8 e. L$ Z, b6 E9 G. @' O( k; V' c( J- h
7.5 小 结
3 p3 o5 k" D! `$ b; J  t7 `优秀的程序员敢于声称自己的代码没有错误,这种自信让人羡慕不已。一个错误自身也许很微小,但是程序存在错误这件事很严重。能否做好测试与改错工作,思想认识和办事态度是最关键的。; d% Q& f; }( B8 @1 H# o
程序员应该把测试当成份内之事,不要依赖于外界的“黑盒测试”。“黑盒测试”就象通过提问题来判断一个人是否是个疯子,但无法知道他为什么成了疯子。让程序员对所有的代码执行单步跟踪测试听起来很费时间,但习惯了你就感觉不到有什么不方便。单步跟踪测试将使你以后的日子更轻松
IDAQ-USB-6009数据采集卡
发表于 2008-1-20 21:54:46 | 显示全部楼层
在线课堂
呵呵,顶个,是林锐的《软件工程思想》里面的,挺有意思的...
发表于 2008-1-20 22:16:25 | 显示全部楼层
Ding,不错的文章 :9P
发表于 2008-1-21 16:38:44 | 显示全部楼层
这位好像还是我公司的前辈,呵呵
 楼主| 发表于 2008-1-21 19:37:40 | 显示全部楼层

HP3070硬件故障排除方法 1

HP3070硬件故障排除方法  
1 k7 T/ B, V; A3 j$ g. n
9 r/ l4 j7 E% F& Z
# E) r( @0 }5 {) Z3 i2 P                                                                           ——Trimed By HavenGu % O. ~, V6 S* o4 A' f  i: [' P

4 W9 d& M& u- k( Jacky_Shu’s talk on 5/12/06 )
3 }, j8 [3 O5 `' e5 x5 \: {$ f4 q- y
  * z4 u8 V' y0 C; ^8 v2 h8 s
% J! o$ U/ i) J: @6 E! s$ j
  - U7 v7 H9 j- a* X
$ d- k7 [$ @, l: t
                     Unswitch Power      à    PC主机,显示器
9 \1 S$ X7 B, ^! f$ k5 e7 T6 D% _: d( P. D! f$ j
PDU
- q% N4 g8 k; h. Q: D% `: R5 V3 o* x, B% Q9 q9 O( w5 G8 W1 n/ |/ ]
                                        fans
9 y1 ~) ^. }7 \7 u& F4 ?1 c
+ }( Z8 Z) }" ]. }) ~9 k* n* B( k                    Switch Power    à       testhead
; ^" j6 k2 ~8 {: z6 O# x! N+ y( @+ Z0 C
                                          6624A
. B, X, P- u+ ^; t  U/ m' A9 C6 L4 o- S
    l9 M# e' A* X1 `) k) d% e7 z

" T5 K) c7 _+ B; c  p; a$ p0 U% ~+ `                                           ( L9 Y4 U" V0 y$ Q( r& N1 z

9 B$ d# g7 t* i, S1 h' ?                              鼠标,键盘  à     HP/IBM 两键鼠
; R; p; }& ]& ?8 d5 R1 h( j
- P2 `4 d. \- k& V# BCDB Errors
* ^; B% \" M+ e( v' X. |& X9 Z3 Y5 ]0 b! r& ]
                               网络    à    单用户模式 ( |& D; I# h" {2 O" Q! Q  L
( a; l- E- ~: R
  3 O5 C& ]/ P. d: B7 H$ j! j% W

4 L; B8 \& R! W( Y; P进入单用户模式: 1 _! G; d" y9 b  T) L, i8 J

6 D; p0 W$ D9 G4 I1 P' D% C        1.   重启PC     (  按[ tab] 可更改分辨率 )
& g  u8 [1 F+ {/ Z' _; g3 l0 Q1 E+ U& s6 w% L5 R6 p& J! n, `
2.      按 [Esc]  
9 M% V. r$ o8 `3 l# B/ y0 x5 k$ C1 J4 W* k1 ]+ Z
3.      键入命令 “ search “ 回车; ( O- {7 ]: R- ]4 h6 I$ r

! |: Z0 O( `9 F1 H, {( m- ~$ _1 J; @4.      > boot P0 或>boot P1  (硬盘启动)
  b5 Y! Y4 E3 f1 l# j; V# S# v8 ^0 ]3 A* ~* h  s; E2 b' ~
5.      ISL(Yes/No/I…)> Y ,回车   E- q4 g* e; t7 ~
& J  _2 U3 n4 L0 m4 @6 c) }
6.      SINGEL MODE
$ V; ]0 B" ]3 W* _/ m9 ]! W/ l
3 q: X7 Z$ g3 M0 L5 S8 o        #hpux –lm            à 进入单用户调试模式 - n+ M- k# T6 [& ~" U& z4 y
+ _; Y; F! Q) _* O* g4 E; m
        #hpux –is              à正常启动系统 ) \! `! T* S* q# b$ k3 Y3 A! x

2 i+ v) u% W+ b$ W. D/ W: a% t  # z' {8 @4 L+ t6 T4 F
6 t: o  q6 I8 w! k3 f6 W; A& R
  # N2 ~! e' y- ~

6 T5 [/ `# a8 n0 k% r+ A, V  
- [+ p* n9 f, q  h2 }6 l. b. D5 z  U! K' t
  5 G+ {, g" z, ~9 }/ w6 X) J( |" P
4 L2 E# q: d. j, @
  / G! U1 v0 U2 E3 z1 W* s# X+ n4 L
9 R- x; V! H- z7 p3 w
  
4 D% @1 K1 p2 D! I. y2 h, @# j" z/ o4 G5 D
  , }! @7 `( }' v3 V0 Y% b

0 Z) B- }% Z5 _: F  / m, Z' d& f/ m/ K
3 U7 \+ m9 p& u+ [' y
  " [% Y- K0 j* _0 v

1 G7 ?* H4 O( K4 N  : K8 E& `9 T  e# L

7 a5 m# q6 W$ r
1 Q- o3 P8 @: x# Y2 J  ~& j+ q! L, {4 E
(1) System card time out 9 v' A/ n1 ?' C% X  m# f- }
- w0 {( S4 K3 V" F& F+ Q
Boot Step: ; z8 l' T9 I+ r. H$ v

- U& w+ c2 i$ P, ?$ H- s0 M
2 U: k* q1 h4 h  
' Z, L! A7 M. n; x+ R' z+ F) }. i
/ h0 J1 ]" c) a* ]3 F: f$ v' I  
4 F. P, h# k7 H. S; T) k) H0 n  LAN1 card    à    System card    à    Control XT LAN   
+ m6 T- m* u# w7 B6 W% }1 b- l6 }/ h9 z' A' U
                                                            
' J; [& d8 o' A
5 @/ U4 _& S" `2 w  ! R1 t4 Y* p. r
( T7 T3 L- `/ @8 P9 X
                    1.检查网络连接                                               1. LAN  cable (光纤)
  g" V4 i& N* ~! Z. u+ B2 e: ]. }# E/ t7 d  s9 e
                     cd /etc                                                                                                
3 p2 c* p+ ?9 b& i
( [5 u8 }, ?0 O8 s2 E2 W2 O5 ~                        ping 10.3.112.1                                            2. 50ohm终端电阻
4 Z. n+ ~! E0 J1 w
% B! T  }: o- D2 a- G( O                                                                                                                                
0 Z, K/ Y/ ~3 H9 A) t( Q1 p& t( x8 b  x+ A, o8 F
                                                        1.  有无电源?(LED指示)
1 M. l. \1 S8 G+ s+ w8 F; a; |7 s& [$ I! }8 D; V
                                                        2.  地址匹配?
9 h- M4 X5 r8 `/ s0 D3 I8 x
. J# J( d( I, r* V/ |                                                             * 卡上标签 $ ]' _+ U9 d2 L2 g0 a- }* M4 J

( H, d9 w4 V, |) e8 h0 h5 [2 Y                                                             * /etc/.enable中(用text edit 打开) % a% z0 m5 U$ n7 u
8 Y. G6 W( Q3 A; {  n
                                                                testhead 1
- ]  M) I& D' q( x7 j: Q9 h6 B4 q$ J0 k
                                                                HA:xx….xx
' L- a7 B. p# y3 e( v
# b' `1 @& V) T* h  o5 b1 l                                                       3.  检查网络连接   A6 }  ]( L0 ]  v  o, F

3 p" o5 R  [7 w! I                                                              cd /etc 6 `7 O5 u0 J: e0 p& W/ j) B
  k7 e4 S, A4 U) V# f* U4 R
                                                              ping 10.3.112.2 0 d- q- M* p* |+ O& u/ ~
0 w" h' G* T7 V' b
                     ) K: Z0 j5 q( i7 J" Z! Y/ R/ R% I0 u' |

. r1 P* [2 [$ P. ], B                    ① HUB à  GPIB       3 b8 c, t) `# V+ |( }9 t" T
: e' M0 M  j) i9 F- Y5 e9 ~  K* C
                    ②  LAN cable & High Speed Link Cable  (光纤& 排线)
6 \7 f9 `6 b7 T& p1 u7 k/ A5 C) X/ Z
  % I% O/ U* o& m! w+ U1 R7 @( N

( ]+ d7 _5 }& Q$ |. x$ E" q  
( t* \5 \  [2 z7 R6 ^! v* o- X  Z, z" \" f5 V. V4 ~% C8 R$ \
(2) 实际config与设置config不匹配 0 n3 P9 |7 H5 S& O, |
3 M% O3 n1 v3 G5 p) A9 j' e0 i1 p
                 1.  EX000-69540        -66540       à   6M 4 Y( k& j/ X& i6 [2 y6 ^7 f8 q

' h# R  K+ Y/ y/ H8 k5 t9 O; m8 W9 j               -69550        -69550    à   6M, 12M, 20M ' W* z' h& ~8 w: A

% _  N+ K0 l% K$ y2 P                     设置文件: /etc/.enable . ]9 n+ l; F. C8 V4 C

, B: q, Q" y) Q3 k                  : e4 |6 z+ P( ?9 x# i
+ X4 a* M( F* n
                 2.  config下 NO Card      * ! P) T/ {( m1 W, s, i$ w
8 N+ G! ]+ _+ O
                                   NO Card      * 0 O  @" Q3 l- Q$ Y! w  W

; p- a9 C1 y$ r3 t4 l* \$ B3 a5 |                                   ……
" ~9 J8 ^) g( n# A3 T" E
! g# E0 j: e8 m- H                                   NO Card      * ' u9 Y* y5 [2 q! P6 n+ e# b4 o
& V2 c- o6 h" }  S& g
                    即系统找不到PIN Card等,可判断为MPU损坏。
9 h7 B' e, e5 _
/ I# d( i% v" k$ b6 \, ^0 }3 B; Y) v! \  
0 s0 R; k9 K& l4 {: M1 Z6 Q: T: @. K) b+ L
                3.  config下   ASRU Card 忽隐忽现,判断为Mother Board Problem. 7 w' ^9 _0 C! h& u0 D% ^- z

* ]4 B3 _4 N* M& X$ N(1)    螺丝是否上紧 # G" T% j  ?" E( [% R6 k1 z/ S( _. Z

/ ]) p* v% w  s(2)    与ASRU卡connector接触不良,需清理
9 V7 V4 q, p( k  J0 v& y6 P" o6 e! R% S# D! N4 e! }! P  m
(3)    Mother Board 损坏,需更换
2 W: p$ Y& G' w1 X) k7 w; A$ m% Z) B4 r2 `$ \& p2 b4 }. v
  
/ ?2 o! n7 O4 ?
- }* L" V0 a6 H" `9 a  ; g3 j! O  B! W! O, @+ q

( e' T7 X: U+ R0 ?* s  
7 X8 k. l$ p# a3 L
' q& t1 _8 E9 q3 y3 }/ a  
6 q9 I! X+ H# u' y# @% \% ]* ^+ c: C3 L+ |0 C8 b# _2 J
  % f. S/ X' ?. J7 x
6 c$ o" Z9 x1 T, U2 `4 {# v
(3) Control Card Self-handshack % Z$ X+ I. r0 i% P* @
7 x# c+ `9 N' \% N! q% {0 f
                       检查Control Card 设置
: R* I7 ]3 R0 q
4 \+ t+ P/ @% {' P3 s( R* n  m  
9 M- m$ t: v6 H$ [& p4 X- S1 Y+ r8 i* e
                             检查High Speed Link Cable
. o, H. @0 u) S2 E% H
, J0 h% l1 E3 @4 C/ S8 `  8 e; B/ W; b. S+ A2 f* V

' ]% P8 ~' l- C6 P3 d& j9 }                             检查LAN Cable
7 M( x% B* L  C& m
5 l6 x% }( s' r  
0 ^$ n* [! q7 `, H4 r8 }. O1 `( L
                    ·Control Card 地址设置: 4 i+ B5 \, H7 L2 W
4 m& b! p$ ?5 L  |; W
                      /etc/bootptab中(用text edit打开) ) o; d9 p; k/ I5 p' s. Q) u+ A
0 `+ E- h4 W' z
                            Module 0,1,2,3 # D2 Y7 I0 ~7 h. l9 _

( V, y/ w% t6 T; ~6 e# F                            HA:xx…xx
发表于 2008-1-23 14:22:59 | 显示全部楼层
学习中,谢谢楼主!!!
发表于 2011-1-30 09:27:04 | 显示全部楼层
说的很好啊
发表于 2014-11-20 15:57:25 | 显示全部楼层
很好  很好  很好 很好 很好  很好  很好 很好
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|无图浏览|手机版|网站地图|测量与测试世界 ( 沪ICP备06029130号-1 )

GMT+8, 2018-6-19 10:40 , Processed in 0.173188 second(s), 37 queries , Gzip On, XCache On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表