软件质量控制之难 之我见 测试篇

上一篇 / 下一篇  2012-07-19 09:08:10 / 个人分类:测试经验

做软件几年下来,感觉做软件不难,做个好软件,----难。做个高质量的好软件,---非常难。

&|}i8Dc X!W X0  难在哪里呢?51Testing软件测试网;\c+Z6p ed

'gz n0W ^7\?0  做软件不难,软件工程--难。

1u| MUm:M0w+H)w051Testing软件测试网7u$Um2p%N*G zy3k

  每个程序员都会写程序,写出的程序质量就不一而论了。51Testing软件测试网PqR\1u~gN

qP1ul-O;L9U`U:rY0  新手程序员写的程序肯定有很多的缺陷和bug,健壮性也很差。51Testing软件测试网icn CE|

51Testing软件测试网!bcX;i6|7qV%Xk

  1、像sql注入,脚本注入,特殊字符,等等,这些问题新手肯定不会去考虑,因为新手都不知道还有这些问题存在。-->经验+知识欠缺

"HY^,Z yAk}F0

T#mM e8`0  2、程序的执行状态、执行过程中的各种可能遇到的问题。比如断电,短线等等,老程序员也不可能完全把握。--->思考欠缺

j:Upl%sjrT_0w051Testing软件测试网2w8yU J0u.ol

  3、找不到对象,程序执行着就出错了。蹦出的错误,直接把程序挂掉。一出错整个程序没法运行下去。--->系统设计欠缺51Testing软件测试网Q"CY'eV7k"X#y l0TD

l2~r$QJ/Zy"l1|8C0  4、新的需求加进来的,程序改起来要人命。-->也是系统设计对变更的考虑欠缺。51Testing软件测试网wq$pq|s7fk

51Testing软件测试网l V"OB~^1Yd"DK6r@

  这些错误都是难免的。只不过老程序员写起来会自然而然的想到以前出过的错误,可能会出现的情况,自然写一些代码对之进行屏蔽。51Testing软件测试网,x _ A)``c? s*h pf

51Testing软件测试网7]RB W(B!mBO-R

  目前来看,要想写出一个好的,质量高的程序,只有把所有的错误都犯一边,下次再写的时候就会注意了!!-----MyGod...这需要多少长的时间啊。所以说老程序员,值钱就值钱在写的程序比别人考虑的多一点。51Testing软件测试网'L/hG0J,^,u,X4TK'?

51Testing软件测试网-v/Ip\z+c ]m

  但是也有另外一个方法可以控制住软件的质量,那就是测试,把做好的软件测试一遍。测试合格,软件不就合格了吗??测试的越严密越广泛,则程序的质量越高。所以有这么一个概念叫做测试覆盖度。一个测试可以测试系统中百分之多少的功能和bug。当然最好一个测试就能测试完100%的功能和bug。51Testing软件测试网-jRv2Y_6x4G

51Testing软件测试网g v gJ o&Xz4Yl)I(];H

  再来分析下看,抛开测试覆盖度不讲,单讲要测试的内容有哪些吧。51Testing软件测试网(^3Kt n ^},X:~H)l`

51Testing软件测试网W*}.i(x!V6|5e,|

  比如:

0Xf,^ i|6UpH h051Testing软件测试网.a@,`+K-L m*M3B

  安全方面的sql注入测试,脚本注入测试等等;

6Z J-MgMl TW0

G9D{O Cc`0  功能方面的单个模块的测试,模块组合集成后的测试,软件操作流程测试;51Testing软件测试网8Jzg Z\:l-H[

51Testing软件测试网mBy{W*`/u

  界面方面的,人机交互优化,用户心理测试;

;I"cHKI}q/\"H051Testing软件测试网%a,`8y*AxF

  bug方面的测试;51Testing软件测试网.Y0Q _!u}P

_!|O m!s0  稳定性方面的测试;

.l7WZAS;Pb&D051Testing软件测试网 nL5X"jTA3T

  安装方面的测试;

7i B+[?.P;t d0

M;JOC _0  运行支撑环境的测试;51Testing软件测试网*vFe"Zc6s

qsNl e0  硬件需求方面的测试;51Testing软件测试网e3zQ'St

O&s1v5V0PPec x2Z0  ......

2A8WzX5tZ c G0

!QVe@)x%Dl A0   需测试面之广,不是一个人两个人能完成的。(我不是专业做测试的,恕我列举不出那么多测试项。)更重要的是,这些测试项,是每一个高质量的软件都需要经 过的测试。只有完善的高密度的测试才能产出高质量的软件。(当然也得软件通过才行。只测不改不如不测,废话)所以软件测试的门道也很多的。(又是废话)51Testing软件测试网4K4H%A | s

