一名软件测试工程师,需要掌握的理论基础知识
1、软件的定义
软件是计算机程序、程序所用的数据及有关文档资料的集合。也就是:软件=程序+数据+文档。
· 在运行中能提供所希望的功能和性能的指令集(即程序)。
· 使程序能够正确运行的数据。
· 描述程序研制过程和方法使用的文档。
2、软件的生命周期
一个软件产品或软件系统也需要经历孕育、诞生、成长、成熟、衰亡等阶段,称为软件生命周期,包括以下方面:
① 问题定义:也就是由系统分析员或产品人员与客户进行沟通交流,初步了解客户需要实现的功能和解决的问题,然后准备一份关于“系统目标与大概内容的说明”,提交用户查看和确认。
② 可行性研究:从两方面分析研究,一方面是把待开发的系统的目标以及范围等用明确的语言文字描述出来,另一方面是从经济、技术、法律等多方面进行可行性分析。
③ 需求分析:弄清楚用户对软件系统的全部需求,编写需求规格说明书和初步的用户手册,提交确认。
④ 开发阶段:分为三个阶段组成:
· 设计
· 实现也就是根据选定的程序设计语言完成编码
· 测试
⑤ 维护:包括四个方面:
· 改正性维护:在软件交付使用后,由于开发和测试不能完全保证软件的质量是百分比无误的,就会有隐藏的错误被带到运行阶段,在某些特殊场景或操作环境时就会暴露。
· 适应性维护:是为了适应环境的变化而修改软件的活动。
· 完善性维护:根据用户在使用过程中提出的一些意见修改而进行的维护活动。
· 预防性维护:是为了进一步改善软件系统的可维护性和可靠性,并为以后的改进奠定基础。
因此,软件的生命周期可总结为:需求—设计—编码—测试—维护—升级—废弃。
3、软件测试定义
描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。
换句话说,软件测试是一种实际输出与预期输出之间的审核或者比较过程。
软件测试的经典定义是:
在规定的条件下对软件进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。
4、软件测试目的
测试的目的不仅仅是为了发现软件缺陷与错误,而且也是对软件质量进行度量和评估,以提高软件的质量。
① 测试是为了发现程序中的错误而执行程序的过程。
② 好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案。
③ 成功的测试是发现了至今为止尚未发现的错误的测试。
④ 测试并不仅仅是为了找出错误。通过分析错误产生的原因和错误的发生趋势;可以帮助项目管理者发现当前软件开发过程中的缺陷,以便及时改进。
5、软件测试原则
① 所有的软件测试都应追溯到用户需求。
② 应当把“尽早地和不断地进行软件测试”作为软件测试者的座右铭。
③ 完全测试是不可能的,测试需要终止。
④ 测试无法显示软件潜在的缺陷。
⑤ 充分注意测试中的群集现象。
⑥ 程序员应避免检查自己的程序。
⑦ 尽量避免测试的随意性。
6、软件测试对象
① 根据软件的定义,软件包括程序、数据、文档,所以软件测试并不仅仅是程序测试。软件测试贯穿于整个软件生命周期中。
② 由于在整个软件生命周期中,各阶段有不同的测试对象,形成了不同开发阶段的不同类型的测试。需求分析、概要设计、详细设计以及程序编码等各阶段产生的文档,包括需求规格说明、概要设计规格说明、详细设计规格说明以及源程序,都应作为“软件测试”的对象。
7、软件测试风险
① 软件测试中的软件风险分析是根据预测软件将出现的风险,制定软件测试计划并排列优先等级,风险分析是对软件中潜在的问题进行识别、估计和评价的过程。
② 风险也包括进度风险、质量风险、人员风险、变更风险、成本风险等。
进度风险:需求发生比较大的变更或者其他的调整,缩短了测试时间,从而影响进度;
质量风险:测试质量目标不清晰,需求文档或其他文档存在描述不清晰的地方;
人员风险:测试人员的变更,相关技术支持人员的变更;
变更风险:需求变更导致测试用例变更,测试用例维护成本增加,实时更新时存在误差;
成本风险:维护的成本,如服务器、数据库等。
除了这些风险,还有测试用例风险、缺陷风险、测试环境风险等。