《软件测试的艺术》第3章:代码检查、走查与评审

article/2025/9/30 4:28:06

《软件测试的艺术》:

    软件开发人员通常不会考虑到的一种测试形式:人工测试。大多数人认为,因为程序是为了供机器执行而编写的,那么也应由机器来对程序进行测试。这种想法是有问题的。人工测试方法在暴露错误方面是很有成效的。实际上,大多数的软件项目都应使用到以下的人工测试方法:

  • 利用错误列表进行代码检查

  • 小组代码走查

  • 桌面检查

  • 同行评审。

    另一种人工测试(基于人的测试)就是本章开头提到的可用性测试,这是一种黑盒测试技术,需要测试人员站在最终用户实用的角度来评估软件的可用性程度。这一部分将在本书第7章介绍。

软件测试的一种分类方式

关于代码检查和走查等概念,读者可以自行阅读相关章节。

验证芯发现:

  • 芯片bug的修复成本

    《软件测试的艺术》中本章节提到:人们普遍认识到错误发现得越早,改正错误的成本越低,正确改正错误的可能性也越大。

    对于芯片bug的修复成本和该说法基本一致。芯片bug的修复成本根据所处开发流程不同,相差较大。一般来说,在越靠前的环节,修复的成本越低,修改引入的风险也越低。

    在模块的block级设计验证阶段,发现问题,直接修改RTL代码,然后进行block级别验证回归测试即可。在系统测试环节发现bug,则需要block级验证和系统验证都要做相应的回归测试。

    在RTL代码fix以后,代码综合阶段,验证发现问题后,修复的成本就会远大于block级和系统测试级。此时则需要使用ECO方式,修改综合网表,进而使用Formal技术,保证RTL的修改和综合网表的一致性。同时所有级别的验证则需要根据最新的RTL进行回归测试。更为严重的,如果在PD阶段发现bug,受限于项目交付时间,可能需要进行PD层次的ECO,该成本则又远大于综合网表的ECO。

  • 对事不对人

    《软件测试的艺术》中本章节提到:要使检查过程有成效,必须树立正确的态度。如果程序员将代码检查视为对其人格的攻击、采取了防范的态度,那么检查过程就不会有效果。....对代码检查的结果进行保密,仅限于参与者范围内部。尤其是如果管理人员想利用代码检查的结果,那么就与检查过程的目的背道而驰了。

    与人打交道是一件比较微妙的事情,可能同样一件事,不同的说辞和态度就会给人不同的感受,处理的结果也会截然不同。从验证的角度看,验证是为了发现更多RTL代码中的问题,也就是说要发现别人的错误,“揭对方的短处”,尤其在和设计人员交流和定位问题时,有时需要注意相关的语言表达。比如可以对比下两种方式:

    (1)你这个代码写的有问题;

    (2)仿真出错了,我们一起看下是验证环境问题还是代码问题。

    另外一个角度是对于管理人员,比如验证leader。我们不可以把偶然的一个结果,上升到对人的评价。主管对团队成员的评价,一定是基于事实而不是主观的定论。

  • 验证的代码检查、走查与评审

    原书本章内容,其实是在介绍针对设计代码的自检,对应到芯片的开发,应该是属于设计代码的检视和根据checklist的自检。不同的公司和部门都会有自己积累的“自检列表”,一般这种自检表中,除了一些通用的检查项,还会有一些“特色”,即每个小组以前犯过的错误。

    在这里想从另外一个角度分析,即验证的自我检查。从整体上看,RTL代码和验证环境是一个有机系统的两部分,RTL的正确性可以由验证来保证,而验证环境的正确性该如何保证呢?RTL代码有自己的自检,那么验证环境也会有类似的动作。

    验证环境包括:driver、monitor、RM、随机约束以及testcase等组件,每个组件的代码检查和评审在流程上必须要设置相应的环节。在受限于项目周期,以及验证环境的成熟度,某些检查的程度会有所不同,可以灵活实施。验证环境的检视和评审,一般由环境开发人员、主管leader以及其他干系人。和RTL代码检视的错误列表类似,验证也会有对应的checklist,至于checklist的内容和角度,每个公司或部门的思路会有所不同。


验证芯发现:《软件测试的艺术》第3章:代码检查、走查与评审 (qq.com)


http://chatgpt.dhexx.cn/article/euKsPgKx.shtml

相关文章

Hash与HashCode

1.hash和hash表 首先看一张来自百度百科的解释 hash是一个函数,该函数中的实现就是一种算法,就是通过一系列的算法来得到一个hash值,hash表就是所有的hash值组成的,有很多种hash函数,也就代表着有很多种算法得到hash值…

深入理解 Java 中的 hashCode

深入理解 Java 中的 hashCode 一、hashCode 方法二、为什么重写 equals 方法的时候必须重写 hashCode 方法? 一、hashCode 方法 Java 是一门面向对象的编程语言,所有的类都会默认继承自 Object 类,Object 类中就包含了 hashCode() 方法&…

hashCode 和对象的内存地址

hashCode 文章目录 hashCodehashCode 的生成逻辑第 0 种算法第 1 种算法第 2 种算法第 3 种算法第 4 种算法第 5 种算法 根据一定的规则将与对象相关的信息(比如对象的存储地址,对象的字段等)映射成一个数值,这个数值称作为散列值…

HashCode

HashCode 文章目录 HashCode前言Hash是什么?HashCodeHashCode关键点判断两个对象相等 前言 Hash是什么? 哈希函数 把任意长度的输入通过散列算法变换成固定长度的输出,该输出就是散列值,是一种压缩映射。 hash是一个函数&#…

