以下内容,也是从众多测试基础理论中摘选的。选取的原则:面试中常被问到的,项目开发测试交流中常被提到的。如果你刚入门测试,这些基础理论你必须了解,至少它能够帮忙你和研发同事交流畅通。当然软件测试理论众多,小伙伴有时间还是要多拓展自己的知识面。

软件的概念:
计算机系统中与硬件相互依存的一部分,它是包括程序、数据及其相关文档的完整集合。

软件测试的定义:
它是软件工程中的一个非常重要的环节,是开发项目整体的一部分。是有计划有组织的,是伴随软件工程的诞生而诞生的,软件测试不是万能的,不可能发现全部缺陷,软件测试是有局限性的。

软件质量的定义:
软件质量就是 “软件与明确的、隐含的定义的需求相一致的程度”。
明确的需求:软件符合明确叙述的功能和性能需求、文档中明确描述的开发标准;
隐含的需求:所有专业开发的软件都应具有的隐含特征的程度,比如:符合行业标准;

软件的生命周期:
需求分析 —》可行性分析 —》概要设计 —》详细设计 —》编码实现 —》调试和测试 —》软件验收与应用 —》维护升级 —》废弃

软件测试目的:
测试的目的不仅仅是为了发现软件缺陷与错误,而且也是对软件质量进行度量和评估,以提高软件的质量。

软件测试阶段:

单元测试:
单元测试是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如 C 语言中单元指一个函数,Java 里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。
总的来说,单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。


集成测试:
集成测试也叫组装测试或联合测试。在单元测试的基础上,将所有模块按照设计要求(如根据结构图〕组装成为子系统或系统,进行集成测试。
事实表明,一些模块虽然能够单独地工作,但并不能保证连接起来也能正常的工作。程序在某些局部反映不出来的问题,在全局上很可能暴露出来,影响功能的实现。


系统测试:
系统测试是将已经确认的软件、计算机硬件、外设、网络等其他元素结合在一起,进行信息系统的各种组装测试和确认测试。系统测试是针对整个产品系统进行的测试,目的是验证系统是否满足了需求规格的定义,找出与需求规格不符或与之矛盾的地方,从而提出更加完善的方案
系统测试发现问题之后要经过调试找出错误原因和位置,然后进行改正。是基于系统整体需求说明书的黑盒类测试,应覆盖系统所有联合的部件。对象不仅仅包括需测试的软件,还要包含软件所依赖的硬件、外设甚至包括某些数据、某些支持软件及其接口等。


验收测试:
验收测试是一项确定产品是否能够满足合同或用户所规定需求的测试。这是管理性和防御性控制,主要确认软件是否按合同要求进行工作,既是否满足软件需求规格说明书中的要求。

软件测试流程:
需求分析 —》需求评审 —》设计测试用例 —》用例评审 —》测试计划 —》搭建测试环境 —》测试执行 —》缺陷修复 —》回归测试 —》测试报告 —》跟进上线

软件测试模型:

瀑布流:
瀑布模型是最正宗最规范的流程。计划—>需求分析—>设计—>编码—>测试—>运行维护

特点:
1、软件开发的各项活动严格按照线性方式进行;
2、当前活动接受上一项活动的工作结果;
3、当前活动的工作结果需要进行验证;
缺点:
1、由于开发模型是线性的,增加了开发的风险;
2、早期的错误可能要等到开发后期的阶段才能发现;


V 字形:

V 模型是基于瀑布模型的。
缺点:就是将测试放在整个开发的最后阶段,没有让测试今早介入开发,没有在需求阶段就进入测试。 测试与开发串行。


W 字型(双 V):

W 模型是由两个 V 模型组成,一个是开发阶段,一个测试阶段。可以看出,在 W 模型中开发和测试是并行的关系 。
特点:测试与开发并行,让测试今早介入开发环节,使测试今早发现问题今早解决。
缺点:虽然开发与测试并行了,但是在整个开发阶段,仍然是串行的,上一阶段未完全完成无法进入下一阶段,不支持敏捷模式的开发。


敏捷(Scrum):
特点:
1、短周期开发、增量开发;
2、由程序员和测试人员编写的自动化测试来监控开发进度;
3、通过口头沟通、测试和源代码来交流系统的结构和意图;
4、编写代码之前先写测试代码,也叫做测试先行;
缺点:
1、团队的组建较难,人员素质要求较高;
2、对测试员要求完全掌握各种脚本语言编程,能执行单元测试、自动化测试;

BS/CS 架构:
C/S 是 Client/Server 或客户/服务器模式。如:微信,QQ 等
B/S 是 Brower/Server 的缩写。如:慕课网、知乎等

软件测试分类:

按照开发阶段划分:单元测试、集成测试、系统测试、验收测试

按照测试实施组织划分:开发方测试、用户测试 (Alpha 测试,Beta 测试)、第三方测试

按照测试技术划分:白盒测试、灰盒测试、黑盒测试

TDD(测试驱动开发)
测试试驱动开发的基本思想就是在开发功能代码之前,先编写测试用例。也就是说在明确要开发某个功能后,首先思考如何对这个功能进行测试,并完成测试代码的编写,然后编写相关的代码满足这些测试用例。然后循环进行添加其他功能,直到完成全部功能的开发。

下一期预告:
测试基础理论(二)之 缺陷(BUG)


↙↙↙阅读原文可查看相关链接,并与作者交流