软件测试基础其一

176 阅读5分钟

一、什么是软件测试以及软件测试的意义

1.软件测试(Software Testing),其经典定义或是标准定义:在规定的条件下对程序进行操作,以发现程序错误。通俗来讲,就是通过“人工”或“自动化”的相关技术手段验证功能是否满足需求

2.软件测试可以解放研发人员和售后服务人员。软件测试不仅可以降低软件质量风险,使研发人员能够更专心解决程序的算法和效率问题,同时,经过严格检验的完整产品也减轻了售后服务人员的工作量。

二、软件测试的目的是什么?

1、验证软件需求和功能是否得到了完整的实现

2、尽可能多的发现软件中的bug

3、验证软件是否可以发布

4、对软件的质量、性能、效率做出合理的评估

5、预防用户使用可能出现的问题

6、预防下个版本可能出现的问题

三、软件测试的流程是什么?

步骤一:需求分析

步骤二:测试计划

步骤三:设计用例

步骤四:执行用例

步骤五:缺陷管理

步骤六:测试报告

六大步骤的详细说明如下:

1、需求分析 有一个至关重要的前置条件————对业务的学习,也就是安安静静把需求文档阅读几遍,记录下自己对文档中不明确的地方,然后参与需求评审会议,以确定各部门对需求的理解一致,最后各部门再站在各自的角度对需求进行查漏补缺。

2、制定测试计划 总结为三句话: * 测什么:测试目标及范围(依据需求文档) * 谁来测:人员以及进度的安排 * 怎么测:测试策略,测试工具,风险评估与规避措施要有一个制定

3、设计用例 设计验证项目是否符合需求的操作文档,在设计完成后也会参加评审

4、执行用例 即执行测试,项目模块开发完成后开始执行用例文档实施测试,需要先搭建相应的测试环境,执行冒烟测试,冒烟测试通过才可开始测试

5、缺陷管理 即在对项目进行测试中发现的bug进行管理,将发现的bug提交到bug管理平台,由开发人员进行验证,最后则是编写缺陷报告

6、测试报告 在测试结束阶段最后需要编写的报告,主要包含测试目标-测试过程-缺陷统计-缺陷分析-测试总结

四、用于测试的技能有哪些?

功能测试:主要验证程序的功能是否满足需求
自动化测试:使用**代码**或者**工具**代替人工验证项目功能
接口测试:针对模块与模块或系统与系统之间数据请求地址进行测试
性能测试:模拟**多人**使用软件,查找服务器缺陷

五、测试常用的分类

* 冒烟测试(在前面执行用例提到的,冒烟测试通过是测试的前提):大规模执行测试之前,针对程序主功能进行验证,保证程序具备可测性

* 按阶段分:软件开发,从无到有
	1、单元测试:针对程序源代码进行测试(国内归属开发自测,比如junit)
	2、集成测试:又称**接口测试**,主要针对模块与模块或系统之间的接口进行验证
	3、系统测试:针对软件全面进行验证(功能、兼容、文档)
	4、验收测试:使用内测、公测来实现
		* 内测:公司内部来测试
		* 公测:让玩家来测试

* 按代码可见度划分:
	1、黑盒测试:又称功能测试(完全看不见源代码,只能针对功
	能进行测试)
	2、灰盒测试:又称接口测试(看得见部分代码)
	3、白盒测试:又称单元测试(针对程序源代码进行测试)

扩展-总结:
	1、系统测试和黑盒测试重点核心是**功能测试**
	2、集成测试和灰盒测试又称**接口测试**
	3、单元测试和白盒测试是对**代码**进行测试
	4、自动化测试归属**功能测试**
	5、性能测试、安全测试归属**专项测试**

六、测试模型(这里分享俩个模型,别问为啥,因为就学了俩)

1、质量模型:质量模型提供测试设计的**不同角度视野**和验证方向(可以通过质量模型来考虑测试的方面)	

image.png

        * 功能性:功能满足需求(即需求文档)
	* 性能效率:性能满足实际需求(比如一家公司有2万人要用软件,需要测试软件是否能保证配置和网络能支撑2万人使用)
	* 兼容性:软件能与主流硬件和软件兼容
	* 易用性:便于使用
	* 可靠性:性能和功能应用可靠
	* 信息安全:信息在传输或者储存过程中的安全
	* 可维护性:便于维护
	* 可移植性:具备迁移和便捷性
	总结:针对任何的软件或者硬件测试要覆盖的方面
	重点:功能性,性能效率,兼容性,易用性,信息安全

2、测试模型
    
	W模型:以开发为主导的一个v和以测试为主导的另一个v构成
		

image.png

	优点:
	     1、测试伴随整个产品开发周期,测试对象不仅是程序还有需求、设计文档
	     2、测试介入较早,及早发现问题,降低修复成本
	缺点:
	     实施起来比较复杂,难度大,对于需求阶段和设计阶段的测试设计要求较高
	总结:软件开发流程、软件测试在开发流程中的作用