第六章 编码与测试

6.1编码

1.程序设计语言
1)机器语言
2)汇编语言
3)高级语言2.选择程序设计语言的标准
1)从用户方面考虑
2)从程序员方面考虑
3)从软件的可移植性考虑
4)从应用领域考虑
Java主要应用领域是企业应用开发;
C语言的应用领域很广,
从底层的嵌入式系统、工业控制、智能仪表、编译器、硬件驱动,
到高层的行业软件后台服务器、中间件等。3.编码风格
1)程序文档化
a.标识符命名规范
b.适当的注释2)数据说明
a.说明次序规范化
b.变量排列有序化
c.注释说明复杂的数据结构3)语句结构
a.一行只写一条语句;
b.程序等编写首先考虑清晰,不要为了提高效率而使语句变得过分复杂
c.要模块化,模块间耦合能够清晰可见,利用信息隐蔽,确保每个模块的独立性
d.尽量不用“否定”条件的语句
e.尽量不用循环嵌套和条件嵌套
f.最好利用括号使表达式的运算清晰可见4)输入/输出

6.2测试概述

1.测试的错误掼蛋
很多人往往认为测试是为了证明程序是正确的,即测试能发现程序中
所有的错误。要通过测试发现程序中的所有错误,就要穷举出所有可
能的输入数据。事实上这是不可能的,即使一个规模不大的程序,
所有可能的输入数据也十分庞大,受时间、人力和资源的限制,
不可能穷举出所有可能的输入数据。2.测试的目的
测试阶段的根本目的是尽可能多地发现程序中的错误,
最终提高目标系统的质量。但是提高系统的质量不能依赖于测试,
系统的高质量是分析和设计出来的,而不是靠测试修补出来的3.测试用例
测试用例,通常指一项特定的产品进行测屙屎的描述,体现测试方案、
方法、技术和策略。内容包括测试目标、测试环境、输入数据、测试步骤、
预期结果、测试脚本等,并形成文档。不同类别的软件,测试用例是不同的。4.测试准则
(1)所有的测试都是根据客户需求进行的
(2)制定测试计划应在测试开始工作之前
(3)80%的错误可能来自于20%的代码
(4)测试应从“小规模”开始,逐步转向“大规模
(5)穷举所有测试用例是不可能的
(6)为了达到最有效的测试,应由独立的第三方来承担测试任务
(7)在设计测试用例时,应包括正确地输入条件和不正确的输入条件
(8)严格按照测试计划,排除测试的随意性
(9)妥善保管测试计划、测试用例、出错统计和最终分析报告,为维护提供方便5.测试方法和技术
1)静态测试技术
不运行被测程序,仅通过分析或检查源程序等语法、结构、过程、接口等
来检查程序等正确性,这种测试称为静态测试。静态测试包括桌前检查、
代码会审及步行检查
a.桌前检查:程序员之间相互交换程序检查
b.代码会审:由一组人通过阅读、讨论和争议,对程序进行静态分析
c.步行检查:预先准备测试数据,让与会者充当“计算机”检查程序的状态。
有时这样做可能比真正运行程序发现更多的错误2)动态测试技术6.测试步骤
1)单元测试
2)集成测试
3)确认测试
4)系统测试
a.功能测试
b.压力测试
c.性能测试
d.容量测试
e.用户界面测试
f.兼容性测试

6.3单元测试

1.单元测试的人物
1)模块接口测试
2)局部数据结构完整性测试
3)模块执行路径测试
4)模块内部错误处理测试2.单元测试方法
1)人工测试
2)计算机测试

6.5集成测试

1.自顶向下集成
2.自底向上集成
3.两种集成策略的比较
自顶向下集成方法的优点在于能尽早地对软件系统的功能进行检验,
而且能较早地发现上层模块的接口错误。缺点是当测试上层模块时,
下层模块需要使用桩模块替代,桩模块不能反映真实情况、
重要数据不能及时回送到上层模块,因此测试并不充分,
并且开发桩模块需要一定的开销自底向上集成的优点是不需要桩模块,测试用例的设计也相对简单,
单缺点是系统最后一个模块加入时才具有整体形象。
它与自顶向下集成方法的优点恰好相反。因此,在测试软件系统时,
应根据软件系统的特点和工程的进度,选用适当的测试策略,
有时混合测月更为有效,上层模块采用自顶向下集成方法,
下层模块采用自底向上集成方法。

6.5白盒测试技术