51Testing软件测试网Z,IuUO@
51Testing软件测试网;YZs3dWlR F$o6zz n

  软件和硬件同样是要做测试的,为什么硬件质量要相对可靠,软件则是另外一幅景象?51Testing软件测试网#l/R'A7VA6]?3Q

51Testing软件测试网s/`,@MPd

  原因有很多。

Cqj%NDZ m051Testing软件测试网/\z0sf ^b

  第零个:也是最根本的问题,程序是程序员写出来的,程序员是人,人是会犯错的,所以程序会出错是在所难免的,软件出错也在所难免。(这里,问大家一个问题,上帝会不会犯错?我认为会,要不然他制造的我们怎么老会犯错??还是他老人家根本就不存在?)

!QE;BSus1k-O051Testing软件测试网7rS&o!_ gM'b1v

  第一个:最大的问题:软件工程是一个沙滩上造大楼的艺术活。任何一个方面的缺陷或bug都会对软件造成很严重的影响。51Testing软件测试网#~8zBkI#x4J

51Testing软件测试网%[3NlLVHp.s eX

  第二个:待测试的项目太多了,相对而言,硬件需要测试的项目则要相对的简单的很多,只要测试几项,最多几十项。而软件则需要几百项,甚至上千项。项目越大,软件越复杂,待测试的项目就越多,而且往往随着复杂度和功能度的增长会成倍数增长。51Testing软件测试网t sU&CUB4d

u,h&t!q6vd0  第三个:软件工程多数属于项目型,软件项目具有一次性的特点。这样一来对应的软件测试项也是一次性的。测试不可重用,测试成本要相对高很多。51Testing软件测试网,ZGb3O[5}r[(R

@n3|Q)mF0  第四个:软件测试工具可重用的太少,只有对那种泛化的。比如sql注入等非功能性的bug有专门的测试工具,而这种测试工具往往也只能专门的针对一直或几种bug进行测试。相比较而言,硬件测试则要专业和可重用的多。

;v C6f+}"@^ G051Testing软件测试网0zA'a V Vsv6rM"f

  第五个:通用软件测试工具太难写。因为软件是需要计算机语言来写的,现在的计算机语言太多,对软件测试工具的发展来说是一个很大的挑战,不可能一个测试工具能完成所有语言的测试。

7^"_;r*o)m)x&E0

J%U&ycb0  第六个:通用软件测试工具难与软件进行对接。虽然有.JUnit,NUnit这种单元测试工具还需要软件工程师自己进行测试逻辑的编写。(我就不爱写测试逻辑,太麻烦!而且往往测试逻辑跟不上需求的变更。)51Testing软件测试网;M#HLnF-aQ^

j/o@!P{#^LT:AA0  第七个:软件需求不稳定,测试也就不稳定。重新测试的几率太大,人不是机器,不适合做重复劳动,而且有厌烦情绪,导致测试项不稳定。(经常会出 现这种情况,我问:测试好了没?弟兄们异口同声:“测好了,没问题!”我心里那个无语啊:“还不如不问,没问题就是最大的问题!!我那帮兄弟根本就没测, 当然这是态度问题,但是也是有原因的,谁想老是做重复劳动??反正我也不想测!”)51Testing软件测试网^hmD)eq)@+U.i

1j!w^kF9T)}K&FF0  第八个:还没想到,这个没想到不是我没想到,是测试人员没想到,还有这样的或那样的bug。因为人不是神嘛,是神也不一定,根据推理他老人家不是也有缺陷嘛?他老人家肯定也没想到我们也会犯错。

D Ulr%pwL%j1{0

"R}6o6kR Y0  第九个:真的暂时没想到。(想到后留个言哦,可惜凑不齐十个了)

#ga9^c'x/d0

!M%]0pb/k o0  在需求稳定的情况下,根据以上九个问题,我们总结出来一个小结论:

[U@@ ]051Testing软件测试网0P Sj1|!{ wz

  软件工程的质量难在测试。而现在的软件测试只有3种形式的测试:一种是软件开发人员自己写的单元测试;二是软件公司请的专业做测试的测试员,目 前国内多数是女孩子做做手动测试;三是外包给专业软件测试公司。也有一些软件测试工具比如,针对sql注入的扫描工具,防止死链接的扫描工具。51Testing软件测试网&N#o3y#o,F+|+DWM0LA


TAG:

 

评分:0

我来说两句

Open Toolbar