java中equals,hashcode和==的区别

2019独角兽企业重金招聘Python工程师标准>>> 1、== java中的数据类型,可分为两类: 1.基本数据类型,也称原始数据类型 byte,short,char,int,long,float,double,boolean 他们之间的比较,应用双等号(==),比较的是他们的值。 2.引用类型(类、接口、数组) 当…

hashcode讲解【最详细版本】

Object 基类 Object 含有的方法 hashCode 作用:用于查找的快捷性,常用于确定对象的存储地址 如 Hashtable,HashMap 默认情况下,Object中的hashCode() 返回对象的32位jvm内存地址。 如果两个对象相同, equals方法一…

hashcode详解

前言 HashCode是在Java中用于获取对象的唯一标识符的方法。它是根据对象的内容生成的一个整数值。对象的hashCode()方法被调用时,它返回的是对象的哈希码。哈希码可以用于在哈希表等数据结构中快速定位对象。 在Java中,hashCode()方法是被Object类定义…

真正搞懂hashCode和hash算法

本人当初刚接触java的时候一说到hash算法或者hashCode也是蛋蛋疼,两只都疼 后来花了整整一天时间来研究hash,搞懂后发现其实也不难理解,时隔一年突然想起来,写篇博客记录下; 以前我莫得选择,现在我想搞懂…

腾讯_TEG一面

总结 不愧是腾讯内部技术含量较高的部门,上来怼基础。总体有套路可循,比较偏技术

腾讯技术解读|TEG—硬核拆解,腾讯产品的底层技术牛在哪里?

技术,是各个事业群的核心力量 然而,事业群的不同,核心力量也不同 你是否还在纠结事业群的选择? 担心对事业群不了解而选错事业群? 毫无疑问 技术也是事业群选择的重要衡量因素之一哦! 对此&#xff0c…

15 年腾讯老兵谈技术人成长之路

作者:alexguo,腾讯TEG技术总监&技术专家 每个职场人都会经历从职场新人到骨干、专家亦或是管理者的蜕变过程。作为技术职业人,大家常会碰到一些困惑,在不同职业发展阶段所需要具备的认知和专业能力差异在哪里?除了…

腾讯TEG客户端开发面经

2022年秋招/春招/提前批/大厂面经整理(持续更新中~) 腾讯TEG客户端开发面经 2021/05/19下午两点半初试 1、面试官先让做自我介绍,主要介绍项目,简短一点不需要太详细。 ------我大概讲了一下我的三个项目,第一个是高…

腾讯TEG首次集体亮相腾讯全球数字生态大会,这些亮点不容错过!

5月21日—23日,腾讯全球数字生态大会将在昆明滇池国际会展中心召开。大会是将腾讯过往的三大峰会“腾讯全球合作伙伴大会”、“腾讯云未来峰会”和“互联网数字经济峰会”进行有机整合,届时,众多行业领袖、技术领军人物、国际知名数字经济研究…

粉丝投稿!大三参加校招三面腾讯TEG实习岗面经分享,希望对大家有帮助!(已拿意向书)

背景介绍 背景:本科大三,末流211,计科专业,寒假在某bat一家实习 腾讯流程好快,从面到结束一周拿意向书,3.18开始一面,3.25拿到意向书 一面 75min 自我介绍学校做的项目有没有什么优点&#x…

TEG《选择》乘风破浪 · 披荆斩棘

等灯等灯~ 今夜,TEG《选择》在新年晚会闪亮登场 听说有人夸我们大歌舞大排面(蟹蟹) 其实咱剧情还搭载着回忆与梦境、理想与现实 来,他二哥就好好跟大家唠嗑唠嗑这《选择》 选择音乐剧 几句话概括我们的故事主线&#x…

什么是IEGT?

1980年前后,通用公司的B•贾扬•巴利加发明了IGBT,解决了当时MOSFET和普通双极功率晶体管无法解决的问题。但随着产品的发展,大家发现了这种新型器件拥有静态损耗的问题。于是东芝半导体的工程师就在上个世纪九十年代率先实现了栅极注入增强&…

关于【腾讯 TEG云架构平台部( 云架平) 存储组】

这算是个简单的辟谣帖吧 本人21届新人,入职快半年了,之前也在这边实习过半年,几乎不怎么看脉脉,但最近看到一些黑帖,本不想回复,但是考虑到自己也是应届生过来的,刚拿到offer肯定忍不住想从各方…

Carla自动驾驶仿真三:Traffic Manager交通管理器详解

CARLA Traffic Manager 一、什么是Traffic Manager1、Traffic Manager简介2、Traffic Manager框架3、Traffic Manager模块 二、Traffic Manager控制方法1、TM控制交通参与者的自动驾驶的规则2、TM控制交通参与者行为的API摘要3、TM控制交通参与者行为的API 三、Traffic Manager…

[carla入门教程]-5 使用ROS与carla通信

本专栏教程将记录从安装carla到调用carla的pythonAPI进行车辆操控并采集数据的全流程,带领大家从安装carla开始,到最终能够熟练使用carla仿真环境进行传感器数据采集和车辆控制. 第五节 使用ros与carla通信 本小节的主要内容是介绍carla中的如何使用ros进行通信. 章节内容介…

CARLA安装记录(二)

安装好显卡驱动后,接下来的步骤是安装Unreal Engine。我的操作系统是Ubuntu 18.04 系统要求 Ubuntu 18.04。CARLA兼容Ubuntu 16.04及之前版本,但虚幻引擎正常工作需要合适的编译器。至少130GB磁盘空间。CARLA会占用大约31GB的空间,而虚幻引…