白盒测试是一种测试用例设计方法,把软件看成一个透明的盒子。
按照程序内部的逻辑结构测试程序,
测试人员完全知道程序等内部结构和处理过程。
白盒测试的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。1.逻辑覆盖
人们不可能做到穷举所有的测试用例覆盖程序中的每一条路径。
因此测试用例应尽可能多地覆盖程序的路径,已成为测试人员的共识。
为了衡量覆盖程度,下面给出一些覆盖标准。1)语句覆盖
语句覆盖是指选择足够多道测试用例,将被测程序中每个语句至少执行一次
白盒测试是根据程序等流程图来设计测试用例的。2)判定覆盖
判定覆盖又称分支覆盖,含义是:设计足够多测试用例,
使得被测程序中的每个判定的“真”“假”分支至少被执行一次
。只要满足了判定覆盖标准就一定满足语句覆盖标准,反之不然。3)条件覆盖
设计足够多道测试用例,使得被测程序中的每个判定表达式中
的每个逻辑条件的可能值至少都被满足一次。
而判定覆盖只关心整个判定表达式的值。
因此条件覆盖通常要比判定覆盖强。4)判定条件覆盖
条件覆盖不一定满足判定覆盖,
判定覆盖也不一定满足条件覆盖。因此出现了一种覆盖标准,
既满足条件覆盖,又满足判定覆盖。它的含义是:设计足够多道测试用例,
使得被测程序中的每个判定表达式的判定结果(真/假)至少满足一次,
同时判定表达式的每个逻辑值也至少被满足一次。5)条件组合覆盖
条件组合覆盖是更强的逻辑覆盖标准,
它的含义是:设计足够多道测试用例,
使得被测程序中的每个判定表达式中的条件的所有可能组合都至少被满足一次。6)路径覆盖
路径覆盖的含义是:设计足够多的测试用例
,使得被测程序中的每条路至少被执行一次。2.基本路径测试
基本路径测试是在程序流图的基础是,通过分析程序等环境复杂度,
导出基本可执行路径集合,从而设计测试用例的方法。
设计出的测试 用例要保证被测程序中的每个执行语句至少执行一次,
而且每个条件在执行时都将分别取真假两种值。使用基本路径测试技术设计测试用例的步骤如下:
(1)根据过程设计结果画出对应的流程图
(2)计算流图的环形复杂度
(3)确定独立路径的基本集合
(4)设计执行基本集合中的每一条路径的测试用例

6.6测试技术

黑盒测试又称功能测试,把测试对象看作一个黑盒子。
测试人员完全不考虑程序内部的逻辑结构和内部特性,
只根据程序等功能和需求规格说明书,检查程序的功能
是否复合它的需求规格说明。白盒测试在测试的早期阶段进行,而黑盒测试主要在测试的后期进行。
黑盒测试力争发现以下类型的错误:
(1)功能错误或遗漏
(2)在接口上,输入接收错误或输出结果错误
(3)数据结构错误或外部信息(如数据库)访问错误。
(4)性能错误
(5)初始化或终止错误采用黑盒技术测试用例的方法有:
等价类划分、边界值分析、错误推测、因果图和综合策略1.等价类划分
1)定义
等价类划分是把程序等输入集合划分成若干子集,
然后从每个子集中选取少数(因为穷尽不可能做到)
具有代表性的数据作为测试用例,该方法是一种常用的黑盒测试用例设计方法等价类是指输入集合的子集。该子集合中,各个输入数据对于发现程序中
的错误都是等效的,并合理地假设:测试某等价类的具有代表性的数据
就等于这一类其他数据的测试。
因此,可以把全部输入数据合理地划分成若干等价类,
在每一个等价类中取一个数据作为测试的出入条件,
就可以用少量代表性的测试数据,取得较好的测试结果。
等价类划分有两种:有效等价类和无效等价类。有效等价类是指对于程序等需求规格说明来说是合理的、
有意义的输入数据构成的集合。
因此,利用有效等价类可检验程序是否实现了
需求规格说明中所规定的功能和性能。
无效等价类与有效等价类的定义恰巧相反。
设计测试用例时,需要同时考虑这两类等价类,
因为,软件不仅要能接收合理的数据,也要能经受意外的考研。2)划分等价类的原则
划分等价类不能要死记硬背原则,要正确分析被测程序,同时要注意积累经验。
(1)如果规定了输入值的范围,
则可以划分出一个有效等价类和两个无效等价类(2)如果规定了输入数据的一组值,
并且程序对不同输入值做不同的处理,则每个允许的输入值就是一个有效等价
类,而任何一个不允许输入的值就是一个无效等价类(3)如果规定了输入值是布尔类型,则可以划分出一个有效等价类真,
和一个无效等价类假3)设计测试用例步骤
划分出等价类后,需要根据等价类按照下面三个主要步骤设计测试用例。
(1)为每个等价类规定一个唯一的编号(2)设计一个新的测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类,
重复这一步,直到所有的有效等价类都覆盖为止
(3)设计一个新的测试用例,使其覆盖一个而且伊戈尔尚未覆盖的
无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止

