科技>电子技术>电子技术应用
测试系统构建技术 ——基于C++和Qt的框架软件  

测试系统构建技术 ——基于C++和Qt的框架软件  "

作者:赵文波
ISBN:9787121458255
定价:¥78.0
字数:467千字
页数:292
出版时间:2023-07
开本:16开
版次:01-01
装帧:
出版社:电子工业出版社
简介

本书介绍测试系统构建领域通用测试系统的设计实现,并使用C++和Qt技术实现通用化的测试系统框架,内容包括测试系统行业背景、具体技术、具体的设计实现等。全书共4个部分。第1部分为测试系统框架,介绍行业背景、通用测试系统、C++和Qt技术。第2部分为关键技术,介绍实现通用测试系统的几个核心技术。第3部分为工程实践,介绍一套通用测试系统的具体设计与实现。第4部分为测试信息化,介绍测试系统领域的测试信息化建设。本书既可作为研制测试系统的参考书,也可作为学习Qt及框架软件设计的参考书。

前言

序 一 我与作者相识在2015年,当时他已参与航天地面测试系统开发多年,是公司地面测试系统的资深技术人员。后来,作者另立门户,开始创业,而我也南下深圳开始新的征程。但这么多年来,我们一直保持沟通,时常还交流一些技术问题。 2022年8月初,接到作者的消息让我为他的书写推荐序言。此时,我刚刚带领团队完成公司一个核心产品自动化测试系统的开发,虽属巧合,却也折射出测试在工程研制中的重要性,于是我欣然答应。 本书介绍了基于C++和Qt的测试系统框架,它是作者十多年的航天地面测试系统开发经验的结晶。这些年,作者一直深耕航天地面测试领域,身影遍及北京、上海、西安、长沙等地,参与过大到载人航天分系统的测试,小到微纳卫星的测试。作者是一个善于学习和总结的人,我清晰地记得当初他在从MFC到Qt的转换过程中,像发现新大陆一样在很短的时间里就掌握了Qt的开发,并对Qt的自定义插件功能大加赞赏,称其为地面测试软件开发者的福音。 众所周知,安全、稳定和可靠对航天技术至关重要,因此航天地面测试领域采用的软件技术都经过长时间的验证。20年前,MFC或Delphi是航天软件领域中为数不多的选择;而近10年来,Qt快速发展,以其便捷的UI(User Interface,用户界面)开发模式和稳定、可靠的特点,一在航天软件领域中崭露头角就立刻广受欢迎。本书站在一个较高的视角,先将测试系统的需求进行分解,然后投射到Qt开发的功能模块上,既有设计模式、架构设计的内容,又有手把手教你如何进行技术选型的章节。 本书对于测试系统开发过程中经常碰到的问题还提供了参考答案。本书虽立足于通用测试系统的开发,但又远不止于此,还包含了作者对通用测试系统开发理念的独特理解,就像把一个复杂的测试系统一一拆解,展现给读者。书中的理论、概念、实践和方法易懂易学,对测试系统开发从业者具有方法论和实践意义的指导作用。让我觉得难能可贵的是,书中明确将用户界面友好的观点提到很高的高度。 同时,书中也对测试系统的未来发展保持关注和跟进,是一本值得一读的好书。 孙守贤 作者的老同事 序 二 近几年,常与作者一起爬北京的西山。人生如爬山,爬山现性情:爬山气不喘者,有气魄;爬山不喊累者,有毅力;爬山不退缩者,有耐性。职场也如爬山,要认准一条道路,矢志不渝,坚持奋斗,不达目标誓不罢休。 作者在测试系统领域已经深耕十余年。有一天,他告诉我他想出一本书,把自己在测试系统方面的技术做个总结,希望我给他写个序,我欣然同意。 记得数年前,某航天发射基地研制火箭自动判读系统的产品,本书作者作为该项目的主要研发人员之一,参与了该项目的设计、开发及运行保障工作。他在基地夜以继日地加班加点工作,解决了一系列重要技术问题,保障了多次火箭发射过程中数据判读系统正常运行,为提高我国航天发射基地火箭发射判读系统自动化水平做出了应有贡献,得到了客户的肯定。 作者参与了多种航天器(火箭、卫星、飞船)测试系统的研制,在公司的“通用测试平台”的应用推广过程中积累了丰富的经验,对测试系统平台化、自动化、智能化、部署快速化等方面有很多心得,因而写成本书。 我国航天系统历来重视航天器的测试和试验工作。一个好的测试系统,是检验航天器能否符合设计要求的重要基础。从单机测试、分系统测试、系统联试,到总装厂房测试、发射架测试、发射过程数据判读、航天器在轨数据判读等环节都离不开测试系统。在不同的阶段,系统的称呼不同、连接方式不同,但始终是围绕遥控、遥测数据展开的,遥控、遥测数据的打包、解包、判读是测试系统的核心流程。在与被测对象交互方面,有时,通过接口线缆收发;有时,通过无线通道收发;有时,通过地面以太网进行转发:这些收发通道构成了外围总线接口。总线接口与测控数据的收发构成了测试系统的基础核心。但是,一个真正实用、好用的测试系统还需要充分考虑系统的自动化程度、智能化程度、可复用水平、可快速部署等方面的设计。 这是一部关于总线测试系统的工程实践性很强的著作。本书并未长篇大论地阐述原理、概念,而是直接提供测试系统设计的“干货”,非常适合作为从事本行业研发的一线技术人员的参考书。 作者在书中对测试系统框架进行了非常详尽的介绍,内容包括系统组成、总线接口支持、动态创建技术、组态软件技术、脚本引擎技术等核心技术,并结合具体的开发语言进行讲解。此外,书中还用大量篇幅针对工程实践技术细节进行阐述,并给出具体开发模块、重要接口的设计说明,具有一定技术能力的读者完全可以按照书中的方法及例子一步一步地实现高水平的总线测试系统。 大型测试系统通常是使用单位信息化建设的一部分,作者在书中也介绍了如何与信息化建设衔接,达到全单位级共享的目的,产生知识库,使测试系统发挥更大的作用。 齐伟刚 北京国科环宇研发总监

