测试入门
1.软件产品的特点
是一种逻辑产品,与物质产品有很大的区别。
软件产品的生产主要是研制,生产成本主要在开发和研制,开发研制完成后,通过复制就产生了大量软件产品。
软件产品不会用坏,不存在磨损,消耗。
生产主要是脑力劳动,还末完全摆脱手工开发方式,大部分产品是”定做”的。
2. 什么是软件工程?
系统化、规范化、可管理、将软件开发变成一项工程。
3.为什么需要软件工程?
软件开发进度难以预测
软件开发成本难以控制
用户对产品功能难以满足
软件产品质量无法保证
软件产品难以维护
软件缺少适当的文档资料
4.软件的开发模型
(1)瀑布模型:瀑布模型是一种线形的、顺序的软件开发模型,主要分为6个阶段:可行性计划研究→需求分析→软件设计→编码→测试→运行维护
(2) V模型:V 模型从左到右,描述了基本的开发过程和测试行为,明确地标明了测试工程中存在的不同级别以及测试阶段和开发过程各阶段的对应关系
(3)快速原型模型: 快速原型模型类似于建造房子,确定客户对房子的需求之后快速地搭建一个房子模型
**(4)迭代模型:**迭代模型又称为增量模型或演化模型,它将一个完整的软件拆分成不同的组件,然后逐个组件地开发测试,整个开发工作被组织为一系列短期、简单的小项目,称为一系列迭代,每一个迭代都需要经过需求分析→软件设计→编码→测试的过程,
**(5 )螺旋模型:**最大的特点是引入了其他模型所忽略的风险分析,如果项目不能排除重大风险,就停止项目从而减小损失。这种模型比较适合开发复杂的大型软件。
有4个象限:制订计划、风险分析、实施工程、客户评估
4.软件开发生命周期
软件和其他产品一样,都有一个从“出生”到“消亡”的过程,这个过程称为软件的生命周期
可将软件生命周期划分为6个阶段:问题定义 需求分析 软件设计
软件开发 软件测试 软件维护 淘汰
5.软件测试定义:
测试是为了让程序能够按照预期运行而建立的一种信心。
测试是为发现错误而执行的一个程序或者系统的过程。
6.什么是软件测试?软件测试是做什么的?
软件测试是使用人工或者自动手段运行或测定某个系统的过程,检验系统是否满足规定的需求,并找出预期结果与实际结果的差异
7.测试的对象:
根据软件的定义,软件包括程序、文档,所以软件测试并不仅仅是程序测试。软件测试贯穿于整个软件生命周期中。
由于在整个软件生命周期中,各阶段有不同的测试对象,形成了不同开发阶段的不同类型的测试。
8.软件测试的目的:
(1)预防缺陷,减少产品的风险
(2)发现被测对象与用户需求之间的差异(俗称找BUG)
(3)通过测试活动发现并解决缺陷,增加人们对被测对象的质量信心
(4)通过测试活动,发现被测对象的质量信息,为决策者提供数据依据
9.软测测试所遵循的原则
- 测试应该基于客户的需求
- 测试要尽早进行
- 穷尽测试是不可能的
- 杀虫剂的悖论
- 没有缺陷的软件是不存在的
10.软件的质量特点
功能性 可靠性 易用性 可维护
11.那些原因影响软件的质量
需求模糊
开发过程不规范
软件开发人员问题
软件缺乏质量控制管理
12.软件测试的分类
按照测试阶段分
1.单元测试:单元测试是软件开发的第一步测试,目的是为了验证软件单元是否符合软件需求与设计。单元测试大多是开发人员进行的自测。
2.冒烟测试:冒烟测试最初是从电路板测试得来的,当电路板做好以后,首先会加电测试,如果电路板没有冒烟再进行其他测试,否则就必须重新设计后再次测试。
后来这种测试理念被引入到软件测试中。在软件测试中,冒烟测试是指软件构建版本建立后,对系统的基本功能进行简单的测试,这种测试重点验证的是程序的主要功能,而不会对具体功能进行深入测试。
如果测试未通过,需要返回给开发人员进行修正;如果测试通过则再进行其他测试。因此,冒烟测试是对新构建版本软件进行的最基本测试。
3.集成测试:集成测试是冒烟测试之后进行的测试,它是将已经测试过的软件单元组合在一起测试它们之间的接口,用于验证软件是否满足设计需求。
4.系统测试:系统测试是将经过测试的软件在实际环境中运行,并与其他系统的成分(如数据库、硬件和操作人员等)组合在一起进行的测试。
5.验收测试:验收测试主要是对软件产品说明进行验证,逐行逐字地按照说明书的描述对软件产品进行测试,确保其符合客户的各项要求。
按照测试技术分类
1.黑盒测试:
不需要关注被测对象的内部结构,仅从用户需求的角度去考虑,是否满足显性或者隐性的需求
2.白盒测试:
白盒测试又叫透明盒测试,它是指测试人员了解软件程序的逻辑结构、路径与运行过程,在测试时,按照程序的执行路径得出结果。白盒测试就是把软件(程序)当作一个透明的盒子,测试人员清楚地知道从输入到输出的每一步过程,如
按照软件质量分类
功能测试:
功能测试就是测试软件的功能是否满足客户的需求,包括准确性、易用性、适合性、互操作性等。
性能测试:
性能测试就是测试软件的性能是否满足客户的需求,性能测试包括负载测试、压力测试、兼容性测试、可移植性测试和健壮性测试。
按照自动化程度来分类:
1.手工测试:
手工测试是测试人员一条一条地执行代码完成测试工作。手工测试比较耗时费力,而且测试人员如果是在疲惫状态下,则很难保证测试的效果。
2.自动化测试:
自动化测试是借助脚本、自动化测试工具等完成相应的测试工作,它也需要人工的参与,但是它可以将要执行的测试代码或流程写成脚本,执行脚本完成整个测试工作。
按照测试类型分类
① 界面类测试
界面类测试是验证软件界面是否符合客户需求,包括界面布局是否美观、按钮是否齐全等。
② 安全性测试
安全性测试是测试软件在没有授权的内部或外部用户的攻击或恶意破坏时如何进行处理,是否能保证软件与数据的安全。
③ 文档测试
文档测试以需求分析、软件设计、用户手册、安装手册为主,主要验证文档说明与实际软件之间是否存在差异。
其他分类
①α测试
α测试是指对软件最初版本进行测试。软件最初版本一般不对外发布,在上线之前,由开发人员和测试人员或者用户协助进行测试。测试人员记录使用过程中出现的错误与问题整个测试过程是可控的。
② β测试
β测试是指对上线之后的软件版本进行测试,此时软件已上线发布,但发布的版本中可能会存在较轻微的Bug,由用户在使用过程中发现错误与问题并进行记录,然后反馈给开发人员进行修复。
③ 回归测试
当测试人员发现缺陷以后,会将缺陷提交给开发人员,开发人员对程序进行修改,修改之后,测试人员会对修改后的程序重新进行测试,确认原有的缺陷已经消除并且没有引入新的缺陷,这个重新测试的过程就叫作回归测试。回归测试是软件测试工作中非常重要的一部分,软件开发的各个阶段都会进行多次回归测试。
④ 随机测试
随机测试是没有测试用例、检查列表、脚本或指令的测试,它主要是根据测试人员的经验对软件进行功能和性能抽查。随机测试是根据测试用例说明书执行测试用例的重要补充手段,是保证测试覆盖完整性的有效方式和过程。
13.软件测试的流程
1.测试需求分析阶段
2.测试计划阶段
3.测试设计阶段
4.测试执行阶段
5.测试评估阶段
14.测试用例包括哪些:
用例编号、用例名称、测试背景、测试数据、操作步骤、预期结果、实际结果、优先级、重要级、编写人、执行人、备注等。
15.缺陷报告:
缺陷编号、缺陷描述、严重度、缺陷状态、发现人、发现时间、修复时间、所属版本、所属模块、修复的优先级、详细描述、下一步处理人等。
16.测试报告
包括项目背景、需求分析、测试时间、测试环境、评审记录、测试范围、测试用例、功能实现清单、缺陷统计、测试统计(包含资源、执行、问题统计)、测试总结是否通过、测试的风险。