从事软件测试这么多年来,对于看似简单的概念自己老觉得含糊说不清楚,不同的书不同的资料对概念给出不同的定义,不过慢慢的反而觉得其实是正常的,因为软件测试是一门新兴的行业,处于不断的发展中,那么不同时期对测试的定义必然是有差别的,再则结合不同的开发模型,不同的公司属性对测试的要求也是不一样的,所以关于测试也难有统一的概念,而且定义不重要,重要的是结合某个时期、某种模型、某个公司来理解测试,呵呵说白了就是软件测试还不成熟嘛。
1.软件测试是什么
较早的定义:软件测试是一个过程——为了发现错误而执行程序的过程。或者说,软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误的过程。
而随着大家对软件质量认识度的提高,以及越晚发现缺陷后果越严重的深刻感受,现在都有倡导测试尽早参与项目,尽早发现需求、设计上当问题,而不是等到有可运行的程序;甚至有些还提倡测试驱动开发。
2.为什么要进行软件测试或者说测试的目标是什么?
一是对质量或可接受性做出判断:通过测试给出所测系统总体质量现状,譬如满足工件的出入口标准,达到发布要求,遗留缺陷或者风险
二是发现问题,而且尽可能早一些,并确保其得以修复:目的是要发现问题,就需要使用不同的方法类型进行测试,尽可能早的发现问题,就是尽快的参与测试,并提高测试的效率和有效性,使严重的问题尽早被发现;确保缺陷得以修复,需要说明的是不是所有的缺陷都可以被修复的,那么我们要在提交缺陷单的时候自己首先已经有一个尺度,哪些是必须解决的,哪些是有时间可以解决的,那些是可以推迟到下个版本,哪些是无法解决但是要提出来的,跟自己的团队磨合久了,测试人员心理这个尺度应该是很清楚的,再则就是注意与开发之间的沟通技巧和专业度,特别在国内团队,随意性比较大,某个缺陷的解决很可能是因为开发心情好或者跟开发交情好,或者开发觉得你够专业。
三是改进测试过程或者软件开发过程:通过测试,对一些测试数据的度量和报告,对团队合作上一些问题的发现和总结,可以反过来为测试过程和开发过程的改进提供依据,从而促进团队朝着更积极有效的方向发展。
做到以最少的人力、物力、时间找出软件潜在的错误和缺陷。
3.测试人员的核心工作是什么
我觉得毫无疑问是用例设计。
设计用例,首先要确定是黑盒还是白盒用例,不管黑盒和白盒,都有静态和动态的测试,对于静态测试需要给出测试标准,对于动态测试则根据不同的用例设计方法:等价类、边界值、因果(黑盒)和路径、语句覆盖(白盒)。
测试还分不同的类型或者阶段:单元、集成、系统、验收、维护,每个阶段的用例设计有何侧重。
最关键的是,完全测试程序是不可能的:输入量太大,输出结果太多,软件实现途径太多、软件说明书没有客观标准等,而且目前在国内对测试时间都是压缩的,别说充足的时间,就是基本的测试时间都很难得到保证,因此在互联网测试圈开始提倡叫有损测试,允许部分不重要的bug留给用户来发现和反馈。回到原题,对与用例的设计,如何把无边无际的可能减少到可以控制,以及如何针对风险制定出明知抉择,去粗存精,找到合适的测试量,这是一个既需要借助技术、掌握技巧和积累经验,然后逐步提高的过程。
加载中,请稍候......