软件测试基础理论体系学习5-静态测试的理解

news2025/1/12 7:49:39

5-静态测试的理解

  • 1 介绍
  • 2 静态测试技术
    • 2.1 代码检查
      • 2.1.1 代码走查
      • 2.1.2 编码风格与规范
      • 2.1.3 审查
        • 2.1.3.1 代码审查和代码走查
        • 2.1.3.2 代码审查清单
    • 2.2 静态结构分析
    • 2.3 代码质量度量

1 介绍

  • 静态测试包括包括代码检查、静态结构分析、代码质量度量等。
  • 它可以由人工进行,充分发挥人的逻辑思维优势,也可以借助软件工具自动进行。
  • 动态测试在完成静态测试之后进行,这样,就需要设计一系列的测试用例来确保测试的完整性和有效性,而在测试用例的设计中,通常会把白盒测试和黑盒测试结合起来使用。

2 静态测试技术

静态测试是指不运行程序进行的测试–只是检查和审阅。静态测试包括包括代码检查、静态结构分析、代码质量度量等。

2.1 代码检查

  • 代码检查包括代码走查、代码审查等,主要检查代码和设计的一致性,代码对标准的遵循、可读性,代码的逻辑表达的正确性,代码结构的合理性等方面;
  • 可以发现违背程序编写标准的问题,程序中不安全、不明确和模糊的部分,找出程序中不可移植部分、违背程序编程风格的问题,包括变量检查、命名和类型审查、程序逻辑审查、程序语法检查和程序结构检查等内容。

2.1.1 代码走查

代码走查的一个问题是全部的代码是否都需要走查,在实践中,通常是不可行的,测试者必须找到那些必须要走查的代码,例如,由于在将来的版本中引入缺陷的风险,由于维护阶段的费用很高,将会留下一些代码或者随机检查,或者按照优先权次序。

代码走查过程中的最大的问题是劝说开发者要遵循一定的标准,开发人员对于代码走查可能会有这样的态度:我写的代码为什么要别人批评我写代码的方式。代码走查要采用一个公认的标准以便所有人都能够同意接受它的要求,所有这些都要小心选择并能够全面反映团队的工作环境。

正规的走查是把代码打印出来,邀请别的同行开会检查代码的缺陷。但这种方法太耗时间,所以一般在走查会议上各开发人员自己讲解自己的逻辑、写法,让别人提意见。在编码阶段这种会议有助于大家了解整个项目情况,也有助力于各开发人员及早发现问题。

2.1.2 编码风格与规范

在程序设计中要使程序结构合理、清晰,形成良好的编程习惯,对程序的要求不仅是可以在机器上执行,给出正确的结果,而且要便于程序的调试和维护,这就要求编写的程序不仅自己看得懂,而且也要让别人能看懂。有时候会出现过了一年半载,连编程者自己也读不懂程序的情况。程序如同一篇文章,应该易于被人看懂,读起来流畅,必要时又容易修改,可以从源程序代码中得到提示从哪里修改。好的程序设计风格有助于提高程序的正确性、可读性、可维护性、可用性。

好的风格对于好的程序设计具有关键性作用。写好一个程序,当然需要使它符合语法规则、修正其中的错误和使它运行得足够快,但是实际应该做的远比这多得多。一个写得好的程序比那些写得差的程序更容易读、更容易修改。经过了如何写好程序的训练,生产的代码更可能是正确的。

程序设计风格的原则根源于由实际经验中得到的常识,它不是随意的规则或者处方。代码应该是清楚的和简单的-------具有直截了当的逻辑、自然的表达式、通行的语言使用方式。

2.1.3 审查

2.1.3.1 代码审查和代码走查

在这里插入图片描述

代码审查是提高代码质量的良药。但良药苦口,也有很多问题。

没有习惯代码审查的开发员的心理抵触。当指出代码中的问题时,很多程序员会感到难堪。特别是不直接影响程序功能的代码,比如,不良代码风格。另外,现在的软件开发常常是多人维护的,如果不良代码是别人写的,总感觉象代人受过一样。这时,不得不反复说明,代码审查目的是帮助找到问题,而不是针对个人。

如果代码审查没有目标,则很容易使得代码审查变得很无趣,变成了程序逻辑报告会。通常,在代码审查之前,先确定一个审查目标,比如今天主要看代码风格,或安全问题等。这样容易找出问题。如果能事先通报一个检查列表,审查之前表态:今天主要审查这些条目,那会更有效。

2.1.3.2 代码审查清单

这个清单只对结构化编程测试具有意义,不包括特殊应用领域和面向对象软件的测试。

  • 数据引用错误

