详谈软件工程之软件测试与维护

题外话:本博客讲的是软件工程中的最后一个环节:软件测试与维护。主要从两方面进行说明,即软件测试方法和软件调试

一:软件测试

软件测试是软件质量保证的主要手段之一,也是在将软件交付给客户之前所必须完成的步骤。软件测试可以验证软件是否满足软件需求规格说明和软件设计所规定的功能、性能及软件质量特性的要求,为软件质量的评价提供依据。软件测试只是软件质量保证的手段之一,不能单凭测试来保证软件质量。

1、软件测试的基本思想(原则):

  • 宜早不宜迟、要尽早不断的进行测试;
  • 程序员要避免测试自己设计的程序;
  • 既要选择正确有效的数据、也要选择不合理、无效的数据;
  • 修改后应该要进行回归测试;
  • 尚未发现的错误数量与该程序已发现错误数成正比;

2:软件测试的分类

软件测试主要分为两类:动态测试静态测试
在这里插入图片描述

(1)动态测试

动态测试指通过运行程序发现错误,分为黑盒测试法、白盒测试法和灰盒测试法等。

a、黑盒测试法:测试人员完全不考虑程序的内部结构和处理过程,只在软件的接口处进行测试,依据需求规格说明书,检查程序是否满足功能要求。因此,黑盒测试又称为功能测试或数据驱动测试。常用的黑盒测试用例的设计方法有 等价类划分、边界值分析、错误推测和因果图等。
b、白盒测试法:和黑盒测试法相反,测试人员需要了解程序的内部结构和处理过程,以检查处理过程的细节为基础,检验内部控制结构和数据结构是否有错,实际的运行状态与预期的状态是否一致等。常用的白盒测试用例设计方法有基本路径测试、循环覆盖测试及逻辑覆盖测试等。
c、灰盒测试:灰盒测试走的是中庸之道,即有些地方用的是白盒测试,有的地方用的是黑盒测试。

(2)静态测试:

静态测试指的是人工执行检测的手段对程序进行测试。主要分为桌前检查、代码审查、代码走查。

a、桌前检查:由程序员自己检查自己的代码。
b、代码审查:代码审查是由若干程序员和测试员组成一个会审小组,通过阅读、讨论和争议,对程序进行静态分析的过程。
c、代码走查:代码走查与代码审查基本相同。唯一不同的是代码走查是人工的在脑海里面执行一遍代码,看执行后的结果与预想中的结果是否相同。

3、测试用例设计

在这里插入图片描述

黑盒测试法:

等价类划分:把程序的输入域划分成若干部分,然后从每个部分中选取少数有代表性的数据作为测试用例,每一类代表性数据在测试中的作用等价于这一类中的其他值。划分等价类时,首先把数目极多的输入分成若干个等价类。所谓等价类就是某个输入域的集合,对于一个等价类中的输入值来说,它们揭示程序中错误的作用是等效的。

边界值分析:是一种补充等价类划分的测试用例设计技术,它不选择等价类的任意元素,而选择等价类边界的测试用例。实践证明,为检验边界附近的处理而专门设计测试用例,常常可以取得良好的测试效果。

错误推测法:基于经验和直觉推测程序中所有可能存在的各种错误,有针对性地设计测试用例的方法。基本思想是列举出程序中所有可能的错误和容易发生错误的特殊情况,再根据它们选择测试用例。

因果图法:从自然语言书写的程序规格说明的描述中找出因(输入条件)和果(输出或程序状态的改变),通过因果图转换为判定表。

白盒测试法:

逻辑覆盖:以程序内部逻辑为基础的测试技术,常用的有语句覆盖、判定覆盖、条件覆盖、条件判定覆盖、修正的条件判断覆盖、条件组合覆盖、点覆盖、边覆盖和路径覆盖等。

循环覆盖:是指覆盖程序中所有的循环,包括单循环及嵌套循环。

基本路径法:在程序控制流程图的基础上,通过分析控制结构的环路复杂性导出基本路径集合,然后设计测试用例,保证这些路径都至少通过一次。

语句覆盖:每条语句都执行过。是最弱的覆盖。

路径覆盖:每个路径都执行过。是最强的覆盖。

4、测试阶段

在这里插入图片描述
测试阶段分为单元测试、集成测试、确认测试、系统测试。

单元测试:单元测试又称模块测试,通常是由开发人员对自己编写的代码依据软件规格说明书进行测试。一般使用白盒测试法。

集成测试:集成测试也成为组装测试,它是由多个模块集合在一起,联合测试模块之间的协调性。分为一次性组装和增量式组装。一次性组装指的是一次性把所有的模块组合在一起测试;增量式组装指的是先组装一部分,测试通过后再来叠加另外一部分的模块。目前来说,我们一般采用的是增量式组装进行测试,这样可以减少些错误溜出去。

