一、什么是软件测试以及软件测试的意义
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、质量模型:质量模型提供测试设计的**不同角度视野**和验证方向(可以通过质量模型来考虑测试的方面)
* 功能性:功能满足需求(即需求文档)
* 性能效率:性能满足实际需求(比如一家公司有2万人要用软件,需要测试软件是否能保证配置和网络能支撑2万人使用)
* 兼容性:软件能与主流硬件和软件兼容
* 易用性:便于使用
* 可靠性:性能和功能应用可靠
* 信息安全:信息在传输或者储存过程中的安全
* 可维护性:便于维护
* 可移植性:具备迁移和便捷性
总结:针对任何的软件或者硬件测试要覆盖的方面
重点:功能性,性能效率,兼容性,易用性,信息安全
2、测试模型
W模型:以开发为主导的一个v和以测试为主导的另一个v构成
优点:
1、测试伴随整个产品开发周期,测试对象不仅是程序还有需求、设计文档
2、测试介入较早,及早发现问题,降低修复成本
缺点:
实施起来比较复杂,难度大,对于需求阶段和设计阶段的测试设计要求较高
总结:软件开发流程、软件测试在开发流程中的作用