01软件研发流程
1.软件产品
软件产品是指向用户提供的计算机软件、信息系统或设备中嵌入的软件或在提供计算机信息系统集成、应用服务等技术服务时提供的计算机软件。
2.软件工程
软件工程,英文名SoftwareEngineering,是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。
“软件工程是开发、运行、维护和修复软件的系统方法。”这个定义相当概括,它主要强调软件工程是系统方法而不是某种神秘的个人技巧。
3.软件开发过程
软件产品从最初构思到公开发行的过程,称为软件开发过程。
开发过程有各种不同的方法,没有所谓最好的模式。
最常见的4种:
瀑布模式
螺旋模式
快速原型
4.软件生命周期
5.软件研发流程
6.软件测试流程
需求分析
测试计划
测试方案
测试用例
测试执行
测试报告
7.软件项目成员
- 项目经理
驱动整个项目的运转,负责制定计划,安排人力,管理进度,协调团队,进行重大决策。
- 架构师 / 系统工程师
技术专家,经验丰富,负责整个系统的体系架构的设计以及关键模块的设计。
- 程序员 / 开发人员
设计、编写软件,并修复软件中的缺陷。
- 测试工程师
负责找出软件产品存在的问题并报告。
- 资料工程师
负责编写软件产品附带的文件和联机帮助文档
- 配置管理员
负责管理程序员写的代码和资料工程师写的文档资料,并组合成一个软件包
- QA
质量监管人员
02软件测试基础
1.软件测试概念以及目的(掌握)
测试的目的不仅仅是为了发现软件缺陷与错误,而且也是对软件质量进行度量和评估,以提高软件的质量。
测试是程序的执行过程,目的在于发现错误;
一个好的测试用例在于能发现至今未发现的错误;
一个成功的测试是发现了至今未发现的错误的测试。
2.软件测试质量(了解)
软件质量就是“软件与明确的和隐含的定义的需求相一致的程度”
明确的需求指:软件符合明确叙述的功能和性能需求、文档中明确描述的开发标准;隐含的需求指:所有专业开发的软件都应具有的隐含特征的程度。
3.软件测试原则(掌握)
基于测试是为了寻找软件的错误与缺陷,评估与提高软件质量,因此我们提出了这样的一组测试原则,如下所示。
1) 所有的软件测试都应追溯到用户需求。
2) 应当把“尽早地和不断地进行软件测试”作为软件测试者的座右铭。
3) 完全测试是不可能的,测试需要终止。
4) 测试无法显示软件潜在的缺陷。
5) 充分注意测试中的群集现象。
6) 程序员应避免检查自己的程序。
7) 尽量避免测试的随意性
4.软件测试对象(掌握)
1) 根据软件的定义,软件包括程序、数据、文档,所以软件测试并不仅仅是程序测试。软件测试贯穿于整个软件生命周期中。
2) 由于在整个软件生命周期中,各阶段有不同的测试对象,形成了不同开发阶段的不同类型的测试。需求分析、概要设计、详细设计以及程序编码等各阶段产生的文档,包括需求规格说明、概要设计规格说明、详细设计规格说明以及源程序,都应作为“软件测试”的对象。
5.软件测试分类(掌握)
1) 按照开发阶段划分软件测试:单元测试、集成测试、系统测试、验收测试
2) 按照测试实施组织划分软件测试:开发方测试、用户测试(Beta测试)、第三方测试
3) 按照测试技术划分:白盒测试、黑盒测试、灰盒测试。
软件测试方法和技术的分类与软件开发过程相关联,它贯穿了整个软件生命周期。
6.软件测试风险(掌握)
软件测试中的软件风险分析是根据预测软件将出现的风险,制定软件测试计划并排列优先等级,风险分析是对软件中潜在的问题进行识别、估计和评价的过程。
风险也包括进度风险、质量风险、人员风险、变更风险、成本风险等
7.软件测试工程师(了解)
具备的技能:
1) 计算机相关知识,能够熟练使用常用的管理工具
2) 开发语言:C,Java,JavaScript,VBScript,Shell。
3) 数据库:SQLServer, Oracle,MySQL等数据库知识
4) 操作系统,如Windows 2003以及2008,UNIX,Linux,MAC,Solaris等
5) 网络基本知识,能够独立完成测试环境的搭建。
6) 软件基础知识:软件工程,软件生命周期,测试理论和测试方式有较深的理解。
7) 软件测试技术,方法,流程,测试文档编写,能独立设计和执行测试用例,提交完整的缺陷报告单, 编写测试报告。
8) 测试工具,能够熟练使用至少一种功能/性能自动化测试工具。
9) 质量管理知识,如CMM,CMMI以及ISO 9001等。
职责:
1) 配置测试环境
2) 执行软件测试
3) 报告软件缺陷
4) 更新缺陷报告内容
5) 验证修正的缺陷
6) 报告测试状态
7) 完成测试相关的其它任务
03软件测试类型
1. 软件测试分类
按阶段划分
1) 单元测试:是指对软件中的最小可测试单元进行检查和验证。
2) 集成测试:在单元测试的基础上,将所有模块按照设计要求(如根据结构图〕组装成为子系统或系统,进行集成测试。
3) 系统测试:将已经确认的软件、计算机硬件、外设、网络等其他元素结合在一起,进行信息系统的各种组装测试和确认测试.
4) 验收测试(а、ß测试):
a.它是一项确定产品是否能够满足合同或用户所规定需求的测试。这是管理性和防御性控制
b.主要确认软件是否按合同要求进行工作,既是否满足软件需求规格说明书中的要求。
按是否运行程序划分
1) 静态测试:不运行被测试的软件,而只是静态的检查代码、界面或者文档
2) 动态测试:实际运行被测试的软件,输入相应的测试数据,检查世界的输出结果是否和预期结果相一致的过程。
按是否查看代码划分
黑盒测试:把软件看成一个黑盒子,不管内部逻辑和内部特性,只依据规格说明书检查程序的功能是否符合功能说明
白盒测试:又称为结构测试。着重于程序内部结构和算法,不关心功能和性能指标。
灰盒测试:介于白盒和黑盒测试之间,基于程序运行时刻的外部表现同时又结合程序内部逻辑结构来设计用例,执行程序并采集程序路径执行信息和外部用户接口结果的测试技术。
其他划分
回归测试:对软件的新版本测试时,重复执行上一个版本测试时使用的测试用例。防止出现“以前应用没有的问题现在出问题了”。
冒烟测试(BVT测试(BuildVerification Test )):冒烟测试的对象是每一个新编译需要正式测试的版本,目的是确认软件基本功能正常,可以进行后续的正式测试工作。<