关于静态测试

2023-11-11

(1)静态测试

静态测试是指不运行被测试程序而寻找程序代码中可能存在的错误或评估程序代码的过程。静态测试的特点是不需要运行代码,也不需要对代码编译、链接和生成可执行文件。它是通过分析或检查源程序的方法、结构、过程、接口等来检查程序的正确性。目的在于找出缺陷和可疑之处,纠正软件系统的描述、表示和规格上的错误,也是进一步执行其它测试的前提。

(2)静态测试的基本内容

在实际使用中,静态代码检查比动态测试更有效率,更能快速找到缺陷。按经验估算,一般能发现30%~70%的逻辑设计和编码错误的缺陷。但是静态代码检查非常耗费时间,而且代码检查需要丰富的知识和经验积累。

静态测试包括代码检查、静态分析两种途径。它可以由人工进行,充分发挥人的逻辑思维优势,也可以借助软件工具自动进行。代码检查包括桌面检查、代码审查、代码走查和技术评审等。主要检查代码的设计是否一致性、代码是否遵循标准性和可读性、代码的逻辑表达是否正确性、以及代码结构是否合理性等。静态分析则是一种计算机辅助的静态分析方法。主要对程序进行控制流分析、数据流分析、接口分析和表达式分析等。静态分析的对象是软件程序,程序设计语言不同,相应的静态分析工具也就不同。

(3)重点介绍代码检查流程

代码检查包括桌面检查(Desk Checking)、代码审查(Inspection)、代码走查(Walk through)和技术评审(Review)四种情况。当然在实际工作,我们完全不必要被概念所束缚住,而应根据项目的实际情况来决定采取哪种静态测试形式,不用严格去区分到底是代码走查,代码审查和还是技术评审。

①桌面检查(Desk Checking)

是由程序员自己检查自己编写的程序。程序员在程序通过编译之后,进行单元测试设计之前,对源程序代码进行分析,检验,并补充相关的文档,目的是发现程序中的错误。检查项目有:检查变量的交叉引用表、检查标号的交叉引用表、检查子程序、宏、函数、等值性检查、常量检查、标准检查、风格检查和补充文档等。这种桌面检查由于程序员熟悉自己的程序和自身的程序设计风格,可以节省很多的检查时间,但应避免主观片面性。

② 代码审查(Code Reading Review)

代码审查是由若干程序员和测试人员共同组成一个会审小组,通过阅读、讲解、讨论和模拟运行的方式,对程序进行静态分析的过程。代码审查主要是依靠有经验的程序设计和测试人员根据软件设计文档,通过阅读程序发现软件缺陷。特点是一般有正式的计划、流程和结果报告。现在也可借助软件工具自动进行,例如 LOGICSCOPE、C++ TEST、LDRA TESTBED、PRQA C/C++、MACABE IQ、以及Rational的Purify、Quantify和PureCoverage等。

代码审查一般分为两个步骤:第一步是小组负责人把设计规格说明书、控制流程图、程序文本及有关要求、规范等分发给小组成员,作为评审的依据。第二步是召开程序代码审查会,在会上由程序员逐句讲解程序的逻辑,在此过程中其他的程序员可以提出问题,展开讨论,以审查错误是否存在。实践经验表明,程序员在讲解过程中能发现许多原来自己没有发现的缺陷和错误,而讨论和争议则更会促进缺陷问题的暴露。

③代码走查(Walk throughs)

走查与代码审查基本相同,其过程也分为两步。第一步也把材料先发给走查小组每个成员,让他们认真研究程序代码后再开会。但第二步开会的程序与代码审查不同,不是简单地读程序和对照错误检查表进行检查,而是让与会者"充当"计算机。即首先由测试组成员为被测程序准备一批有代表性的测试用例,提交给走查小组。走查小组开会时就集体扮演计算机角色,让测试用例沿程序的逻辑运行一遍,随时记录程序的踪迹,供分析和讨论用。人们借助于测试用例的媒介作用,对程序的逻辑和功能提出各种疑问,结合问题开展热烈的讨论和争议,以求发现更多的问题。

