题注:很多人都认为 Microsoft 是一家软件开发公司,而事实上,我们是一家软件测试公司。在最后产品要发布的时候,此产品所有相关部门都必须签字,而测试人员则具有绝对的否决权 —— Bil Gates
什么是软件测试?
就是使用人工或自动手段来运行或测试某个系统,并发现问题,解决问题的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。
软件测试的目的:
测试是为了发现系统中的错误而执行程序的过程;好的测试方案在于尽可能的发现迄今为止尚未发现的错误;成功的测试是发现了至今为止尚未发现错误的测试。
测试并不仅仅是为了找出错误,通过分析错误产生的原因和错误的发生趋势,可以帮助项目管理者发现当前软件开发过程中的缺陷,以便及时改进。
这种分析也能帮助测试人员设计出有针对性的测试方法,改善测试的效率和有效性;没有发现错误的测试也是有价值的,完整的测试是评定软件质量的一种方法。
软件测试的原则
所有的软件测试都应追溯到需求;应当把“尽早地和不断地进行软件测试”作为软件测试人的座右铭;完全测试是不可能的,测试需要终止;测试无法显示系统所有潜在的缺陷。
软件测试对象
软件测试不等于程序测试,软件测试贯穿于软件定义和开发期间。需求分析,概要设计,详细设计,以及程序编码等各个阶段所得到的文档,包括需求规格说明,概要设计规格说明,详细设计规格说明以及源程序,都是软件测试的对象。
主要可分为程序(应用软件整体的功能使用流程)、数据(主要针对数据库存放信息以及数据的展示)、文档(需求文档的逻辑、表达是否准确)、过程(用户体验和交互)、硬件(配置是否达标)和网络(流量需求)测试。
想以最少的时间和人力,系统地找出软件中潜在的各种错误和缺陷。如果我们成功地实施了测试,我们就能够发现软件中的错误。
测试的附带收获是,它能够证明软件的功能和性能与需求说明相符合。
实施测试收集到的测试结果数据为可靠性分析提供了依据。
测试不能表明软件中不存在的错误,它只能说明软件中存在错误。
优秀的软件测试人员应该具备的素质
软件测试员的一个基本素质是:打破砂锅问到底
1、探索精神:软件测试员不会害怕进入陌生环境
2、故障排除能手:软件测试员善于发现问题的症结,喜欢猜谜
3、不懈努力:软件测试员总是在不停尝试。他们可能会碰到转瞬即逝或者难以重建的软件缺陷;他们不会心存侥幸,而是尽一切可能去寻找。
4、创造性:想出富有创意甚至超常的手段来寻找软件缺陷
5、追求完美:他们力求完美,但是知道某些无法企及时,不去苛求,而是尽力接近目标
6、判断准确:软件测试员要决定测试内容、测试时间,以及看到的问题是否算作真正的缺陷
7、老练稳重:软件测试员不害怕坏消息
8、说服力:软件测试员要善于表达观点,表明软件缺陷为何必须修复,并通过实际演示力陈述观点。
软件测试关键词:
单元测试、集成测试、系统测试、验收测试、白盒测试、黑盒测试、灰盒测试
测试阶段
单元测试、集成测试、系统测试、验收测试。是“从小到大”、“由内至外”、“循序渐进”的测试过程,体现了“分而治之”的思想。
单元测试的粒度最小,一般由开发小组采用白盒方式来测试,主要测试单元是否符合“设计”。
集成测试界于单元测试和系统测试之间,起到“桥梁作用”,一般由开发小组采用白盒加黑盒的方式来测试,既要验证“设计”又要验证“需求”。
系统测试的粒度最大,一般由独立测试小组采用黑盒方式来测试,主要测试系统是否符合“需求规格说明书”。
验收测试与系统测试非常相似,主要区别是测试人员不同,验收测试由用户执行。
软件测试的分类
从是否关系软件内部结构的角度划分
1、白盒测试 --- 测试源代码,主要在系统内部结构中测试
2、黑盒测试 --- 主要在应用端和服务器端,不用接触系统内部结构
3、灰盒测试 --- 以上两种的结合
从是否执行程序的角度划分
1、静态测试 --- 不用执行程序,通过人工或程序分析来证明软件的正确性
2、动态测试 --- 通过执行程序做分析,测试程序的动态行为,以证实软件是否存在问题