是指使用未经正确初始化用法和引用方式的变量、常量、数组、字符串或记录而导致的软件缺陷。如:变量未初始化、数组和字符串下标越界、对数组的下标操作遗漏[0]、变量与赋值类型不一致、引用的指针未分配内存。

  • 数据声明错误

数据声明软件缺陷产生的原因是不正确的声明或使用变量和常量。

  • 计算错误

计算或者运算错误是基本的数学逻辑问题。计算无法得到预期结果。如:不同数据类型或数据类型相同但长度不同的变量计算、计算过程中或计算结果溢出、赋值的目的变量上界小于赋值表达式的值、除数/模为0、变量的值超过有意义的范围(如概率的计算结果不在0-1范围内)。

  • 比较错误

小于、大于、等于、不等于、真、假。比较和判断错误很可能是边界条件问题。如:混淆小于和小于等于、逻辑表达式中的操作数不是逻辑值。

  • 控制流程错误

控制流程错误的原因是编程语言中循环等控制结构未按预期方式工作。通常由计算或者比较错误直接或间接造成。如:模块或循环无法终止、存在从未执行的代码、由于变量赋值错误而意外进入循环。

  • 子程序参数错误

子程序参数错误的来源是软件子程序不正确的传递数据。如:实际传送的参数类型或次序与定义不一致、更改了仅作为输入值的参数。

  • 输出错误

包括文件读取、接受键盘或者鼠标输入以及向打印机或者屏幕等输出设备写入错误。如:软件没有严格遵守外部设备读写数据的专用格式、文件或外设不存在或者为准备好的错误情况发生时没有相应处理、未以预期的方式处理预计错误、错误提示信息不正确/不准确。

  • 其他检查

软件是否使用其他外语?处理字符集的范围(ASCII或Unicode)?是否需要移植?是否考虑兼容性?编译时是否产生警告或提示信息?

2.2 静态结构分析

  • 静态结构分析主要是以图形的方式表现程序的内部结构,例如函数调用关系图、函数内部控制流图。
  • 函数调用关系图以直观的图形方式描述一个应用程序中各个函数的调用和被调用关系;
  • 控制流图显示一个函数的逻辑结构,它由许多节点组成,一个节点代表一条语句或数条语句,连接结点的叫边,边表示节点间的控制流向。

2.3 代码质量度量

ISO/IEC 9126国际标准所定义的软件质量包括六个方面:功能性、可靠性、易用性、效率、可维护性和可移植性。软件的质量是软件属性的各种标准度量的组合。


【特别说明】:知识来源于网络、各种资料、书本、网站等,本文仅用于学习使用,不做他用,如果涉及版权问题,请联系博主删除,谢谢

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/74996.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

友芝友生物冲刺港交所上市:极其依赖单一供应商,周鹏飞为董事长

12月9日,Wuhan YZY Biopharma Co.,LTD.(武汉友芝友生物制药股份有限公司,下称“友芝友生物”)向港交所提交上市申请材料,计划在港交所主板上市,中信建投国际为其独家保荐人。 此前,贝多财经曾在…

Spark零基础入门实战(六)使用IntelliJ IDEA创建Scala项目

IntelliJ IDEA(简称IDEA)是一款支持Java、Scala和Groovy等语言的开发工具,主要用于企业应用、移动应用和Web应用的开发。IDEA在业界被公认为是很好的Java开发工具,尤其是智能代码助手、代码自动提示、重构、J2EE支持等功能非常强大。 在IDEA中安装Scala插件 在IDEA中安装…

【Keras计算机视觉OCR】文字识别算法中DenseNet、LSTM、CTC、Attention的讲解(图文解释 超详细)

觉得有帮助麻烦点赞关注收藏~~~ 一、OCR文字识别的概念 利用计算机自动识别字符的技术,是模式识别应用的一个重要领域。人们在生产和生活中,要处理大量的文字、报表和文本。为了减轻人们的劳动,提高处理效率,从上世纪50年代起就开…

GPR学术报告学习-刘四新 主持

钱荣毅 道路空洞 1 设备 天线矩阵 不能完全覆盖调查区域, 存在差异: 难以发现动态发育特征, 数据采集难以实现3D 全覆盖, 高频上探测深度浅, 通道间存在差异。 数据需要校准。。。主要A-SCAN的地面抖动矫正。 异常区…

【EmonCMS】开源数据处理平台安装教程

EmonCMS 安装教程1.EmonCMS平台介绍:2. EmonCMS安装2.1在 Ubuntu中安装2.2.在树莓派中安装3.安装完毕Emoncms是作为该项目的一部分开发的开源web应用程序,用于处理、记录和可视化能源、温度和其他环境数据。Emoncms从OpenEnergyMonitor监控硬件接收数据&…

