9、没有产品说明书和需求文档地情况下能够进行黑盒测试吗?
X)@Gys:Tsat;l0这个问题是国内测试工程师经常遇到的问题,根源就是国内软件开发文档管理不规范,对变更的管理方法就更不合理了。实际上没有任何文档的时候,测试人员是能够进行黑盒测试的,这种测试方式我们可以称之为探索测试,具体做法就是测试工程师根据自己的专业技能、领域知识等不断的深入了解测试对象、理解软件功能,进而发现缺陷。
U#O^m"Di\$C,L0在这种做法基本上把软件当成了产品说明书,测试过程中要和开发人员不断的进行交流。尤其在作项目的时候,进度压力比较大,可以作为加急测试方案。最大的风险是不知道有些特性是否被遗漏。51Testing软件测试网w%rTX+P.r#K
10、 测试中的“杀虫剂怪事”是指什么?
'NrA9c.{;J:o0“杀虫剂怪事”一词由Boris Beizer在其编著的《软件测试技术》第二版中提出。用于描述测试人员对同一测试对象进行的测试次数越多,发现的缺陷就会越来越少的现象。就像老用一种农药,害虫就会有免疫力,农药发挥不了效力。这种现象的根本原因就是测试人员对测试软件过于熟悉,形成思维定势。51Testing软件测试网R ^{S
DM p'a ]x
为了克服这种现象,测试人员需要不断编写新的测试程序或者测试用例,对程序的不同部分进行测试,以发现更多的缺陷。也可以引用新人来测试软件,刚刚进来的新手往往能发现一些意想不到的问题。
%s Or;b[!q$Q7p7k k+cX011、 在配置测试中,如何判断发现的缺陷是普通问题还是特定的配置问题?51Testing软件测试网&|]fT/fq6[5Gb
在进行配置测试时,测试工程师仍然会发现一些普通的缺陷,也就是与配置环境无关的缺陷。因此判断新发现的问题,需要在不同的配置中重新执行发现软件缺陷的步骤,如果软件缺陷不出现了,就可能是配置缺陷;如果在所有的配置中都出现,就可能是普通缺陷。51Testing软件测试网,a+{R5?'e
需要注意的是,配置问题可以在一大类配置中出现。例如,拨号程序可能在所有的外置Modem中都存在问题,而内置的Modem不会有任何问题。51Testing软件测试网G+q wL pg+o-[
14.5其它常见问题
1、为什么尽量不要让时间有富裕的员工去做一些测试?
)R)B6\'a&_0表面上看这体现了管理的效率和灵活性,但实际上也体现了管理者对测试的轻视。测试和测试的人有很大关系。测试工作人员应该是勤奋并富有耐心,善于学习、思考和发现问题,细心有条理,总结问题,如果具备这样的优点,做其它工作同样也会很出色,因此这里还有一个要求,就是要喜欢测试这项工作。如果他是专职的,那么肯定更有经验和信心。国内的小伙子好象都喜欢做程序员,两者工作性质不同,待遇不同,地位不同,对自我实现的价值的认识也不同,这是行业的一个需要改善的问题。如果只是为了完成任务而完成任务,或者发现了几个问题就觉得满意了,这在任何其它工作中都是不行的。51Testing软件测试网?0[5n/?I4K
2、完全测试程序是可能的吗?51Testing软件测试网:g fN2{A4Nz c
软件测试初学者可能认为拿到软件后需要进行完全测试,找到全部的软件缺陷,使软件“零缺陷”发布。实际上完全测试是不可能的。主要有以下一个原因:
6o YHWK;w1J0l 完全测试比较耗时,时间上不允许;51Testing软件测试网N t4Ll
mo
l 完全测试通常意味着较多资源投入,这在现实中往往是行不通的;
Lf/?wkM\0l 输入量太大,不能一一进行测试;51Testing软件测试网P#O1q ?;OX0[%[.|XF
l 输出结果太多,只能分类进行验证;
wqA$w Me |I:i0l 软件实现途径太多;51Testing软件测试网JE3[*zbY?%f-R%J
l 软件产品说明书没有客观标准,从不同的角度看,软件缺陷的标准不同;
-v@
C"t:y7S`
\0因此测试的程度要根据实际情况确定。51Testing软件测试网'Bz Q.rk#i
3、软件测试的风险主要体现在哪里?51Testing软件测试网0WHS0R;lz
我们没有对软件进行完全测试,实际就是选择了风险,因为缺陷极有可能存在没有进行测试的部分。举个例子,程序员为了方便,在调试程序时会弹出一些提示信息框,而这些提示只在某种条件下会弹出,碰巧程序发布前这些代码中的一些没有被注释掉。在测试时测试工程师又没有对其进行测试。如果客户碰到它,这将是代价昂贵的缺陷,因为交付后才被客户发现。
W'xFv(i0因此,我们要尽可能的选择最合适的测试量,把风险降低到最小。51Testing软件测试网`3Wdq\kf0J3x
4、发现的缺陷越多,说明软件缺陷越多吗?51Testing软件测试网3e(BPLS&\TJ
这是一个比较常见的现象。测试工程师在没有找到缺陷前会绞尽脑汁的思考,但是找到一个后,会接二连三的发现很多缺陷,颇有个人成就感。其中的原因主要如下:51Testing软件测试网][O8J
q,~e$U
l 代码复用、拷贝代码导致程序员容易犯相同的错误。类的继承导致所有的子类会包含基类的错误,反复拷贝同一代码意味可能也复制了缺陷。
+q``7S#rPNk0l 程序员比较劳累是可以导致某些连续编写的功能缺陷较多。程序员加班是一种司空见惯的现象,因此体力不只时容易编写一些缺陷较多的程序。而这些连续潜伏缺陷恰恰时测试工程师大显身手的地方。51Testing软件测试网6A?D0iJ
?
“缺陷一个连着一个”不是一个客观规律,只是一个常见的现象。如果软件编写的比较好,这种现象就不常见了。测试人员只要严肃认真的测试程序就可以了。51Testing软件测试网3h$ZB0?
c
5、所有的软件缺陷都能修复吗?所有的软件缺陷都要修复吗?51Testing软件测试网*N7zS8|L[r(KU3I'f
从技术上讲,所有的软件缺陷都是能够修复的,但是没有必要修复所有的软件缺陷。测试人员要做的是能够正确判断什么时候不能追求软件的完美。对于整个项目团队,要做的是对每一个软件缺陷进行取舍,根据风险决定那些缺陷要修复。发生这种现象的主要原因如下:
)KwA@#s0l 没有足够的时间资源。在任何一个项目中,通常情况下开发人员和测试人员都是不够用的,而且在项目中没有预算足够的回归测试时间,再加上修改缺陷可能引入新的缺陷,因此在交付期限的强大压力下,必须放弃某些缺陷的修改。
["p"N!G+zj7L$n,t4{0l 有些缺陷只是特殊情况下出现,这种缺陷处于商业利益考虑,可以在以后升级中进行修复。
D(] y]9o0{ @0y0l 不是缺陷的缺陷。我们经常会碰到某些功能方面的问题被当成缺陷来处理,这类问题可以以后有时间时考虑再处理。51Testing软件测试网N${#G0n&JX
最后要说的是,缺陷是否修改要由软件测试人员、项目经理、程序员共同讨论来决定是否修复,不同角色的人员从不同的角度来思考,以做出正确的决定。51Testing软件测试网8a.s)e{TY3H"OV
6、软件测试人员就是QA吗?51Testing软件测试网T/b1}0` S d ys|
软件测试人员的职责是尽可能早的找出软件缺陷,确保得以修复。而质量保证人员(QA)主要职责是创建或者制定标准和方法,提高促进软件开发能力和减少软件缺陷。测试人员的主要工作是测试,质量保证人员日常工作重要内容是检查与评审,测试工作也是测试保证人员的工作对象。51Testing软件测试网r'{#T)fO2I${,L.i
l@o
软件测试和质量是相辅相成的关系,都是为了提高软件质量而工作。
B:S{;~%yJ4n4~0~V07、如何减少测试人员跳槽带来的损失?51Testing软件测试网1R\
}rZ
在IT行业里跳槽已经是一种司空见惯的现象,而且跳槽无论给公司还是给个人都会带来一定的损失。测试队伍也无疑会面临跳槽的威胁,作为测试经理管理者,只有从日常工作中开始做起,最能最大限度的减少损失。建议我们从以下两个方面做起:51Testing软件测试网Y:B*I2Y\
s
l 加强部门内员工之间的互相学习,互相学习是建立学习型组织的基本要求,是知识互相转移的过程。在此基础上,可以把个人拥有的技术以知识的形式沉积下来,也就完成了隐性知识到显性知识的转化。51Testing软件测试网[x/vwd}F[B
l 通常情况下,企业能为员工提供足够大的发展空间时,如果不是待遇特别低,员工都不会主动离开企业。因此我们要想留住员工,管理者就应该把员工的个人成长和企业的发展联系起来,为员工设定合理发展规划并付诸实现。不过这项要求做起来比较,要有比较好的企业文化为依托。51Testing软件测试网.@?/mFIRisyH
8、测试产品与测试项目的区别是什么?
3MYW[!D1R.dN0习惯上把开发完成后进行商业化、几乎不进行代码修改就可以售给用户使用的软件成为软件产品,也就是可以买“卖拷贝”的软件,例如Windows 2000。而通常把针对一个或者几个特定的用户而开发的软件成为软件项目,软件项目是一种个性化的产品,可以是按照用户要求全部重新开发,也可以修改已有的软件产品来满足特定的用户需求。项目和产品的不同特点,决定我们测试产品和测试项目仍然会有很多不同的地方:
:f)Ndx.jk~f3a0l 质量要求不同。通常产品的质量要高一些,修复发布后产品的缺陷成本较高,甚至会带来很多负面的影响。而做项目通常面向某一用户,虽然质量越高越好,但是一般只要满足用户要求就可以了。51Testing软件测试网`o*D:@YCxP8L
l 测试资源投入多少不同。做软件产品通常是研发中心来开发,进度压力要小些。同时由于质量要求高,因此会投入较多的人力、物力资源。
G3v5aGX/gD0l 项目最后要和用户共同验收测试,这是产品测试不具有的特点。51Testing软件测试网l hH7[4LkJA
此外,测试产品与测试项目在缺陷管理方面、测试策略制定都会有很大不同,测试管理者应该结合具体的环境,恰如其分的完成工作。51Testing软件测试网#Pd1Ta5YL!\uk'e+vf X
9、和用户共同测试(UAT测试)的注意点有哪些?51Testing软件测试网r0v!kW([IM
软件产品在投产前,通常都会进行用户验收测试。如果用户验收测试没有通过,直接结果就是那不到“Money”,间接影响是损害了公司的形象,而后者的影响往往更严重。根据作者的经验,用户验收测试一定要让用户满意。51Testing软件测试网.s&e;cE)D-}%@"[
实际上用户现场测试更趋于是一种演示。在不欺骗用户的前提下,我们向用户展示我们软件的优点,最后让“上帝”满意并欣然掏出“银子”才是我们的目标。因此用户测试要注意下面的事项:
IP4puO,U0(1)用户现场测试不可能测试全部功能,因此要测试核心功能。这需要提前做好准备,这些核心功能一定要预先经过测试,证明没有问题才可以和用户共同进行测试。测试核心模块的目的是建立用户对软件的信心。当然如果这些模块如果问题较多,不应该进行演示。51Testing软件测试网s*?8Hrb8H
(2)如果某些模块确实有问题,我们可以演示其它重要的业务功能模块,必要时要向51Testing软件测试网6?-s7vJ? f+g-Px
用户做成合理的解释。争得时间后,及时修改缺陷来弥补。51Testing软件测试网l!~i.f
w,q
(3)永远不能欺骗用户,蒙混过关。道理很简单,因为软件是要给用户用的,问题早晚会暴露出来,除非你可以马上修改。
`
fE
wf
E0和用户进行测试还要注意各种交流技巧,争取不但短期利益得到了满足,还要为后面得合作打好基础。
6Q:o ^9`D010、 如何编写提交给用户的测试报告?51Testing软件测试网.N0EY n"d4J'q3^
随着测试工作越来越受重视,开发团队向客户提供测试文档是不可避免的事情。很多人会问:“我们可以把工作中的测试报告提供给客户吗?”答案是否定的。因为提供内部测试报告,可能会让客户失去信心,甚至否定项目。
[6^3`B.e1Q,Ygn(X0测试报告一般分为内部测试报告和外部测试报告。内部报告是我们在测试工作中的项目文档,反映了测试工作的实施情况,这里不过多讨论,读者可以参考第9章的相关内容。这里主要讨论一下外部测试报告的写法,一般外部测试报告要满足下面几个要求:
w*I9F"H3@f6po"oQ@L0l 根据内部测试报告进行编写,一般可以摘录;51Testing软件测试网vvm(^B2]Pj
l 不可以向客户报告严重缺陷,即使是已经修改的缺陷,开发中的缺陷也没有必要让客户知道;51Testing软件测试网kb6e}M,~$|!cC I!I
l 报告上可以列出一些缺陷,但必须是中级的缺陷,而且这些缺陷必须是修复的;
']aE/z%D n+l0l 报告上面的内容尽量要真实可靠;
P0A`
C'v)A2@zf0l 整个测试报告要仔细审阅,力争不给项目带来负面作用,尤其是性能测试报告。
)G1_y/xC/ED0总之,外部测试报告要小心谨慎的编写。
M8q2}C7j5IF+\&^011、 开发人员老是犯一些低级错误怎么解决?51Testing软件测试网[eH7E6C2}(o"j6G@
这种现象在开发流程不规范的团队里特别常见,尤其是一些“作坊式”的团队里。解决这种问题一般从两个方面入手:51Testing软件测试网|-v CA(O [I
一方面从开发管理入手,也就是从根源来解决问题。可以制定规范的开发流程,甚至可以制定惩罚制度,还有就是软件开发前做好规划设计。
0gP8lR^0另一方面就是加强测试,具体做法就是加强开发人员的自己测试,把这些问题“消灭”在开发阶段,这是比较好的做法,读者可以参考第13章试案例分析的“13.1.2缺陷反复出现,谁的责任”小节,13.1.2专门讨论了这类问题的方法。
&Ric'yz9U$w7m%F0此外,还可以通过规范的缺陷管理来对开发人员进行控制,比如测试部门整理出常见的缺陷,让开发人员自己对照进行检查,以减少这类低级错误的发生。
I'W-}7u3gi{
d(}0开发人员犯错误是正常的现象,作为测试人员一定不能抱怨,要认认真真的解决问题才是上策。51Testing软件测试网.xg;^|(`z$N
_
12、 测试工具在测试工作中是什么地位?
kAf8|
M;[ kV0国内的很多测试工程师对测试工具相当迷恋,尤其是一些新手,甚至期望测试工具可以取代手工测试。测试工具在测试工作中起的是辅助作用,一般用来提高测试效率。自动化测试弥补了手工测试的不足,减轻一定的工作量。实际上测试工具是无法替代大多数手工测试的,而一些诸如性能测试等自动化测试也是手工所不能完成的。51Testing软件测试网E*@gG2X
C;e
对于自动测试技术,应当依据软件的不同情况来分别对待,一般自动技术会应用在引起大量重复性工作的地方、系统的压力点、以及任何适合使用程序解决大批量输入数据的地方。然后再寻找合适的自动测试工具,或者自己开发测试程序。一定不要为了使用测试工具而使用。
~zb1ln0测试工具的具体内容请读者学习第11章的相关内容。51Testing软件测试网7^5G8Q+Y?:aGd1}[