一、软件工程的过程管理
1、软件过程
软件过程是软件生命周期中的一系列相关活动,即用于开发和维护软件及相关产品的一系列活动。软件产品的质量取决于软件过程,具有良好软件过程的组织能够开发出高质量的软件产品。
2、能力成熟度模型集成(Capability Maturity Model Integration,CMMI)
(1)能力成熟度模型集成融合了多种模型,形成了组织范围内过程改进的单一集成模型,其主要目的是消除不同模型之间的不一致和重复,降低基于模型进行改进的成本;
(2)CMMI继承了CMM的阶段表示法和EIA/IS731的连续式表示法。这两种表示方法各有优缺点,均采用统一的24个过程域,它们在逻辑上是等价的,对同一个组织采用两种模型分别进行 CMMI 评估,得到的结论应该是相同的。
3、阶段式模型
阶段式模型基本沿袭CMM模型框架,仍保持4个成熟等级,但关键过程域做了一些调整和扩充。当组织通过了某一等级过程域中的全部过程,即意味着该组织的成熟度达到了这一等级。利用阶段式模型对组织进行成熟度度量,概念清晰、易于理解、便于操作。
4、连续式模型
与阶段式模型相比,连续式模型没有与组织成熟度相关的几个阶段。连续式模型将24个过程域按照功能划分为过程管理、项目管理、工程和支持四个过程组。
二、软件测试
1、基本概念
软件测试是发现软件错误(缺陷)的主要手段,是软件交付前必须完成的重要步骤。根据国家标准《计算机软件测试规范(GB/T15532-2008)》,软件测试的目的是验证软件是否满足软件开发合同或项目开发计划、系统/子系统设计文档、SRS、软件设计说明和软件产品说明等规定的软件质量要求。同时,GB/T15532-2008还规定了测试用例设计原则和测试用例要素。通过测试,发现软件缺陷,为软件产品的质量测量和评价提供依据;
2、软件测试的方法:静态测试、动态测试(白盒测试和黑盒测试)
(1)静态测试:静态测试是指被测试程序不在机器上运行,而采用人工检测和计算机辅助静态分析的手段对程序进行检测。静态测试包括对文档的静态测试和对代码的静态测试。对文档的静态测试主要以检查单的形式进行,而对代码的静态测试一般采用桌前检查(Desk Checking)、代码走查和代码审查。经验表明,使用这种方法能够有效地发现 30%~70%的逻辑设计和编码错误;
(2)动态测试:动态测试是指在计算机上实际运行程序进行软件测试,一般采用白盒测试和黑盒测试方法;
- 白盒测试也称为结构测试,主要用于软件单元测试中。它的主要思想是,将程序看作是一个透明的白盒,测试人员完全清楚程序的结构和处理算法,按照程序内部逻辑结构设计测试用例,检测程序中的主要执行通路是否都能按预定要求正确工作。另外,使用静态测试的方法也可以实现白盒测试;
- 黑盒测试也称为功能测试,主要用于集成测试、确认测试和系统测试中。黑盒测试将程序看作是一个不透明的黑盒,完全不考虑(或不了解)程序的内部结构和处理算法,而只检查程序功能是否能按照 SRS 的要求正常使用,程序是否能适当地接收输入数据并产生正确的输出信息,程序运行过程中能否保持外部信息(例如,文件和数据库等)的完整性等。黑盒测试根据SRS所规定的功能来设计测试用例,一般包括等价类划分、边界值分析、判定表、因果图、状态图、随机测试、猜错法和正交试验法等。
3、软件测试的类型
根据国家标准GB/T15532-2008,软件测试可分为单元测试、集成测试、确认测试、系统测试、配置项测试和回归测试等类型;
4、面向对象的测试
由于OO系统具有封装性、继承性与多态性三个明显特征,与传统信息系统相比,测试目标是一致的,测试策略主要体现在测试的焦点从模块移向了类、测试的角度扩大到了分析和设计模型两个方面的不同;
5、软件调试
(1)常用的软件调试策略有蛮力法、回溯法和原因排除法三类;
(2)软件调试与软件测试的区别:
- 测试的目的是找出存在的错误,而调试的目的是定位错误并修改程序以修正错误;
- 调试是测试之后的活动,测试和调试在目标、方法和思路上都有所不同;
- 测试从一个已知的条件开始,使用预先定义的过程,有预知的结果,调试从一个未知的条件开始,结束的过程不可预计;
- 测试过程可以事先设计,进度可以事先确定,调试不能描述过程或持续时间。
三、软件测试管理
软件测试的管理包括过程管理、配置管理和评审工作。