软件测试的科学
上一篇 / 下一篇 2012-10-10 09:39:36 / 个人分类:杂谈
D5{C5Hw.D0 软件测试曾在商业软件领域被认为是一种事后 的亡羊补牢。初级的产品经理甚至开发人员认为软件测试是任何人都可以从事的工作。一些关于软件测试的书籍甚至冠以“艺术”、“手艺”之类的名字。这导致软 件行业的某些读者误认为质量测试不是软件工程的一个学科。相反,通过缺陷鉴别,错误预防和合理风险分析的实测报告,有效的测试不仅是一门工程的学科,而且 是提升软件质量和可靠性的关键部分。
)G.^HwW+Y F0:f i{6wqDN~ }%l0 测试的创造力51Testing软件测试网G#XGPM/T
nS?!m,wj0 尽管一些人认为测试软件是一名艺术,这么说也只是因为测试和工艺品同样具有创造性。然而,没有工艺品需要软件测试过程中需要的数学基础和逻辑能力。51Testing软件测试网J B*d,m N2iA7x ]&D"R
51Testing软件测试网lvtn8p;SD7d#_b+C+O o对于一个大规模的计算机程序,测试需要比设计程序更多的创造力。这个观点一直存在争议。Glenford J. Myers 在《软件测试的艺术》支持了这个理论。他指出“测试是极度富有想象力和高智力的有挑战性的工作”。实际上,很多既设计又开发软件的人承认他们通过创造力的 软件测试发现更多美学上的满足感。但是,跟创造力差不多,软件测试绝不是一门艺术或者一门手艺。51Testing软件测试网%SR jNn'm
aQ8q:r(t c8aS0 测试的哲学观点51Testing软件测试网-~(f'X&WQ(F
51Testing软件测试网pt,t7_/ao{有史以来,人类早已通过怀疑工具和流程的设计参与了各种形式的测试工作。这种持续的重估值导致了质量的提高和效率的重大提升。但是,基于反复试验的测试是非常艰苦和耗时的。
j9N/pq ndS{ W+s0mu"C1^vl.l0 1962年,哲学家Sir Karl Popper提出知识增长来自于更科学的方法和流程。在他的书《猜错与反驳》中,Popper假设减少伪事物促成了科学的进步。本质上,进步是将科学理论(猜错)转化为可测试的假设(反驳)实现。
1FH3R@o/}8W{051Testing软件测试网fV#W'c6UJ#hlRI:r测试是一门科学
~4h%EH![0]?mBil[0 计算机软件与科学假设类似;两者都固有易错性。软件调试过程的基本框架类似于科学假设的试验和错误实践。因此,计算机软件是简单的技术推测。51Testing软件测试网&h:DSA9E
51Testing软件测试网 ^}I;T$e@1y测试工程师通过严格的测试(主要用于证明缺陷存在)反驳无缺陷软件的假设。这种“造假”的过程和数据驱动的方法(例如归纳和推理)形成鲜明的对照。数据驱动通过事实的重复来证明正确性。
'\ hoo#tD ?(w"qD0vK0]e Z0 这些方式都是通过确认来支持论断。通过使用特殊数据验证功能正常来证实不确定的无差错。这种方式仅能证明软件功能在某种情况下功能正常;它并不能证明软件无差错。
V(e9s2M P0E3{ L Iw0 建立软件的信心
T3i/x2AU0r|y|S:Z?0 建立软件可靠的信心的最佳途径是在设计或者功能方面发现缺陷,而不是仅仅证明一个软件在产品需求的范畴内能够工作。
N5H*J0~$w8AX#D/R03Ot!i;X(V#P0 可是,任何假设可以经受住无数小时的彻底测试,却仍然存在错误。驳斥不能保证无缺陷的软件,因为在一定量的时间里,有太多的假设需要测试。William Hetzel 在《软件测试完全指南》中解释了彻底测试的无效性。他写道“一个有70个分支的程序包含的测试用例超过你用茶勺去衡量太平洋的水。”