软件测试理论基础1
一、测试概念:
1.1 什么是需求:
需求就是用户的期望或者满足合同,规约,标准的条件或权限。
需求(细化用户需求,转化为实际需求)→实现(开发+测试)→上线
软件需求:由用户需求的细化和具体实现
用户需求:一般把用户的期望粗略地概括
1.2 软件测试和软件调试的区别:
1.2.1 目的:
软件测试:验证软件是否实现应实现的需求。(用户需求)
软件调试:开发人员验证是否实现了自己想实现的功能。
1.2.2 角色:
软件测试:开发人员+测试人员
软件调试:开发人员
1.2.3 阶段
软件测试:贯穿了整个开发阶段
软件调试:只在开发阶段
1.3 一个优秀的测试人员应具备的素质:
- 综合能力:沟通能力,编程能力,学习能力,文字描述能力(可以清楚的描述bug)。
- 自动化开发能力:(开发自动化脚本及工具的能力)
- 编写测试用例的能力。
- 探索性思维,发散思维。
- 兴趣。
- 责任感和压力。
1.4 需求
需求就是实现用户的期望或者满足文档(合同,标准,规范)所需要的条件或者权限。
需求包含两个方面,用户需求(粗劣的概括)和软件需求(用户需求的细化和具体实现)。
所以需要软件需求将用户需求规范实现,把用户需求变成一个具体的可实现的过程文档。需求是软件测试的依据。要验证需求的正确性和可操作性,并且要细化需求,从需求中提炼一个个的测试项。
1.5 测试用例
测试用例就是向被测试系统发出的一组集合。包含测试环境,测试数据,测试步骤,预期结果(重要性,优先级,操作方式,标题)
1.5.1 测试用例的优点:
衡量需求的覆盖率,复用性,借鉴意义,可用于回归测试,防止遗漏测试需求。
1.6 BUG
当且仅当,软件需求存在且合理时,软件功能和软件需求不相符合,就称为软件错误。如果软件规格说明书不存在,用户需求存在且合理,如果软件功能和用户需求不相符,那就是软件错误。
1.7 软件开发的生命周期
需求分析——计划——设计——编码——测试——运行维护
1.8 软件测试和软件调试
软件测试
软件开发人员要确保做出来的程序实现了它想实现的功能
软件测试是测试人员确保实现了它应该实现的功能
二、五种模型
2.1瀑布模型:
特点:阶段性较强,每个阶段比较独立,比较看重前期的需求和后期的测试。
优点:项目庞大,前期目标不准确,对于风险较伟大的项目抗风险能力很强。
缺点:测试在编码后才开始介入, 导致前期的问题到后期才被发现,容易产生漏洞。
2.2 螺旋模型:
适合于项目庞大,前期风险大,项目不是很明确。
特点:强调每一个迭代的测试质量和风险评估,人力物力投入的风险较大
2.3 增量模型:
按照周期开展相应的功能模块
2.4 迭代模型:
先在前一阶段开发这个项目的几个基础功能模块,然后在第二个阶段,开展进一步的功能模块。
优点:抗风险能力强。
2.5 敏捷开发模型:
特点:轻文档,轻流程,重目标,重产出(拥抱变化)用户可以在开发阶段提出新的需求变化。
scrum流程
角色:
PO: product owner
把需求转换成说明书
SM: scrum master
项目经理,管理整个团队,负责敏捷开发流程,负责敏捷流程顺利实施的各种会议。
ST: scrum team
各种技能的人开展会议,包含开发,测试。
流程:
产品发布会议-迭代计划会议-每日站会-产品演示会议-项目回顾会议。
2.6 V模型:
特点:每一个阶段独立性很强
左边每个阶段是右边测试阶段的依据,左边的是世界二段和右边的测试过程一一对应。
缺点:前期的错误后期才会发现,会错过错误的最佳纠正的时间
2.7 W模型:
特点:在开发的同时进行测试,独立性很强,测试从一考试就介入例如,保证了前期的问题可以尽早发现和纠正,测试和开发并行
缺点:每个阶段都是串行的过程,每个阶段紧密相连,不支持敏捷开发。