LabVIEW论坛

 找回密码
 注册

扫一扫,访问微社区

查看: 5475|回复: 7

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

[复制链接]
发表于 2008-1-20 19:36:42 | 显示全部楼层 |阅读模式
USB-6009数据采集卡首发
一位测试工程师对测试的理解
; I  B" b/ F' @1 P2 f编程大师说:“任何一个程序,无论它多么小,总存在着错误。”
) b' t* `4 a# ~. m; K  O初学者不相信大师的话,他问:“如果一个程序小得只执行一个简单的功能,那会怎样?”3 E3 W0 Y- P4 H  h1 u) n  i. ?
“这样的一个程序没有意义,”大师说,“但如果这样的程序存在的话,操作系统最后将失效,产生一个错误。”: k0 Y5 W+ U2 I" ?
但初学者不满足,他问:“如果操作系统不失效,那么会怎样?”3 Q  ^% d8 e8 V$ x- N
“没有不失效的操作系统,”大师说,“但如果这样的操作系统存在的话,硬件最后将失效,产生一个错误。”; h! n$ L# t+ J
初学者仍不满足,再问:“如果硬件不失效,那么会怎样?”
! r3 u. ~$ `1 J5 q- B大师长叹一声道:“没有不失效的硬件。但如果这样的硬件存在的话,用户就会想让那个程序做一件不同的事,这件事也是一个错误。”. H9 n$ K, t+ L4 T5 X, V# Q/ L/ d
没有错误的程序世间难求。[James 1999]/ n' _" _  i% y# N
+ N& [) y$ |7 C* ?2 g
错误是一种严重的程序缺陷。测试的目的是为了发现尽可能多的缺陷,并期望通过改错来把缺陷统统消灭,以期提高软件的质量。但关于测试与改错实在没有什么高明的方法值得大书特书,也不能表现出程序员的聪明才智。相反地,它们带来了更多的牢骚与痛苦。因此在教学和开发实践中,测试与改错总是被当作万般无奈的工作踢到角落里。! r, y5 C6 I) {1 {. k' |
医生可以把他的错误埋葬在地下了事,但程序员不能。我们必须要学会测试与改错,并且把测试与改错工作做好。- R% ~1 S7 A8 Z2 l. q

$ z! M$ i, b% k7.1 对测试的理解
  F  K3 _  I: s+ i测试的道理并不深奥,计算机专业人员都应该明白。但就是这么简单的事,计算机专业的博士们也未必都已经理解。# s+ _4 ]5 _4 T+ v$ E1 L4 J9 d* X% S
有一天,一位比我聪明,编程比我快,学习能力比我强的计算机专业博士生恭恭敬敬地请我坐好,并且史无前例地削了苹果请我吃,为的是向我请教“软件工程”问题。你必定以为这位仁兄好学之极。非也,我和他同事三年来从未探讨过“软件工程”问题。只因为他明天要去应聘,参加面试,生怕被人问倒,就央我当晚为他恶补一把“软件工程”。他还特地问我“什么是白盒测试和黑盒测试?应该由谁来执行?”(有公司曾经这样面试应聘者)当我解释完测试的道理时,他叹了一口气说:“这些玩意儿我读大学十年来都没搞过,怎么能讲得出道理来。唉,就去碰碰运气吧。”我有“兔死狐悲”的感觉。我们这一群博士生三年来尽干些自欺欺人的事,到毕业时学问既不深也不博。个个意志消沉,老气横秋。长此以往,总有一天招聘会的大门前将贴出标语“博士与狗不得入内”。
" f% J$ o9 D0 J; U8 b1 c以下是关于测试的几个重要观念。' d+ @! R3 g) w
3 \3 w- {) a, C% \
7.1.1 测试的目的" G. c  s7 @- t; r2 q
测试的目的是为了发现尽可能多的缺陷。
; r% a3 ~9 z, h4 @* r6 y这里缺陷是一种泛称,它可以指功能的错误,也可以指性能低下,易用性差等等。测试总是先假设程序中存在缺陷,再通过执行程序来发现并最终改正缺陷。理解测试的目的是个很重要的意识问题。如果说测试的目的是为了说明程序中没有缺陷,那么测试人员就会向这个目标靠拢,因而下意识地选用一些不易暴露错误的测试示例。这样的测试是虚假的。6 V; d/ U# L+ O9 [; x
目前高校的科技成果鉴定会普遍存在类似的虚假现象。我在读硕士时就亲身经历过这样的事。我们的项目是研究集成电路制造过程中的成品率问题。当时国内大多数工厂的集成电路成品率只有百分之几,我编写的示例程序可以将集成电路的成品率优化到98%。示例效果是如此的好,以致一位评委(某厂的总工程师)不无讽刺地说:“采用你们的成果,我们可要发大财了。”这个项目就轻易地通过了鉴定,并且不久后获得了电子工业部科技进步二等奖。这就象在考试时通过作弊取得了好成绩而被表扬。我那时尚且纯真,羞愧之余,不禁对高校科研成果的水平和真实性大失所望(现在我已不再失望,因为很少抱希望)。+ h+ x7 K: j: x7 l# c% d$ t
一个成功的测试示例在于发现了至今尚未发现的缺陷。
. q3 t3 Z  Y2 N9 p0 X& z( w/ f测试并不仅是个技术问题,更是个职业道德问题。; h+ `) ?; N0 p9 i
* A: U6 Q2 n) M' v& Y
7.1.2 测试的心理要求
& h2 t( F9 x% x( N! J$ \测试主要是由人而不是由机器执行,这就不免与心理因素相关。为了测试的真实性,对测试的心理要求是“无情”。这似乎太残酷了。开发人员不能很好地测试自己的程序是因为做不到无情。而测试人员如果做到了无情却会引起开发人员的愤怒,遭人白眼。
& b) E# v7 u1 ]6 r' y4 Z/ d尽管已经明白了测试的目的是为了发现尽可能多的缺陷,但当测试人员真的发现了一堆缺陷时,却不可乐颠颠地跑去恭喜那个倒霉的开发者,否则会打架的。3 `4 {8 J" `% J5 g, r* v
4 E! [  S# ^; W: i: Y
7.1.3 测试的真理
- s% ?( P7 D+ A测试只能证明缺陷存在,而不能证明缺陷不存在。
( \, ?- {, a7 C: _2 Q' Q% d这个真理告诉我们,对于一个复杂的系统而言,无论采取什么样的测试手段都不能证明缺陷已经不复存在。“彻底地测试”只是一种理想。在实践中,测试要考虑时间、费用等限制,不允许无休止地测试。* }8 s: m) g, M" ~
* t( k/ B' K% r5 `. D" m
7.1.4 测试与质量的关系
5 a% m( {+ U* `测试有助于提高软件的质量,但是提高软件的质量不能依赖于测试。测试与质量的关系很象在考试中“检查”与“成绩”的关系。- N. e+ A( R) f2 h; ^
学习好的学生,在考试时通过认真检查能减少因疏忽而造成的答题错误,从而“提高”了考试成绩(取得他本来就该得的好成绩)。8 ?! j! X- A; m
而学习差的学生,他原本就不会做题目,无论检查多么细心,也不能提高成绩。" Y" u& x( L. I
所以说,软件的高质量是设计出来的,而不是靠测试修补出来的。& }0 Z/ G  k2 g9 u7 i2 o. \& g
& R5 F( v1 q0 |( t/ D. X9 F
7.2 测试人员的选择
  ]# m* [+ s' L# `5 b测试需要开发人员参与吗?
8 h' x# W# O2 r测试需要独立的测试小组吗?
: ~0 Q4 ?8 P! z  r- j测试需要用户参与吗?3 l4 K* ^3 b7 @- s: k
让我们先看一看Microsoft公司关于测试的经验教训,再回答上述问题。, R2 l0 s( L, V) y6 v2 c1 E1 V
' P0 r+ \  i. _! v. j$ Z; _
7.2.1 Microsoft公司的经验教训  Y0 L& P& s" M, O/ A( l. v% O
在80年代初期,Microsoft公司的许多软件产品出现了“Bug”。比如,在1981年与IBM PC机一起推出的BASIC软件,用户在用“.1”(或者其他数字)除以10时,就会出错。在FORTRAN软件中也存在破坏数据的“Bug”。由此激起了许多采用Microsoft操作系统的PC厂商的极大不满,而且很多个人用户也纷纷投诉。% T6 W4 ^( L! E6 F( D4 K( \& S
Microsoft公司的经理们发觉很有必要引进更好的内部测试与质量控制方法。但是遭到很多程序设计师甚至一些高级经理的坚决反对,他们固执地认为在高校学生、秘书或者外界合作人士的协助下,开发人员可以自己测试产品。在1984年推出Mac机的Multiplan(电子表格软件)之前,Microsoft曾特地请Arthur Anderson咨询公司进行测试。但是外界公司一般没有能力执行全面的软件测试。结果,一种相当厉害的破环数据的“Bug”迫使Microsoft公司为它的2万多名用户免费提供更新版本,代价是每个版本10美元,一共化了20万美元,可谓损失惨重。
4 O) g$ E% G9 v% F8 V% ]- r6 F痛定思痛后,Microsoft公司的经理们得出一个结论:如果再不成立独立的测试部门,软件产品就不可能达到更高的质量标准。IBM和其它有着成功的软件开发历史的公司便是效法的榜样。但Microsoft公司并不照搬IBM的经验,而是有选择地采用了一些看起来比较先进的方法,如独立的测试小组,自动测试以及为关键性的构件进行代码复查等。Microsoft公司的一位开发部门主管戴夫·穆尔回忆说:“我们清楚不能再让开发部门自己测试了。我们需要有一个单独的小组来设计测试,运行测试,并把测试信息反馈给开发部门。这是一个伟大的转折点。”
. g$ B# C5 ]6 Z; z1 M) X8 J但是有了独立的测试小组后,并不等于万事大吉了。自从Microsoft公司在1984年与1986年之间扩大了测试小组后,开发人员开始“变懒”了。他们把代码扔在一边等着测试,忘了唯有开发人员自己才能阻止错误的发生、防患于未来。此时,Microsoft公司历史上第二次大灾难降临了。原定于1986年7月发行的Mac机的Word 3.0,千呼万唤方于1987年2月问世。这套软件竟然有700多处错误,有的错误可以破坏数据甚至摧毁程序。一下子就使Microsoft名声扫地。公司不得不为用户免费提供升级版本,费用超过了100万美元。[Cusumano 1995]
% D2 O. n% n) y
! ~$ k) x( @5 p2 I7.2.2 测试人员的分工
& z+ \5 L/ N8 F5 Q从Microsoft公司的教训中可知,公司内部对产品的测试(称为α测试),需要开发人员与独立的测试小组共同参与。开发人员应该执行“白盒”测试,即测试源程序的逻辑结构以及实现细节(“白盒”是指看得见程序的内部结构)。而独立测试小组应该执行“黑盒”测试,即按照规格说明来测试程序是否符合要求(“黑盒”是指看不见程序的内部结构)。比如在测试一个模块时,“白盒”测试方法要对模块的所有代码进行单步跟踪测试。而“黑盒”测试方法只需测试模块的接口是否符合要求,它关心程序的外部表现而不是内部的实现细节。) q  g% U& t1 ~& |4 B  R$ V
小型的软件公司可能没有条件设立独立的测试小组,也有可能测试小组人员不多而忙不过来。这时,可以让开发小组的成员相互测试对方的程序。7 ]; r- S2 T; j
这里要强调的是,α测试不能依赖于开发人员或者测试小组中的任意一方,必须是双方共同参与。“白盒测试”必须由开发者自己执行,因为别的测试人员无法了解到程序的内部实现细节。而“黑盒测试”必须由独立的测试人员执行,因为开发者难以做到客观、公正。开发者在测试自己的程序时存在一些弊病:
7 M; k& w" r7 [( o* i9 }" D7 V(1)开发者对自己的程序印象深刻,并总以为是正确的(自信是应该的)。倘若在设计时就存在理解错误,或因不良的编程习惯而流下隐患,那么他本人很难发现这类错误。* x5 m3 G; p7 W/ p+ y* M1 v8 ?
(2)开发者对程序的功能、接口十分熟悉,他自己几乎不可能因为使用不当而引发错误,这与大众用户的情况不太相似,所以自己测试程序难以具备典型性。4 n( B; t( r+ E; Q0 |" F4 K" U+ C
(3)程序设计有如艺术设计,开发者总是喜欢欣赏程序的成功之处,而不愿看到失败之处。让开发者去做“蓄意破坏”的测试,就象杀自己的孩子一样难以接受。即便开发者非常诚实,但“珍爱程序”的心理让他在测试时不知不觉地带入了虚假成份。
0 ~* K- o8 b* N1 ^2 `) o软件产品正式发行前,在公司外部邀请一些用户对产品进行测试,称为β测试。β测试的涉及面最广,最能反映用户的真实愿望,但花费的时间最长,不好控制。一般地,软件公司与β测试人员之间有一种互利的协议。即β测试人员无偿地为软件公司作测试,定期递交测试报告,提出批评与建议。而软件公司将向β测试人员免费赠送或者以很大的优惠价格发行软件的正式版本。
8 G9 J6 e# C% ~3 ^! g' ?9 K- b2 ]1 u
7.3 测试的主要内容与常用方法8 K  Y$ ~- \# K$ Q/ j
有一次文学考试,问高尔基是哪国人。一考生乐极而吟:“尔基啊尔基,你若不姓高,我怎知你是中国人。”这是一种瞎猜法。如果这种方法用于软件测试,人累死也测不出什么结果来。
( [/ E& w) B3 ^不论是对软件的模块还是整个系统,总有共同的内容要测试,如正确性测试,容错性测试,性能与效率测试,易用性测试,文档测试等。“白盒测试”是指开发人员从程序内部对上述内容进行测试,而“黑盒测试”是指独立的测试人员从程序外部对上述内容进行测试。很多软件工程教材讲述了各种各样的测试方法并例举了不少示例[Pressman 1997] [Sommerville 1992] [杨文龙 1997]。本节简明地讲述常用的测试方法及其道理。  a. i9 n0 M4 {

! [4 H/ c3 @; a5 C4 z; A7.3.1 正确性测试
; ]; l1 E% p$ ~3 T; ]正确性测试又称功能测试,它检查软件的功能是否符合规格说明。由于正确性是软件最重要的质量因素,所以其测试也最重要。
0 |. A7 D9 s+ h8 r0 v% B基本的方法是构造一些合理输入,检查是否得到期望的输出。这是一种枚举方法。倘若枚举空间是无限的,那可惨了,还不如回家种土豆有盼头。测试人员一定要设法减少枚举的次数,否则没好日子过。关键在于寻找等价区间,因为在等价区间中,只需用任意值测试一次即可。等价区间的概念可表述如下:
9 O; @! Q, A$ v' b6 I记(A, B)是命题f(x) 的一个等价区间,在(A, B)中任意取x1进行测试。
" B  L5 f+ |5 o/ T如果f (x1) 错误,那么f (x) 在整个(A, B)区间都将出错。' U( z/ u: j6 J
如果f (x1) 正确,那么f (x) 在整个(A, B)区间都将正确。
+ h# [6 Q0 @3 c/ q8 m$ P4 O上述测试方法称为等价测试,来源于人们的直觉与经验,可令测试事半功倍。
8 c0 j2 p8 R2 a9 w$ ~6 Y! P还有一种有效的测试方法是边界值测试。即采用定义域或者等价区间的边界值进行测试。因为程序员容易疏忽边界情况,程序也“喜欢”在边界值处出错。2 F  W7 S# ]# L% p$ y4 y
例如测试的一段程序。凭直觉等价区间应是(0, 1)和(1, +∞)。可取x=0.5以及x=2.0进行等价测试。再取 x=0以及x=1进行边界值测试。7 p- n# N) V+ d) q9 C/ W
有一些复杂的程序,我们难以凭直觉与经验找到等价区间和边界值,这时枚举测试就相当有难度。$ {- F  {' X# E* z9 y  R2 `! g* q. h
在用“白盒测试”方式进行正确性测试时,有个额外的好处:如果测试发现了错误,测试者(开发人员)马上就能修改错误。越早改正错误,付出的代价就越低。所以大多数软件公司要求程序员在写完程序时,马上执行基于单步跟踪的“白盒测试”。, O) r; b6 l8 Z4 s1 N" a. M

' W5 Y$ [0 f. M# {3 x6 p+ A4 C+ \; r% R+ N7.3.2 容错性测试$ v3 C% P7 j( r6 g/ i: O
容错性测试是检查软件在异常条件下的行为。容错性好的软件能确保系统不发生无法意料的事故。
3 A, J) H9 a; Z7 G! r3 x比较温柔的容错性测试通常构造一些不合理的输入来引诱软件出错,例如:$ j  V: D5 j: ^  W7 `* T% t
(1)输入错误的数据类型,如“猴”年“马”月。/ y: V" C, M8 l. ]. P5 s
(2)输入定义域之外的数值,上海人常说的“十三点”也算一种。
+ B& P! k% g  W5 ?粗暴一些的容错性测试俗称“大猩猩”测试,除了不能拳打脚踢嘴咬,什么招术都可以使出来。这里我举不出例子,因为我没有对程序粗暴过,并且这辈子也不打算学会粗暴。* l; {( J) D1 E( a' ^  Z6 K

# M2 V7 J4 r+ c# }$ M5 X7.3.3 性能与效率测试+ X8 o5 N; P3 h  q% R6 q
性能与效率测试主要是测试软件的运行速度和对资源的利用率。有时人们关心测试的“绝对值”,如数据送输速率是每秒多少比特。有时人们关心测试的“相对值”,如某个软件比另一个软件快多少倍。
) e/ a& b2 y6 U5 Y9 }3 f在获取测试的“绝对值”时,我们要充分考虑并记录运行环境对测试的影响。例如计算机主频,总线结构和外部设备都可能影响软件的运行速度;若与多个计算机共享资源,软件运行可能慢得像蜗牛爬行。
- e$ k- s- c' x& `+ d. h2 p在获取测试的“相对值”时,我们要确保被测试的几个软件运行于完全一致的环境中。硬件环境的一致性比较容易做到(用同一台计算机即可)。但软件环境的因素较多,除了操作系统,程序设计语言和编译系统对软件的性能也会产生较大的影响。如果是比较几个算法的性能,就要求编程语言和编译器也完全一致。) f! ^  u$ i9 w
性能与效率测试中很重要的一项是极限测试,因为很多软件系统会在极限测试中崩溃。例如,连续不停地向服务器发请求,测试服务器是否会陷入死锁状态不能自拔;给程序输入特别大的数据,看看它是否吃得消。8 @6 {0 r, |0 M1 {2 S

& ~/ v" i- z3 z$ t2 t7.3.4 易用性测试
5 k& c& W; G5 P; a3 u; Y易用性测试没有一个量化的指标,主观性较强。调查表明,当用户不理解软件中的某个特性时,大多数人首先会向同事、朋友请教。要是再不起作用,就向产品支持部门打电话。只有30%的用户会查阅用户手册。[Cusumano 1995]
3 J( j" i+ D# i$ K8 B一般认为,如果用户不翻阅手册就能使用软件,那么表明这个软件具有较好的易用性。
* M1 s/ j; _# K+ n; l- k7 |8 x% g- t  q
7.3.5 文档测试
0 C' Q* x, x/ ~文档测试主要检查文档的正确性、完备性和可理解性。好多人甚至不知道文档是软件的一个组成部分。5 F$ V/ [1 f+ ]& b+ ^1 g+ I0 A" w" ^
正确性是指不要把软件的功能和操作写错,也不允许文档内容前后矛盾。
5 c1 z' i/ h. B* U: l# b完备性是指文档不可以“虎头蛇尾”,更不许漏掉关键内容。有些学生在证明数学题时,喜欢用“显然”两字蒙混过关。文档中很多内容对开发者可能是“显然”的,但对用户而言不见得都是“显然”的。
  J# l! ]2 q7 o文档不可以写成散文、诗歌或者侦探、言情小说,要让大众用户看得懂,能理解。
5 a$ L4 n2 }9 \6 X很多程序员能编写出好程序,却写不出清晰的文档。不要说自己以前语文学得差,现在已没救了,找借口不是办法。没有人天生就能写出好程序,都是练出来的。同理,若第一次写不好文档,就多写几次文档,慢慢地就会写出好文档来。我上大学前不会说普通话,不会写作文,现在我极能说会写,当个秘书或书记已绰绰有余。4 S/ g4 z6 ]4 l+ P- k. }! R

( u( m  q6 f4 K' F, C) b7.4 改 错
9 M9 l9 ^9 n% k. g: N& x/ l9 y" e2 F在软件测试时如果发现了错误,必须请程序员改错,否则测试工作就白干了。' T% J! ~3 x2 [: Q7 ?% _! r
改错是个大悲大喜的过程,一天之内可以让人在悲伤的低谷和喜悦的颠峰之间跌荡起伏。如果改过上万个程序错误,那么少男少女们不必经历失恋的挫折也能变得成熟起来。
, x1 H7 t3 _2 H3 X我从大三开始真正接受改错的磨练,已记不清楚多少次汗流浃背、湿透板凳。改不了错误时,恨不得撞墙。改了错误时,比女孩子朝我笑笑还开心。6 L* C( ~! ]* k8 _. U
在做本科毕业设计时,一天夜里,一哥们流窜到我的实验室,哈不拢嘴地对我嚷嚷:“你知道什么叫茅塞顿开吗?”; @2 v& [' l- n7 s* q9 o
我象白痴似的摇摇头。
- l+ z9 f7 L  F; g5 q, X他说:“今天我化了十几个小时没能干掉一个错误,刚才我去了厕所五分钟,一切都解决了。”
, U# _& J# p2 i; Q$ f' D他还用那没洗过的手拉我,一定要请我吃“肉夹馍”。那得意劲儿仿佛同时谈了两个女朋友。
9 @4 f. v' ^- M# x  K0 E  I6 E' w' R在本节,我要替程序员们总结关于改错的几点思想方法:
% d0 I0 ]! l# {(1)要有勇气。东北有个林场工人,工作勤奋,一人能干几个人的活。前三十年是伐树劳模,受到周总理的接见。忽有一天醒悟过来,觉得自己太对不起森林,决心补救错误。后三十年成了植树劳模,受到朱总理的接见。此大勇也。- `2 r9 A; n& i8 Y% H
程序中的错误只有开发者自己才能找出并改掉。如果因畏惧而拖延,会让你终日心情不定,食无味,睡不香。所以长痛不如短痛,要集中精力对付错误。
5 ?$ g' I9 I0 q6 V. m( B% [  z(2)不可蛮干。都说急中生智,我不信。我认为大多数人着急了就会蛮干,早把“智”丢到脑后。不仅人如此,动物也如此。' H7 R: `. ]" |# c
我们经常看到,蜜蜂或者苍蝇想从玻璃窗中飞出,它们会顶着玻璃折腾几个小时,却不晓得从旁边轻轻松松地飞走。我原以为蜜蜂和苍蝇长得太小,视野有限,以致看不见近在咫尺的逃生之窗,所以只好蛮干。可是有一天夜里,有只麻雀飞进我的房间,它的逃生方式竟然与蜜蜂一模一样。我用灯光照着那扇打开的窗户为其引路,并向它打手势,对它说话,均无济于事。它是到天亮后才飞走的,这一宿我俩都没息好。6 f: N! v, _( |! x& s& o' n
(3)找出错误的根源。有人问阿凡提:“我肚子痛,应该用什么药?”阿凡提说:“应该用眼药水,因为你眼睛不好,吃了脏东西才肚子痛。”
' E7 a  y: ^& D  b5 s5 ]- [7 K我们应该运用归纳、推理等方法尽早确定错误的根源。
" Z: L% [8 g$ z. G5 j7 [) T% S' p% x(4)在改错之后一定要马上进行重新测试,以免引入新的错误。有人在马路上捡到钱包后得意忘形,不料自己却被汽车撞倒。改了一个程序错误固然是喜事,但要防止乐极生悲。更加严格的要求是:不论原有程序是否绝对正确,只要对此程序作过改动(哪怕是微不足道的),都要进行重新测试。7 W3 S& W( F  N/ u2 ]/ m
" |. {1 f2 w. H
7.5 小 结
) U0 [5 f. R; V0 ?5 L# H6 `优秀的程序员敢于声称自己的代码没有错误,这种自信让人羡慕不已。一个错误自身也许很微小,但是程序存在错误这件事很严重。能否做好测试与改错工作,思想认识和办事态度是最关键的。
2 e  `. p3 J! r/ }程序员应该把测试当成份内之事,不要依赖于外界的“黑盒测试”。“黑盒测试”就象通过提问题来判断一个人是否是个疯子,但无法知道他为什么成了疯子。让程序员对所有的代码执行单步跟踪测试听起来很费时间,但习惯了你就感觉不到有什么不方便。单步跟踪测试将使你以后的日子更轻松
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硬件故障排除方法    u7 j( }/ e& u; H3 B& s

0 b: @% n- W" V5 z6 c  y0 b/ o; n. Z" C3 v' c
                                                                           ——Trimed By HavenGu
& o; D3 E* [6 a* K% C2 `# b
& g" J- q! J) |  L0 u( Jacky_Shu’s talk on 5/12/06 ) # t- O; `1 A8 @8 _$ q% Y
% W) g" h4 J2 Q4 I
  # E: w) J1 |! D! _$ {  W$ F  u8 B  M

0 Y8 u/ ~/ @: v, r6 b' U! b' n  
4 G- ^# |" g$ I
9 ^! E6 ]- }3 R* \) t5 I6 X                     Unswitch Power      à    PC主机,显示器 . E+ ^$ M5 H6 F; f; `/ k! n
( p( d% s, `, [# p0 {! P8 I# Z
PDU
  g! ~, C4 c3 U  M, f3 r% s5 M8 a( O
                                        fans
" c+ }6 J: D9 f& k' Q2 G
0 j% k! n! c: g6 ~+ D. ?                    Switch Power    à       testhead
2 q( U. t" w1 U1 ~5 d& ~, O) d+ B4 t8 r( i
                                          6624A
! |8 M. j; b1 r% e( m* }: y. ^" c$ ^& R+ _
  
$ l, F8 a8 L, A4 T: E& U5 m  _6 g9 K) S: a: \/ Z% [7 |; V  M
                                          
: I" n4 @7 |( s8 i
: W5 S( B; W- M1 a& S' Q! [                              鼠标,键盘  à     HP/IBM 两键鼠
3 |1 f: Q' d6 k5 ?* r8 N) z$ a8 M" y
CDB Errors
9 `; k1 E9 r0 g1 j& Q
$ j) B' C+ s( @+ r0 h                               网络    à    单用户模式
6 G- `. N+ F4 q# w; B# C1 h# u6 M: l, a, H
  ! L0 h: y6 \! N, _& G1 T; }

- h2 B4 I4 }  N& ~进入单用户模式: ! {0 x5 |0 k6 O4 \. L$ f9 n
  @% C7 I* P$ T6 j( f4 v+ t0 o
        1.   重启PC     (  按[ tab] 可更改分辨率 ) $ x, x; R& O  N% [' a
+ ^& `' c- {8 A* D
2.      按 [Esc]  
; F6 O. f4 e: n+ p3 O
& ~6 u9 S0 T; s8 p" g  |8 o3.      键入命令 “ search “ 回车;
" K1 V! b$ }! @* V+ w5 {' o- u* w; r2 E$ b3 W
4.      > boot P0 或>boot P1  (硬盘启动) ; X" n9 ~, l8 Y- g+ `

4 H) H4 j' c: V' z% d. B5.      ISL(Yes/No/I…)> Y ,回车 9 q& U  M5 E* ]$ V, U
7 e% y9 n  Y+ U/ Z" \  F, |
6.      SINGEL MODE / m. E3 a. M9 o3 A# M& z
# |1 W, n. i+ s" v( Q
        #hpux –lm            à 进入单用户调试模式
  I( T5 ], Z. X& X
# d/ ^' o' n4 V7 [* L        #hpux –is              à正常启动系统   H. k. Y) q6 F. `1 S3 E
/ Z; g4 |! W7 q2 I, h2 `: F1 l
  
# \2 W0 U* S- J+ x( b1 }1 K( _6 M6 g$ a! B
  7 ]* k6 w' E! p: c$ L7 S

6 O- }' m6 v  I  d8 @( _$ |  a$ n6 L& y  * p, {# Y" p: p! C* Y) a

( B9 G% N* f" f8 r9 H1 g0 e- I  ( ?) f6 a; ^* F. `' y; a0 p% \: z( i

% @5 H( N9 e9 R( Q2 ]  & |9 A1 G' D0 Y% C9 r
! f7 X/ D. y4 {* X
  & C' l# m( \9 o* \4 l

$ x" G7 @* c! v2 I/ {  ) s5 U' s( U6 E* U

" d) v: t  }8 O- k  
5 M2 f3 e2 Z0 l) @4 g* O( J% d6 ?/ L8 P% s' D+ A8 {1 o
    S& O$ R8 V! X2 q. ?# Z+ J
8 N1 F7 l+ L/ `* }& H3 J4 N# Y$ O: }
  
' d' l4 X" r' b+ B3 F" [. O0 N
2 n* j6 O1 v* h% {' I" K3 u9 J/ M# f9 A: M5 a+ _
; L# B; m2 K* @: ]
(1) System card time out " l: E1 g1 `) q+ c( ^# E8 D$ B7 h
2 {8 d/ \9 ]! t8 O1 Q" f, p
Boot Step: * y1 \. I' d- Q/ _  S1 r
2 a# g. ~( I* N* _
0 J, Y8 ?6 X; @  T4 E, Y1 B5 F
  " M3 V. x/ v5 c+ i

5 [5 M/ {; v' ]# ]( {1 w, i  
. {% r1 S0 H" c: Q- j1 y  LAN1 card    à    System card    à    Control XT LAN   
5 m& }8 n2 R/ B; t
% ~+ m7 D# D" P' \; `                                                            
4 S& f) U0 r. k3 U: y' @' X- }$ G4 @6 b5 B! `. e( E
  
1 z4 u8 e+ F) ~
. E. y) m: M4 o2 W% t- ~( E  w                    1.检查网络连接                                               1. LAN  cable (光纤)
& U2 Q+ r$ R$ `( ~8 |$ ^. ^/ f( ~3 R1 H* _# H
                     cd /etc                                                                                                 4 m4 h6 Y8 N- h) p7 l- m0 j' w
# u8 {& j/ _8 j3 D: [
                        ping 10.3.112.1                                            2. 50ohm终端电阻 # J& w, k8 G" P
# K4 r$ B" s, T8 B6 i2 Z# E! J8 X
                                                                                                                                ; c5 U, l$ |% i
+ j0 W" ^, V9 U
                                                        1.  有无电源?(LED指示)   l' U; G5 ~! \$ v9 N! ~( I

$ X. _5 B6 z5 ~+ K: g0 c                                                        2.  地址匹配? $ r6 ]+ v; t2 m) ^- K1 Y: x

6 R) ]# m+ Z3 y7 ?7 D) V( X4 U                                                             * 卡上标签 2 H- D- f( L! X7 z4 i

, \, s2 @  d. q" g1 A- T* s" v% W1 l  N                                                             * /etc/.enable中(用text edit 打开) * g+ _! v; W# Z& a' b. Z- V3 d
% ^+ g4 r, T9 N6 q; I" P9 C' a
                                                                testhead 1
& I9 j6 Z7 v' |* c  v
% }$ R% i# E- M, t  ^$ Z" ?                                                                HA:xx….xx
$ e% w2 p- D7 b
% V% c0 _* a& S                                                       3.  检查网络连接
: j* p: y5 ]6 Y& B! V9 [( Z" ~+ Z9 v* f
                                                              cd /etc
: F! |" r* c8 T! v. h
! `7 `0 P) M( J! l5 v                                                              ping 10.3.112.2 ) r' h+ N3 G9 Z' P

4 s# M. E! F% @) f% l                     
2 Q1 x' a3 j2 D, s0 g
( G* R% p( M- F+ _) l  |0 `                    ① HUB à  GPIB      
5 \  d' @! k) N
8 y% d9 q4 R+ R/ X' H                    ②  LAN cable & High Speed Link Cable  (光纤& 排线) 1 Y' H) ~. g. \' D7 x

) \, ?' D) m" C4 Y+ a5 R  
2 h1 ^5 Z- q4 q& f! t0 C& n, T  a* I  y- c, e
  
% z$ x$ p( h( r. K! g& Y# b* p  K$ l
(2) 实际config与设置config不匹配
7 \" _9 |5 O8 e9 c+ M% M, \! _0 s9 Y/ X% }& m$ B, |9 m) r6 j
                 1.  EX000-69540        -66540       à   6M
2 J4 Q5 d$ r" Q8 @, L  U* {+ o1 |0 S) E" o% V5 Y9 c+ p$ }; K2 X! [: `6 p
               -69550        -69550    à   6M, 12M, 20M 5 h7 D9 I% r- @

! F$ D9 u/ f+ g& k/ Y, I- k                     设置文件: /etc/.enable ' W' B" O0 e/ m  S. Y) J

7 Y+ V  @9 B) B9 v+ y8 h' j$ e1 v                  
: c" ]% ?9 s" U0 s5 y* i6 O3 ]% W2 s9 c9 a: K" S( r6 Y( f
                 2.  config下 NO Card      *
; p6 M8 c4 v1 q  s( V7 @( X
. J' p8 a3 c/ |! @; Y6 c& ?: O                                   NO Card      * 1 L' @9 P% t1 O9 k- L% d7 K
, a% _9 f4 y7 }  [+ P2 I' K8 @
                                   …… ! n/ @+ ]  V1 W; f) Z+ v
* U8 j) Z0 L" r1 w' v" M
                                   NO Card      * * a6 f  y9 e9 c# V) ^/ `5 Q! t6 c
1 Z* U# s' {1 l! m6 q" b! ^
                    即系统找不到PIN Card等,可判断为MPU损坏。 0 _. b, {; y0 W* W* p
9 M; g4 e! k7 M. m8 W
  2 f+ E7 |' p# I! D* l' j
& x! ^* T4 N) U4 W$ Q. v4 c
                3.  config下   ASRU Card 忽隐忽现,判断为Mother Board Problem.
! P5 }* u. k$ \6 G8 U) W3 }* x& V2 o8 D
(1)    螺丝是否上紧
1 C: p% K' l( |2 G5 S% A- ~( i( K7 Q: l6 U5 W  }
(2)    与ASRU卡connector接触不良,需清理
9 K7 C: C6 H! I( f0 ~  X
4 a0 }$ C7 P' O' j6 I1 K! ~(3)    Mother Board 损坏,需更换
/ C0 x0 ?  U* J: a+ F* o
& O' Z; A- v* C0 S' Q  4 o- Y) V* Q, R: I! S, l( x" K

. }) x$ @7 @$ w* r0 H7 i$ k  2 s9 X/ ?$ U* Y9 o! [
" u! W- E+ L5 m, A: I: Z
  * Y7 I1 `+ |9 V6 _3 {

8 F" \1 L0 @% r3 q/ G1 q  
; }) H! g/ \. a
8 q5 ?+ x7 z" S3 a3 z  7 g, s, v2 q, ?' s, p3 \
# ~/ `9 K8 q0 r8 Z# M, L9 E
(3) Control Card Self-handshack
& E1 t/ {; @* \- ]9 L3 _9 i5 `; m" F. p/ w1 @+ T- }1 U
                       检查Control Card 设置
0 X: ~# Z: G7 H) P' \6 D% [, J* c6 }* q/ I$ C2 V
  
5 u+ u8 |# b& d1 s- q, u; a! G* I
                             检查High Speed Link Cable
1 `1 D& ~* |# |6 @6 C' J. Y
) k. m8 G9 ]* Z5 }& m' d  
- w( l- C4 H  F! a- b' P$ @6 `8 f1 `
$ J1 M% U& A8 A$ L7 D                             检查LAN Cable
6 v- c0 i0 X: \+ Y) R
% y/ [. [$ i6 P1 j- H* h- k  
3 D" v1 t/ n, }; E  x/ x
0 H6 A6 }! k# ^7 z* W- e                    ·Control Card 地址设置: 1 g, G. {/ ]3 u/ O

" E# Z% o, n/ `1 K: i                      /etc/bootptab中(用text edit打开) : c( X. j; p1 K; z) S, l/ S

! q& Y1 P- T  t  A0 T                            Module 0,1,2,3 % e5 C- T. A/ H* L; d8 y
9 l: y& `. Q: p7 d4 q
                            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-9-26 14:56 , Processed in 0.052129 second(s), 25 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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