背景
最近,有几个朋友向我了解关于软件测试的工作内容及前景,由于自己才两年多的工作经验,也没给出特别实质性的建议,于是就想总结一篇软件测试方面的知识,希望能帮到一些朋友,最主要的还是对自己两年来的工作进行一个总结!也算是给自己一个交代吧^.^
软件测试概念
首先,我们要了解软件测试的概念,百度百科给出的定义:
软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。
《软件测试的艺术》给出的定义:
所谓软件测试,就是一个过程或一系列过程。用来确认计算机代码完成了其应该完成的功能,不执行其不该有的操作。
通俗点说,软件测试是为了发现错误执行程序的过程,验证软件做了其应该做的事情,没有做其不应该做的事情。举例说明:
比如说老板要你造一双筷子,你却造了一个勺子,这叫需求不符;于是你连夜赶工造了一双竹筷子给老板,老板开开心心拿着新筷子去吃饭,谁想新筷子的分叉刺破了老板的嘴巴,然后你被劈头盖脸臭骂了一顿,这叫缺陷;最后你吸取教训又重造了一双世界上最完美的筷子,老板对此赞不绝口,不计前嫌给你升职加薪,从此走向人生巅峰。
软件缺陷的定义
从上面的栗子又引申出另一个概念:软件缺陷(Bug)。《软件测试》一书中这样定义的:
- 软件没有实现产品的说明书所描述的功能。
- 软件实现了产品说明书描述不应有的功能。
- 软件执行了产品说明书没讲的操作
- 软件没有实现产品说明书没讲但应该实现的功能。
- 从软件测试员的角度来看,软件难以理解、不易使用、运行缓慢,或者最终用户认为不对。
其实,说到底软件测试的本质就是为了发现更多的缺陷,从而提升软件质量,但是我们要知道穷尽测试是不可能的。
测试与开发各阶段的关系
需求分析→验收测试
概要设计→系统测试
详细设计→集成测试
编码开发→单元测试