④技术评审(Review)

技术评审(Review)是指开发组、测试组和相关人员(QA、产品经理等)联合进行,也是采用讲解、提问并使用编码模板进行的查找错误的活动。一般也有正式的计划、流程和结果报告。

开始静态测试的时机和准备

理论上讲,静态测试应从项目立项即开始测试,然后始终贯穿整个项目。但在实际操作中,基本上是上一个版本系统测试结束的时候才进入下一个版本的静态测试阶段。这个时候,基本系统规格书和软件需求说明书都已经完成初稿,因此静态测试开始的原则是越早越好。

(1)测试前的重要准备:熟悉业务流程和背景

静态测试能否成功有一个很重要的前提条件,就是测试人员要对测试系统的业务流程有一定的认识和基础,这样测试才能更加全面和深入的进行。例如,如果要对新增的业务流程进行测试,建议先在类似的业务系统中熟悉业务基础流程。如果是要对变更类项目进行测试,建议将原有的系统先熟悉起来,以便对变更和修改的内容有更明确清晰的认识。其次,对于静态测试内容的业务背景和总体设计的了解也是非常重要的。例如:通过对业务背景和总体方案的研读,了解系统要实现哪些内容,清晰了解所测试的内容的轮廓,透彻的审视系统规格书和软件需求说明书。只有充分的前期准备,才会在静态测试过程中取得比较满意的效果。如果涉及到比较复杂的情况时,测试人员较难搞清楚的,最好提前跟对应的开发沟通,搞清楚项目的测试要点,或是去求证测试思路是否正确。这样有助于缩短准备时间,更好的进行静态测试。

(2)静态测试前先准备好产品说明书

静态测试前需要先对产品说明书进行高级审查,测试产品说明书的目的不是钻进去找软件缺陷,而是在一个高度上审视。审查产品说明书是为了找出根本性的大问题、疏忽和遗漏之处。也许这更像是研究而不是测试,但是产品说明书的研究主要是为了更好地了解软件要做什么。如果能够很好地理解产品说明书背后的原因和操作方式,就可以更好地仔细进行静态测试检查了。因此,测试人员在第一次接到需要审查的产品说明书时,应该要把自己代入客户的角色想思考。代入客户的角色思考和看问题是很重要的,这涉及到静态测试的准备工作是否做到位的问题。再加上有一定的业务背景了解,在审视产品说明书的时候才有可能发现功能上设计不合理的地方。

(3)审查和测试同类软件

审查和测试同类软件中存在的缺陷问题和功能,可以给测试人员一个好的提示和借鉴,让测试人员在静态测试更加有的放矢。比如说一个软件系统中要设计一个新的功能,而这个功能在同类软件中已经有成形的产品,借鉴现有的经验,就很容易比对出目前的设计是否存在某些缺陷或欠缺。

高效进行静态测试的策略和方法

人员和过程是决定软件静态测试质量的关键因素,因此高质量的人员和良好的过程是必须要重视和控制的。

(1)挑选合适的审查成员

静态测试对参与人员的经验要求非常高,因此静态测试的要点是要挑选合适的审查成员。因为审查人员是否具有丰富的经验和知识,将在缺陷讨论、判断和争议的环节中起到决定性的作用。

(2)审查活动前的准备必须要充分

静态测试一般是在编译和动态测试之前进行,这个时候系统是否能正常运行也是一个未知之数。因此在静态检查前,必须充分准备好需求描述文档、程序设计文档、程序源代码清单、代码编码标准和代码缺陷检查表等。

(3)组织和控制好审查会议过程