目录

第1部分 测试系统框架 第1章 测试系统 1 1.1 概述 2 1.1.1 测试 2 1.1.2 构建方法、步骤 2 1.1.3 测试的原理 3 1.1.4 应用价值 4 1.2 结构组成 5 1.2.1 硬件部分 5 1.2.2 软件部分 6 1.2.3 线缆 6 1.3 功能组成 7 1.3.1 基本功能 7 1.3.2 功能齐全的测试系统 7 1.3.3 自动化测试 8 1.3.4 一个误区 8 1.4 涉及的技术 9 1.4.1 总线通信技术 9 1.4.2 计算机软件技术 11 1.4.3 程控仪器仪表 12 1.4.4 硬件模块—数据采集、输出 14 1.5 实现 15 1.5.1 虚拟仪表 15 1.5.2 TestStand 17 1.5.3 C++/Java/C# 17 第2章 通用测试系统 18 2.1 通用化 18 2.1.1 面向的组织 18 2.1.2 实现通用化的方法 18 2.2 设计实现 19 2.2.1 功能配置 20 2.2.2 测试系统框架 21 2.3 应用阶段 23 2.3.1 研制阶段—调试测试 24 2.3.2 测试阶段—测试验证 26 2.3.3 生产阶段—自动化测试 27 2.3.4 测试信息化建设 29 第3章 C++和Qt 31 3.1 C++ 31 3.1.1 C++介绍 31 3.1.2 选择C++ 33 3.1.3 C++与Java对比 34 3.1.4 C++的缺陷 35 3.2 Qt 36 3.2.1 Qt的基本特点 36 3.2.2 Qt的两条技术线 38 3.2.3 Qt与MFC对比 40 3.2.4 Qt与其他界面库对比 40 3.3 使用Qt 41 3.3.1 开发环境 42 3.3.2 工程思路 44 3.3.3 子类化 45 3.3.4 QObject 47 3.3.5 QWidget 47 3.3.6 QtTest 48 3.4 基础架构 49 3.4.1 B/S和C/S 49 3.4.2 Web应用 49 3.4.3 本地应用程序 51 第2部分 关 键 技 术 第4章 面向接口编程 53 4.1 程序设计 53 4.1.1 面向过程和面向对象 54 4.1.2 面向接口编程 56 4.2 建模工具—UML 59 4.2.1 类图 59 4.2.2 序列图 59 4.2.3 绘图工具 60 4.3 Qt中面向接口编程 60 4.4 几个设计模式 61 4.4.1 工厂模式 62 4.4.2 观察者模式 64 4.4.3 总结 66 第5章 动态创建技术 68 5.1 动态创建 68 5.1.1 动态库 68 5.1.2 运行时加载动态库 69 5.1.3 创建对象的方法 69 5.2 C++动态创建 71 5.2.1 原理 71 5.2.2 举例 72 5.3 Qt动态创建 77 5.3.1 Qt自定义控件接口 78 5.3.2 实现原理 79 5.3.3 Qt插件 81 5.4 如何应用 83 第6章 组态软件技术 85 6.1 组态软件 85 6.1.1 测试系统中的组态 85 6.1.2 技术基础 87 6.2 Qt组态支持 88 6.2.1 Qt元对象系统 88 6.2.2 Qt属性系统 89 6.3 Qt自定义控件 93 6.3.1 Qt设计师 93 6.3.2 自定义控件工程 94 6.3.3 Qt设计师控件集合类 97 6.3.4 控件抽象接口类 98 6.3.5 自定义控件—排序列表 99 6.4 Qt动态UI 101 6.4.1 简单的方法 101 6.4.2 QUiLoader 103 6.4.3 QFormBuilder 104 6.5 组态框架软件 104 6.5.1 分析 105 6.5.2 子类化QMdiArea 106 6.5.3 子类化QToolBox 107 6.5.4 子类化QTreeWidget 108 6.5.5 框架软件 109 6.6 重点是什么 111 第7章 脚本引擎技术 112 7.1 脚本语言 112 7.2 脚本引擎 114 7.3 Google V8脚本引擎 115 7.3.1 编译Google V8 116 7.3.2 使用Google V8 116 7.3.3 脚本调用C++函数 119 7.3.4 封装Google V8 122 7.4 QtScript脚本引擎 127 7.4.1 执行脚本 128 7.4.2 在脚本中调用C++ 128 7.4.3 C++调用脚本 130 7.5 性能对比 131 7.5.1 Google V8性能测试 131 7.5.2 QtScript性能测试 132 7.5.3 Python性能测试 133 7.5.4 结论 134 第3部分 工 程 实 践 第8章 总线仿真测试平台 135 8.1 面向的领域 136 8.1.1 总线接口测试 136 8.1.2 仿真测试 136 8.1.3 硬件运行环境 138 8.2 软件构成 139 8.3 功能组成 141 8.4 特点 142 8.4.1 测试建模—更加通用 142 8.4.2 测试脚本—自动化测试 143 8.4.3 更加好用 145 8.5 优势 147 第9章 系统架构设计 149 9.1 设计理念 149 9.1.1 轻量化 149 9.1.2 简便化 150 9.1.3 自动化 150 9.1.4 终极目的—好用 151 9.2 技术选型 152 9.2.1 硬件平台 152 9.2.2 C++和Qt 152 9.2.3 JavaScript 153 9.3 整体架构 153 9.3.1 概念设计 154 9.3.2 架构图 155 9.3.3 软件项 157 9.3.4 数据流 157 9.4 测试模型 159 9.4.1 问题域 159 9.4.2 解决之道 161 9.4.3 组成 163 9.4.4 “造轮子” 169 9.4.5 电子化 172 9.5 功能设计 174 9.5.1 软件功能分解 175 9.5.2 插件 177 9.6 数据存储设计 179 9.6.1 文件存储 179 9.6.2 数据库存储 179 第10章 软件设计 181 10.1 模块清单 181 10.2 框架接口设计 183 10.2.1 分析 183 10.2.2 类图 184 10.2.3 插件接口类 184 10.2.4 测试执行框架的接口 189 10.2.5 测试服务框架的接口 193 10.3 序列图 194 10.4 其他设计 194 10.4.1 外部接口 194 10.4.2 存储结构 195 10.4.3 时间同步和心跳包等 197 10.5 公共库 197 10.5.1 测试模型 197 10.5.2 动态创建模块 201 10.5.3 文件存储系统 202 10.5.4 JsV8模块 203 10.5.5 ATML模块 204 10.5.6 公共界面 205 10.5.7 编写单元测试 207 10.6 Qt项视图技术—MVC 207 第11章 测试执行框架 211 11.1 类图及组成 211 11.2 通信服务模块 212 11.2.1 类图 212 11.2.2 实现框架服务接口 213 11.2.3 清单 213 11.2.4 接口类 214 11.3 前台界面模块 216 11.3.1 主框架类MainWindow 216 11.3.2 主框架—公共槽函数 217 11.3.3 命令响应类 219 11.3.4 通信调试窗口 219 11.3.5 接口属性窗口 220 11.4 序列图 221 11.5 Qt拖曳技术 221 第12章 测试服务框架 224 12.1 设计 224 12.1.1 性能设计 224 12.1.2 界面设计 225 12.1.3 插件机制 226 12.1.4 类清单 227 12.1.5 序列图 227 12.2 内部接口类 228 12.3 框架接口类 229 12.3.1 设备管理接口 229 12.3.2 资源接口 230 12.4 其他类 231 12.4.1 对象管理器 231 12.4.2 主程序 232 第13章 控件系统 234 13.1 设计实现 234 13.1.1 注册机制 235 13.1.2 获取实时数据 236 13.2 控件接口 236 13.2.1 默认实现 236 13.2.2 泛型模板类 237 13.3 序列图 237 13.4 控件举例 238 13.4.1 数值显示框控件 239 13.4.2 实时数据表格 241 13.4.3 实时曲线图 243 13.4.4 命令按钮控件 244 13.5 属性窗口插件 248 13.5.1 接口类 249 13.5.2 通用的SCPI模块 250 第14章 通信模块 252 14.1 实现原理 252 14.1.1 模块标识符sId 253 14.1.2 注册机制 254 14.2 接口类 254 14.2.1 属性配置接口IConfig 255 14.2.2 总线读写接口IIO 256 14.2.3 IDrive的默认实现 257 14.3 序列图 257 14.4 插件举例 258 14.4.1 数据生成器插件 258 14.4.2 问答通信模块 262 第4部分 测试信息化 第15章 测试信息化建设 265 15.1 Web技术 265 15.1.1 基础技术 266 15.1.2 库、框架、概念 266 15.2 信息化 267 15.3 测试信息化 268 15.3.1 整体架构 268 15.3.2 应用层 269 15.3.3 数据服务层 270 15.4 热门概念 270 第16章 总结 272 16.1 工程实践 272 16.2 软件研发知识图谱 273 16.3 软件工程 275 16.4 待改进项 275 附录A 应用案例 277 参考文献 278

作者简介

编辑推荐

作者寄语

电子资料

www.luweidong.cn

下一个