VS Code 上已有200万+ Java 开发者!

大家好,我们很高兴与大家分享一个好消息,现在 Visual Studio Code 上已有超过200万 Java 开发者,这要来自于长期社区以及用户的支持,所以谢谢你们! 对于11月的更新,我们为您带来了全新的代码编辑功能&…

运行 Jmeter 文件生成 HTML 测试报告,我选择 ANT 工具

概述 ant 是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,大多用于 Java 环境中的软件开发。 在与 Jmeter 生成的 jmx 文件配合使用中,ant 会完成jmx计划的执行和生成jtl文件,并将jtl文件转化为html页面进行查看。 还可…

类加载器和反射

1.通过全限定名:包名类名(类名可能会重复,所以要加包名),然后用流拷贝到内存中,并在内存中创建一个class对象用来存储这个class文件的成员信息 类加载过程http://t.csdn.cn/FDnaa 在验证之前会把该类中引…

CRM的开发

开发步骤1.首页的开发2.由首页跳转到登陆页面3.用户登录4.记住密码实现5.安全退出6.登录验证7.创建市场活动8.分页查询市场活动9.删除市场活动10.修改市场活动11.批量导出市场活动12.导入市场活动13.查看市场活动明细14.添加市场活动备注15.删除市场活动备注16.修改市场活动备注…

分分钟搭建出nginx的https服务

nginx添加https协议一、https是什么?二、创建步骤1.安装nginx2.创建证书三、验证四、浏览器访问在windows安装证书总结nginx 192.168.122.50一、https是什么? HTTPS (全称:Hypertext Transfer Protocol Secure )&…

分布式文件存储系统Minio,tuling,fox,p3 5:27

MinIO | 高性能,对Kubernetes友好的对象存储 一 分布式文件系统应用场景 fastDFS 缺点: 部署麻烦。因为文件名是自动生成的,所以如果要处理文件的话,还要经过额外的编码。Minio介绍 应用场景 互联网海量非结构化数据的存储需求…

Spring常见注解

普通CURD框架结构 1、controller 控制器(注入服务)用于标注控制层,相当于struts中的action层 2、service 服务(注入dao)用于标注服务层,主要用来进行业务的逻辑处理 3、repository/Mapper(实…

25.前端笔记-CSS-溢出的文字省略号展示

1、单行文本溢出显示省略号 满足条件: (1)先强制一行内显示文本 white-space:nowrap;/*默认不写,或值是normal自动换行*/) (2)超出的部分隐藏 overflow:hidden; (3)文字用省略号代…

ESPnet-SE 开源工具介绍

下面是我们整理的钱彦旻教授、张王优、李晨达在第二届SH语音技术研讨会和第七届Kaldi技术交流会的报告内容,如果有误,欢迎指正。 基本情况 今天我们主要是围绕ESPnet-SE这个工具做一个简单的介绍,我会大概讲一下ESPnet-SE的情况,…

一文了解宏内核和微内核

【推荐阅读】 纯干货,linux内存管理——内存管理架构(建议收藏) 轻松学会linux下查看内存频率,内核函数,cpu频率 一文了解Linux内核的Oops 一篇长文叙述Linux内核虚拟地址空间的基本概括 需要多久才能看完linux内核源码? 内核是操…

微信小程序第五篇:页面弹出效果及共享元素动画

系列文章传送门: 微信小程序第一篇:自定义组件详解 微信小程序第二篇:七种主流通信方法详解 微信小程序第三篇:获取页面节点信息 微信小程序第四篇:生成图片并保存到手机相册 目录 一、page-caontainer 实现假页弹出 …

LDP协议介绍

LDP介绍 1.LDP协议概述 LDP(Label Distribution Protocol)规定了标签分发过程中的各种消息以及相关的处理过程。LSR之间将依据本地转发表中对应于一个特定FEC的入标签、下一跳节点、出标签等信息联系在一起,从而形成标签交换路径LSP。 2.L…

【Python恶搞】Python实现祝福单身狗的恶搞项目,快发给你的怨种大兄弟 | 附源码

前言 halo,包子们上午好 咱就说,谁还没有一个单身的小伙伴呢 今天这个代码主要是为了祝福咱们单身的小伙伴 咱就说废话不多说,直接上才艺 相关文件 关注小编,私信小编领取哟! 当然别忘了一件三连哟~~ 公众号&#x…

Kali Linux 又更新了!202.4新版本有哪些变化?

Kali Linux在今年最后一个月迎来了新版本,即2022.4,上次更新是在8月份,时隔4个月,Kali linux 又有哪些新变化呢? 更新内容: Microsoft Azure - Kali 已添加到 Microsoft Azure,但目前没有图形…