静态测试的代码检查阶段是需要召开会议形式的审查活动,而活动是否有效的进行和控制就意味着是否高质量的进行静态测试。因此,必须要组织和控制好审查会议的过程,审查过程本身的目的是提出问题,引发讨论和争议,而不是现场解决这些缺陷。否则,缺乏控制的审查会议过程,会很容易本末倒置的变成了现场缺陷修改会议。



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于静态测试 的相关文章

  • “性能压测揭密:关键指标分析!“

    在进行全链路压测和性能测试时 需要关注多个关键性能指标 KPIs 来评估系统的性能表现 以下是一些常见的性能测试指标 1 吞吐量 Throughput 系统在单位时间内能够处理的请求数量或事务数量 通常以每秒请求数 RPS TPS 来衡量
  • Python 如何安装Selenium(推荐)

    一 Selenium的定义 Selenium 是一个 Web的自动化测试工具 最初是为网站 自动化测试而开发的 Selenium 可以直接调用浏览器 它支持所有主流的浏览器 包括PhantomJS 这些无界面的浏览器 可以接收指令 让浏览器
  • JMeter 批量接口测试

    一 背景 最近在进行某中台的接口测试准备 发现接口数量非常多 有6 70个 而且每个接口都有大量的参数并且需要进行各种参数验证来测试接口是否能够正确返回响应值 想了几种方案后 决定尝试使用JMeter的csv读取来实现批量的接口测试 二 脚
  • 外包干了2个月,技术退步明显...

    先说一下自己的情况 大专生 18年通过校招进入武汉某软件公司 干了接近4年的功能测试 今年年初 感觉自己不能够在这样下去了 长时间呆在一个舒适的环境会让一个人堕落 而我已经在一个企业干了四年的功能测试 已经让我变得不思进取 谈了2年的女朋友
  • 【Mysql】InnoDB 引擎中的页目录

    一 页目录和槽 现在知道记录在页中按照主键大小顺序串成了单链表 那么我使用主键查询的时候 最顺其自然的办法肯定是从第一条记录 也就是 Infrimum 记录开始 一直向后找 只要存在总会找到 这种在数据量少的时候还好说 一旦数据多了 遍历耗
  • Python接口自动化测试处理不同接口间参数依赖

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 2k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 小白也能学会的创建Git仓库实操

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 2k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 38条Web测试经验分享

    1 页面链接检查 每一个链接是否都有对应的页面 并且页面之间切换正确 可以使用一些工具 如LinkBotPro File AIDCS HTML Link Validater Xenu等工具 LinkBotPro不支持中文 中文字符显示为乱码
  • Linux终端常见用法总结

    熟悉Linux终端的基础用法和常见技巧可以极大提高运维及开发人员的工作效率 笔者结合自身学习实践 总结以下终端用法供同行交流学习 常 见 用 法 1 快捷键 1 1 Alt 在光标位置插入上一次执行命令的最后一个参数 1 2 Ctrl R
  • Jenkins 插件下载速度慢、安装失败了!我教你怎么解决!

    Jenkins部署完毕 如果不安装插件的话 那它就是一个光杆司令 啥事也做不了 所以首先要登陆管理员账号然后点击系统管理再点击右边的插件管理安装CI CD必要插件 但是问题来了 jenkins下载插件速度非常慢 而且经常提示下载插件失败 真
  • 微信小程序的自动化测试框架

    微信发布了小程序的自动化测试框架Minium 提供了多种运行验证方式 其特点 支持一套脚本 iOS Android 模拟器 三端运行 提供丰富的页面跳转方式 看不到也能去得到 可以获取和设置小程序页面数据 让测试不止点点点 可以直接触发小程
  • 软件测试|深入了解Python中的super()函数用法

    简介 Python中的super 函数是一种强大的工具 用于在子类中调用父类的方法 它在面向对象编程中非常有用 可以让你轻松地扩展和重用现有的类 本文将详细介绍super 函数的用法 并提供一些示例来帮助你更好地理解它的功能 什么是supe
  • 软件测试|使用matplotlib绘制平行坐标系图

    简介 绘制平行坐标系图 Parallel Coordinates Plot 是一种用于可视化多维数据的强大方法 在这篇文章中 我们将介绍如何使用Matplotlib库创建平行坐标系图 以及如何解释和定制这种图表 我们将使用一个示例数据集来演
  • 软件测试|使用Python读写yaml文件,你会了吗?

    简介 YAML YAML Ain t Markup Language 是一种可读的数据序列化格式 它常用于配置文件和数据交换 Python 提供了许多库来处理 YAML 文件 在本文中 我们将探讨如何使用 PyYAML 库来读取和写入 YA
  • 软件测试|使用matplotlib绘制多种柱状图

    简介 在数据可视化领域 Matplotlib是一款强大的Python库 它可以用于创建多种类型的图表 包括柱状图 本文将介绍如何使用Matplotlib创建多种不同类型的柱状图 并提供示例代码 创建基本柱状图 首先 让我们创建一个基本的柱状
  • Jmeter 性能-阶梯负载最终请求数

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 新手也能看懂的【前端自动化测试入门】!

    前言 最近在网上搜索前端自动化测试相关的文档 但是发现网上的文章都是偏使用 没有把一些基础概念说清楚 导致后续一口气遇到一些 karma Jasmine jest Mocha Chai BDD 等词汇的时候很容易一头雾水 这次一方面整理一下
  • 甜蜜而简洁 —— 深入了解Pytest插件pytest-sugar

    在日常的软件开发中 测试是确保代码质量的关键步骤之一 然而 对于测试报告的生成和测试结果的可读性 一直以来都是开发者关注的焦点 Pytest插件 pytest sugar 以其清晰而美观的输出 为我们提供了一种愉悦的测试体验 本文将深入介绍
  • 外包干了2个月,技术倒退2年。。。

    先说一下自己的情况 本科生 20年通过校招进入深圳某软件公司 干了接近4年的 功能测试 今年国庆 感觉自己不能够在这样下去了 长时间呆在一个舒适的环境会让一个人堕落 而我已经在一个企业干了四年的功能测试 已经让我变得不思进取 谈了3年的女朋
  • 一文从0到1手把手教学UI自动化测试之数据驱动!

    在UI的自动化测试中 我们需要把测试使用到的数据分离到文件中 如果单纯的写在我们的测试模块里面 不是一个好的设计 所以不管是什么类型的自动化测试 都是需要把数据分离出来的 当然分离到具体的文件里面 文件的形式其实有很多的 这里主要说明JSO