软件工程 第六章 编码与测试相关推荐

  1. 软件工程 | 第六章 系统集成与测试

    软件工程 系列为本学期(2020春季)软件工程以及软件工程实践课程笔记整理~ 转眼间6月份快要到来了,考试要临近了~ 问题:一个软件经过各种测试后没问题,但到用户电脑上无法运行,给出解决方案?(预计会 ...

  2. 十六章、渗透测试(千峰网络安全300课时笔记)

    十六章.渗透测试 引言:千峰网络安全300课时学习,视频学习过程中的学习笔记.笔记中借鉴了CSDN博主「beglage」文章中的图片记录,感谢千峰网络的视频和beglage博主的博文笔记记录分享. B ...

  3. 软件工程 第六章:状态图

    第六章:状态图 概述 状态图定义:状态图描述了一个对象或交互过程在它的生命周期中对**一系列外界激励的所呈现出的不同状态以及它相应的响应和活动.**状态图描述了一个状态机. 状态机定义:根据当前事件, ...

  4. (软件工程复习核心重点)第六章实现和测试-第一节:编码

    文章目录 一:定义 二 :程序设计语言的选择 (1)重要性(了解) (2)适宜的程序语言的优点 (3)程序设计语言的选择标准 A:理想标准 B:实际标准 三:编码风格 (1)程序内部的文档 A:定义 ...

  5. (软件工程复习核心重点)第六章实现和测试习题

    文章目录 选择题 填空题 名词解释 简答题 画图/应用题 选择题 填空题 编码风格需要考虑的5个方面 程序内部的文档 数据说明 语句构造 输入输出 效率 单元测试的测试重点 模块结构 局部数据结构 重 ...

  6. (软件工程复习核心重点)第六章实现和测试-第三节:单元测试

    文章目录 一:概述 二:测试重点(了解) (1)模块结构 (2)局部数据结构 (3)重要的执行通路 (4)出错处理通路(了解) (5)边界条件 三:测试方法 (1)代码审查 A:定义(了解) B:流程 ...

  7. (软件工程复习核心重点)第六章实现和测试-第二节:软件测试基础

    文章目录 一:软件测试的目标(了解) 二:软件测试准则(了解) 三:软件测试方法 (1)黑盒测试(功能测试) (2)白盒测试 四:软件测试步骤 (1)单元测试(模块测试) (2)子系统测试 (3)系统 ...

  8. (软件工程复习核心重点)第六章实现和测试-第七节:黑盒测试

    文章目录 一:概念 (1)目的 (2)适用性 (3)设计测试方案时需要考虑的问题(了解) (4)测试用例的标准 二:技术方法 (1)等价类划分法 A:定义 B:目的 C:流程 ①:划分数据的等价类 ② ...

  9. (软件工程复习核心重点)第六章实现和测试-第六节:白盒测试

    文章目录 一:逻辑覆盖 (1)定义 (2)分类 二:控制结果测试 (1)基本路径测试 A:定义(了解) B:步骤(了解) (2)条件测试(了解) A:关系表达式 B:条件错误的类型 C:条件测试的优点 ...

  10. (软件工程复习核心重点)第六章实现和测试-第五节:确认测试

    文章目录 一:概念 二:确认测试的范围(了解) (1)要求 (2)结果 三:软件配置复查(了解) (1)目的 (2)要求 四:Alpha测试Beta测试 (1)Alpha测试 (2)Beta测试 一: ...

最新文章

  1. oracle 10g SYSAUX表空间快速增长之WRH$_SQL_PLAN篇
  2. 搜索和其他机器学习问题有什么不同?
  3. SQL Server 备份还原造成孤立用户的问题
  4. .hpp文件_3 OpenCV的头文件说明及第一个示例程序
  5. mysql查询正在执行的存储过程,[转]ms sql server 存储过程,查看正在执行的sql语句...
  6. Java多线程中使用ReentrantLock、synchronized加锁 简单举例
  7. ubantu自带防火墙的相关使用
  8. win10 dns异常上不了网如何解决
  9. Docker部署Angular应用
  10. Hyper-V故障转移群集搭建(1)
  11. Easy UI combobox实现类似 Select2的效果,下拉带搜索框
  12. 【侯捷】C++面向对象程序设计
  13. Asta:是什么终结了我的鸽王生涯?Go 1.13 发布!
  14. 桌面壁纸 Lively wallpape
  15. Cloudera Manager拓展SPARK2-2.3.0.cloudera3-1.cdh5.6.0.p0.1-el6.parcel
  16. vim方向键无效的解决方案
  17. 用R进行多元线性回归分析建模
  18. 3ds max 软件主菜单中添加新的菜单
  19. jQuery实现点击链接显示和隐藏二维码
  20. 【PCL】ICP 源码分析

热门文章

  1. 打造个人电脑安全终极防线
  2. 数据--第31课 - 树的存储结构
  3. Android ListView 技巧 (一) Android ListView Header
  4. Spring Cloud消息驱动整合
  5. 1.2成员变量+类变量+static关键字
  6. nginx的location优先级
  7. 如何应对企业的数字灾难
  8. 技术人观点:开发人员在处理云应用时该注意什么?
  9. 二叉树遍历算法之三:后序遍历
  10. DataGridView突出