测试基本理论知识
1、软件缺陷的定义
所有不满足需求或超出需求的都是缺陷
没有不存在缺陷的软件,只有尚未发现的缺陷
- 1、软件未实现产品说明书所定义的功能
- 2、软件出现了产品说明书指明了不应该出现的功能
- 3、软件出现了产品说明说未提到的功能
- 4、软件未实现虽未明确提及但是应该实现的功能
- 5、软件难以理解、不宜使用、运行缓慢,最终用户认为不合格
2、测试的作用
测试是为了发现错误而执行一个程序或者系统的过程
- 1、测试是为了证明程序有错,而不是证明程序没错
- 2、一个好的测试用例在于它能发现以前从没有发现的错误
- 3、一个成功的测试是为了发现以前未发现的错误的测试
3、软件测试的定义
软件 = 程序+数据+文档
-
IEEE定义的测试
- 在规定的条件下运行系统或者构件的过程:观察和记录结果,并且对系统或者国检的某些方面做出评价
- 分析软件项目的过程:检测现有的状况和所需状况之间的不同,并评估软件项目的特性
-
广义的软件测试
- 软件测试是对软件形成过程中的所有工作产品进行的测试,而不仅仅是对程序进行的测试
- 验证:通过检查和提供客观的证据来证实指定的需求是否满足
- 确认:通过检查和提过客观的证据来证实特定目的的功能或应用是否已经实现
-
软件测试的目的
- 以最少的人力、物力和时间找出软件中潜在的各种错误和缺陷,通过修正各种错误和缺陷保障软件质量,避免软件发布后由于潜在的软件错误和缺陷带了的商业风险。同事利用测试过程中得到的测试结果和测试信息,作为后续项目开发和测试过程改进的重要输入,避免在将来的项目开发和测试中重复相同的错误,采用更加高效的测试管理手段,提高软件测试效率金和软件的质量。
- 软件测试是为了尽可能的早的找出软件产品中隐藏测缺陷,并确保其得以修复
-
测试和调试的区别
- 测试是从已知的条件开始,使用预先定义的过程,并且有预知的结果;调试是从未知的条件开始,结束的过程可能不可预计
- 测试可以计划,可以预先指定测试用例和过程,工作进度可以度量;描述调试的过程或者持续时间相对困难
- 测试的对象包括软件开发过程中的文档、数据以及代码;调试对象来说一般只是代码
4、软件测试的方法
4.1 按照开发技术划分
单元测试又称模块测试,是软件设计的最小单位,程序模块进行正确性检验的测试工作。其目的在于检验每个程序单元能否正确实现程序说明中的功能、性能、接口和设计约束等要求,发现个模块内部可能存在的各种错误。单元测试需要从程序的内部出发设计测试用例,多个模块可以平行的独立的进行单元测试。
集成测试也称为组装测试,实在单元测试的基础上,将所有的程序模块进行有序的、递增的测试。集成测试是检验程序单元或部件的接口关系,逐步集成为符合概要设计要去的程序部件或整个系统。
确认测试又称为有效性测试。是在模拟的环境下验证软件的所有功能和性能及其它特性是否与用户预期要求一致,通过确认测试之后的软件,才具备进入系统测试的资质。
系统测试是在真实的系统运行的环境下,检查完整的程序系统能否和系统正确配置(包括硬件、网络系统和软件、支持平台等)、连接,并最终满足用户的所有需求
是软件产品检验的最后一个环节。按照项目任务书或者合同、供收双方约定的验收依据文档进行的对整个系统的测试与评审,确定是否接受或者拒收系统。
4.2 按照测试技术划分
通过软件外部表现来发现其缺陷和错误。黑盒测试是把测试对象看成一个黑盒子,完全不考虑程序内部结构和处理过程。黑盒测试是在程序界面出进行的测试,它只是检查样序是否按照需求规格说明书的规定实现。
通过对程序的内部结构的分析、检测来寻找问题。白盒测试可以把程序看成装在一个透明的白盒子里,也就是清楚了解程序的结构和处理过程,检查是否所有的结构以及路径都是正确的,检查软件内部动作是否按照设计说明的规定正常进行。白盒测试又称结构测试。
介于百合测试与黑盒测试之间的测试。灰盒测试关注对于输出的正确性;同事也关注内部结构表现,但是这种关注不像白盒测试那样详细、完整,知识通过一些表征性的现象、事件、标志来判断内部运行状态。
灰盒测试结合了白盒测试和黑盒测试的要素。它考虑了用户端、特定的系统知识和操作系统环境,它在系统组件的协同性环境中评价应用软件的设计。
4.3 按照代码运行划分
指不实际运行被测对象,而知识静态的检查程序代码、界面或文档中可能存在的错误
- 代码测试:主要测试代码是否符合想要的标准和规范
- 界面测试:主要测试软件的实际界面与需求中的说明是否相符
- 文档测试:主要测试用户手册和需求说明是否真正符合用户实际需求
- 指实际运行测试对象,输入想对应的测试数据,检查实际输出结果和预期结果是否相符的过程,所以我们判断一个测试属于动态测试还是静态测试,唯一的标准就是看程序是否运行。
4.4 按照软件特性划分
-
性能测试(是黑盒测试的一方面,他检查软件是否符合用户的需求)
- 逻辑功能测试死
- 界面测试
- 易用性测试
- 安装测试
- 兼容性测试
- …
-
功能测试
- 功能的另一个指标,主要关注软件的某一功能在指定的时间、空间条件下,是否能正常使用
- 软件的性能包括很多方面主要有时间性能和空间性能两方面
4.5 其他测试
- 回归测试
- 指对软件新版本测试时,重复执行之前某一个版本所有的重要测试用例
- 目的:验证之前版本产生的缺陷已经完全被修复;确认修复这些缺陷没有产生新的缺陷。
- 冒烟测试
- 如果冒烟测试没有通过,后续测试不予展开
- 指对一个新版本进行系统大规模测试之前。先验证一下软件的基本功能是否实现,是否具备可测性.也叫可测性测试。
- 随机测试
- 也称随意性测试,是指测试人员基于经验和直觉的探索性测试,其目的是模拟用户的一些真实操作,并发现一些边缘错误。