随机推荐

  • 基于深度学习图像特征匹配的双目测距方法

    摘要 针对现有双目视觉测距方法中存在的精度低 抗干扰能力弱 鲁棒性差等问题 提出一种基于深度学习图像特征匹配的双目深度测距方法 首先将双目图像通过一个自监督训练的特征提取网络 通过两个解码器获取双目图像的特征点与描述符 然后根据描述符进行特
  • Mysql安装【YUM方式】

    一 环境介绍 操作系统 CentOS 7 MySQL 5 7 二 设置阿里云yum源 阿里云CentOS 镜像地址 https developer aliyun com mirror centos spm a2c6h 13651102 0
  • Jenkins通过kubernetes plugin连接K8s集群

    一 Jenkins安装kubernetes plugin插件 1 1 点击左侧系统管理 1 2 点击插件管理 1 3 安装插件Kubernetes plugin 1 4 安装好后重启Jenkins 浏览器输入http 192 168 0 1
  • Ubuntu16.04 安装 CUDA9.2(总结一些新手容易遇到的问题)

    系统 Ubuntu16 04 64bit 显卡 Nvidia GEFORCE 940MX 驱动 NVIDIA Linux x86 64 396 18 run 软件 cuda 9 2 88 396 26 linux run 1 下载软件 下载
  • 大学实训项目--学生社团管理系统

    介绍 这是一个大学小组实训做的项目 使用ssm框架 使用5个表完成分权限登录 不同的菜单 对应不同的权限 不同的权限 对应不同的角色 不同的角色对应不同的用户 使用Echars完成统计分析功能 以及各种增删改查 下载地址 代码地址
  • 华为OD机试真题-施肥问题【2023Q1】

    题目内容 解题思路 首先需要计算每个果园的施肥时间 即果园面积除以施肥机能效 然后找到最小的施肥机能效 保证施肥任务能在规定时间内完成 如果施肥天数小于果园数量 则无法完成施肥任务 返回 1 如果施肥天数等于果园数量 则直接返回最大果园面积
  • 多目标跟踪概述(一)

    多目标跟踪 Multiple Object Tracking or Multiple Target Tracking MOT or MTT 主要任务是在给定一个图像序列中同时对多个感兴趣的目标进行定位 并维持他们的ID 最后给出不同目标的运
  • SpringCloud之整合dubbo

    SpringCloud整合dubbo进行服务之间的通信 一 编写公共dubbo api 然后把dubbo api打成jar包并安装 install 在本地仓库中 供其他模块依赖 二 导入相关依赖 服务提供模块和服务消费模块 pom xml
  • C++(12)——命名空间,模板函数,模板类

    命名空间 命名空间是为了解决全局变量名的污染问题而设立的 用来处理程序中 常见的同名冲突 C 提供了这样的名字空间作用域的限制 基本写法如下 namespace 名字空间作用域 比如下面的代码 设立了两个不用的命名空间 并通过作用域解析符调
  • Jetson硬件平台状态查看工具jtop安装

    0 背景介绍 刚把Jetson TX2刷机了 重新安装资源状态查看器jtop 1 依赖环境 sudo apt get install git cmake sudo apt get install python3 dev sudo apt g
  • 深度解析VC中的消息传递机制

    摘要 Windows编程和Dos编程 一个很大的区别就是 Windows编程是事件驱动 消息传递的 所以 要学好Windows编程 必须 对消息机制有一个清楚的认识 本文希望能够对消息的传递做一个全面的分析 一 什么是消息 消息系统对于一个
  • 【channel】应用实例1

    如何解决两个goroutine同时对一个channel进行读写的问题 请完成goroutine和channel协同工作的案例 具体要求 1 开启一个writeData协程 向管道intChan中写入50个整数 2 开启一个readData协
  • 小米路由器4a开发版固件_小米路由器 4A 刷入lean 的 openwrt/lede

    本教程同时适用于 小米路由器 4A 以及其千兆版 缘由 作为一只攻城狮 开发的时候经常要下一堆lib 然而很多依赖都在国外 虽然也有国内的源 但是也常用例外情况 因此下载依赖时比较慢 所以 懂我意思吧 然后我并不想在挂客户端 并且要局域网都
  • EditText文字改变监听

    改变文字就会有监听 mEtContent addTextChangedListener new TextWatcher param s 之前的字母 param start 之前的字母长度 param count 未知 param after
  • 【小程序】何为授权(scope)?获取小程序已经向用户请求过的权限(wx.getSetting(Object object))

    何为授权 scope 授权 部分接口需要经过用户授权同意才能调用 我们把这些接口按使用范围分成多个 scope 用户选择对 scope 来进行授权 当授权给一个 scope 之后 其对应的所有接口都可以直接使用 此类接口调用时 如果用户未接
  • 0基础转行Python,应该具备的条件和注意的问题!新手必备

    很多想转行做Python的 只是看重了我们这行工资高 但是对于行业知识什么都不懂 行情也不懂 无头苍蝇似的 漫无目的去看些免费的死视频 但是有什么意义呢 接触互联网很多年 现在Python技术是越来越受到关注 如今转行做Python的非常多
  • Python绘图和数据可视化

    经过几个月的学习 总算是对Python这门语言有了一定的了解 据说Python语言使用流行度排名已经是第一了 Python之所以这么流行得益于它适用于很多不同领域 目前使用最广泛的领域包括有数据分析挖掘 网络爬虫 机器学习与人工智能 Pyt
  • visual studio:使用GIT的时候 “Could not open ***.VC.opendb”

    参考 https blog csdn net wk89665944 article details 51240011
  • No command 'setenv' found

    zz http blog csdn net qtyl1988 article details 8096097 今天又遇到一个能够充分证明自己是菜鸟的问题 我要在ubuntu12 04下编译安装OpenInventor 阅读OpenInven
  • 关于静态测试

    1 静态测试 静态测试是指不运行被测试程序而寻找程序代码中可能存在的错误或评估程序代码的过程 静态测试的特点是不需要运行代码 也不需要对代码编译 链接和生成可执行文件 它是通过分析或检查源程序的方法 结构 过程 接口等来检查程序的正确性 目