确认测试:确认测试一般是在功能完成之后,客户要验收的时候进行的。主要分为内部确认测试、Alpha测试、Beta测试、验收测试。

系统测试:系统测试主要的是进行些非功能性的测试, 比如压力测试、可靠性测试、可用性测试、可维护性测试等等。
在这里插入图片描述

5、面向对象的测试

在这里插入图片描述
括号内的为每层对应的测试阶段。

6、软件调试

(1)软件调试的方法:
  • 蛮力法:主要思想是“通过计算机找错”,低效,耗时;
  • 回溯法:从出错处人工沿控制流程往回追踪,直至发现出错的根源。复杂程序由于回溯路径多,难以实施;
  • 原因排除法:主要思想是演绎和归纳 用二分法实现
(2)软件调试与软件测试的区别:
  • 测试的目的是找出存在的错误,而调试的目的是定位错误并修改程序以修正错误;
  • 调试是测试之后的活动,测试和调试在目标、方法和思路上都有所不同;
  • 测试从一个已知的条件开始,使用预先定义的过程,有预知的结果;调试从一个未知的
  • 条件开始 结束的过程不可预计;
  • 测试过程可以事先设计,进度可以事先确定;调试不能描述过程或持续时间。

二、系统运行与软件维护

1、系统转换计划-遗留系统演化策略

在这里插入图片描述

1、淘汰策略

遗留系统的技术含量较低,且具有较低的业务价值。对遗留系统的完全淘汰是企业资源的根本浪费,系统分析师应该善于“变废为宝”,通过对遗留系统功能的理解和借鉴,可以帮助新系统的设计低新系统开发的风险。

2.、继承策略

遗留系统的技术含量较低,已经满足企业运作的功能或性能要求,但具有较高的商业价值;目前企业的业务尚紧密依赖该系统。对这种遗留系统的演化策略为继承。在开发新系统, 需要完全兼容遗留系统的功能模型和数据模型。为了保证业务的连续性,新老系统必须并行运行一段时间,再逐渐切换到新系统上运行。

3、改造策略

遗留系统具有较高的业务价值,基本上能够满足企业业务运作和决策支持的需要。这种系统可能建成的时间还很短,对这种遗留系统的演化策略为改造。改造包括系统功能的增强和数据模型的改造两个方面。系统功能的增强是指在原有系统的基础上增加新的应用要求,对遗留系统本身不做改变;数据模型的改造是指将遗留系统的旧的数据模型向新的数据模型的转化。

4.、集成策略

遗留系统的技术含量较高,但其业务价值较低,可能只完成某个部门(或子公司)的业务管理。这种系统在各自的局部领域里工作良好,但对于整个企业来说,存在多个这样的系统。不同的系统基于不同的平台、不同的数据模型,形成了一个个信息孤岛,对这种遗留系统的演化策略为集成。

2、系统转换计划-新旧系统的转换策略

在这里插入图片描述
直接转换策略:停用旧系统、启用新系统
并行转换策略:旧系统和新系统同时运行,等新系统没问题后再关闭旧系统;
分段转换策略:分段转换策略有很多种,比如分地区转换、分功能转换等。说的是在某些地区或者某些功能用旧系统,另外的用新系统,等新系统没问题后再关闭旧系统;

3、系统转换计划-数据转换与迁移

在这里插入图片描述

4、软件(系统)的维护

正确性维护:指改正在系统开发阶段已发生而系统测试阶段尚未发现的错误。
适应性维护:指使应用软件适应信息技术变化和管理需求变化而进行的修改。企业的外部市场环境和管理需求的不断变化也使得各级管理人员不断提出新的信息需求。
完善性维护:扩充功能和改善性能而进行的修改。对已有的软件系统增加一些在系统分析和设计阶段中没有规定的功能与性能特征。
预防性维护:为了改进应用软件的可靠性和可维护性,为了适应未来的软硬件环境的变化,应主动增加预防性的新的功能,以使用系统适应各类变化而不被淘汰。如将专用报表功能改成通用报表生成功能,以适应将来报表格式的变化。

例题:软件的维护并不只是修正错误。为了满足用户提出的增加新功能、修改现有功能以及一般性的改进要求和建议,需要进行();它是软件维护工作的主要部分;软件测试不可能揭露旧系统中所有存在的错误,所以这些程序在使用过程中还可能发生错误,诊断和更些错误的过程称为();为了改进软件未来的可维护性或可靠性,或者为了给未来的改进提供更好的基础而对软件进行修改 这类活动称为()。
A. 完善性维护 B. 适应性维护 C. 预防性维护 D. 改正性维护
A. 完善性维护 B. 适应性维护 C. 预防性维护 D. 改正性维护
A. 完善性维护 B. 适应性维护 C. 预防性维护 D. 改正性维护
答案解析:A、D、C。

更多资讯请扫描以下二维码或关注微信公号“愿为最亮星”,为您提供更深层次的解答。

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

华星详谈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值