详谈软件工程之软件测试与维护
详谈软件工程之软件测试与维护
- 一:软件测试
- 1、软件测试的基本思想(原则):
- 2:软件测试的分类
- (1)**动态测试**:
- (2)静态测试:
- 3、测试用例设计
- 黑盒测试法:
- 白盒测试法:
- 4、测试阶段
- 5、面向对象的测试
- 6、软件调试
- (1)软件调试的方法:
- (2)软件调试与软件测试的区别:
- 二、系统运行与软件维护
- 1、系统转换计划-遗留系统演化策略
- 1、淘汰策略
- 2.、继承策略
- 3、改造策略
- 4.、集成策略
- 2、系统转换计划-新旧系统的转换策略
- 3、系统转换计划-数据转换与迁移
- 4、软件(系统)的维护
题外话:本博客讲的是软件工程中的最后一个环节:软件测试与维护。主要从两方面进行说明,即软件测试方法和软件调试
一:软件测试
软件测试是软件质量保证的主要手段之一,也是在将软件交付给客户之前所必须完成的步骤。软件测试可以验证软件是否满足软件需求规格说明和软件设计所规定的功能、性能及软件质量特性的要求,为软件质量的评价提供依据。软件测试只是软件质量保证的手段之一,不能单凭测试来保证软件质量。
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) ...
- 软件工程与软件测试基础知识_这是我在软件工程工作九个月中学到的知识
软件工程与软件测试基础知识 I've been working for about nine months at Dexter as a software developer. I wrote a b ...
- 【软件工程】软件测试目标定义 黑盒测试、白盒测试
记录 软件工程北大-软件测试技术课件 文章目录 著名的软件错误案例研究 1.迪斯尼的狮子王 2.美国航天局火星基地登陆,1999 3.爱国者导弹防御系统,1991 4.千年虫,大约1974 软件测试的 ...
- 从软件工程到软件测试
基础知识 软件 概念:软件是计算机系统中,与硬件相互依存的另一部分,包括程序,数据及相关文档的完整集合 程序:按事先设计的功能和性能要求执行的指令序列或者代码结构 数据:使得程序能正常操纵信息的数据结 ...
- [架构之路-138]-《软考-系统架构设计师》-软件工程-8-测试、维护
前言: 需求(需求规格) => 软件系统建模(概要设计) => 软件系统设计(详细设计) 第三章 软件工程 第5节 测试与评审 5.1 概述 软件测试(英语:Software Testin ...
- 软件测试与维护实验报告,软件测试技术与实践实验报告
软件测试技术与实践实验报告 (11页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.90 积分 北华大学计算机科学技术学院实 验 报 告课程名称 软件测 ...
- 软件工程导论—软件测试
文章目录 1. 软件测试基础 1.1. 软件测试的目的和准则 1.2. 软件测试方法和步骤 1.3. 测试内容 1.4. 测试阶段的信息流 2. 单元测试 3. 集成测试 3.1. 集成测试概述 3. ...
- 2.软件工程与软件测试理论
1.软件生命周期 2.软件工程的研究领域 3.软件开发模式 线性模型 渐进式模型 变换模型 线性模型 一般在软件需求完全确定的情况下,会采用线性模型,最具代表性的是"瀑布模型".瀑 ...
- 软件工程——第8章维护知识点整理
本专栏是博主个人笔记,主要目的是利用碎片化的时间来记忆软工知识点,特此声明! 文章目录 1.维护阶段的基本任务是? 2.大型软件的维护成本大概是开发成本的几倍? 3.什么是软件维护? 4.软件维护分为 ...
最新文章
- Anaconda3-5.0.1 输入ipython 出现 ImportError: cannot import name ‘create_prompt_application‘
- Linux ROS与嵌入式的串口通信
- Tomcat漏洞说明与安全加固
- 下载r包IlluminaHumanMethylation450kanno.ilmn12.hg19
- 百度开源的分布式唯一ID生成器UidGenerator,解决了时钟回拨问题
- 网页无障碍php,【译】开发无障碍的Web组件
- pfSense多拨网速叠加教程
- 计算机桌面文件删除不掉是怎么了,电脑删除不了文件怎么办?教你几种好的处理方法,一学就会...
- java程序往微信群里发消息_通过java程序,给微信发送消息
- 使用opennlp进行词性标注
- MySql生日闰月处理
- T10 微信公众号如何获得清晰头像?
- Linux下修改环境变量
- 微信小程序开发实例:猜数字小游戏
- 网狐荣耀斗地主等15合1(美女图)
- 源代码静态检测分析技术浅析
- Fatal error in launcher: Unable to create process using
- 【原创纯手打】如何用VUE在拖拽小框中同步更换壁纸(附代码)
- iOS中使用Fastlane实现自动化打包和发布
- 观看宝剑嫂的公益视频后的一些感想整理下来