鉴源论坛·观通丨轨交软件测试技术

news2024/10/5 12:43:39

作者 | 刘艳青 上海控安安全测评部测试经理

版块 | 鉴源论坛 · 观通

引语:第一篇对轨交信号系统从铁路系统分类和组成、城市轨交系统分类和组成、城市轨交系统功能、城市轨交系统发展方面做了介绍;第二篇从信号基础的讲述了信号机、转辙机、轨道电路等设置原则和含义;第三篇从轨交系统的安全性设计的必要性、控制设计、需求分析以及实现等方面进行分析;第四篇重点从联锁系统的原理方面进行阐述;第五篇从轨交软件测试过程管理分析;本文将从轨交软件的测试技术入手进行讲解。

01

软件开发过程简介

基本活动:为了保证开发能够实现任务的要求而必须完成的工作活动。

支持活动:为了保证开发过程按照既定的体系要求而开展的管理活动。

其他管理活动:为了确保软件开发过程的风险、保密、安全,与利益相关方、体系持续改进等工作而需要实施的管理活动。

图一.png

图 1

项目策划:

承办方接收到交办方的软件研制任务书时为软件立项,应为实施本规范所要求的活动和软件研制任务书中其他有关软件需求所要求的各项活动制定软件开发计划。该计划应与系统级策划一致,计划应以软件项目估计为基础。计划包括估计工作产品和任务的属性,确定需要的资源,协商承诺,产生进度表,以及标识和分析项目风险,制定测量、数据管理、评审、和利益相关方的协调计划等。

为了制定软件开发计划可能有必要反复进行这些活动。根据软件开发计划提供实施和控制软件项目活动的基础,而软件项目活动处理对项目交办方的承诺。项目进行中,软件开发计划常因下列情况而需修订:需求和承诺更改、不准确的估计、纠正措施和过程更改。

其结果为承办方负责完成的软件开发计划,开发计划中应包括估计报告。软件质量保证计划和软件配置管理计划一般合并在软件开发计划中,必要时,可以分别编制,但应在软件开发计划中说明理由。

支持活动:

a) 软件配置管理;

b) 软件产品评价;

c) 软件质量保证;

d) 纠正措施;

e) 评审;

f) 测量与分析。

其他管理活动:

a) 风险管理;

b) 保密有关活动;

c) 分承办方管理(即分承制方管理);

d) 与独立验证和确认机构的联系;

e) 与相关开发方的协调;

f) 项目过程的改进。

这些活动可以重叠或迭代应用,不必按上面列出的次序执行。针对具体软件,可对这些活动进行裁剪,软件开发过程及对这些活动进行的裁剪,各单位组织级应制定裁剪指南,项目级应在软件开发计划中描述。

02

软件内部测试

2.1 如何做软件内部测试

Why:

软件测试的目的是为了节省后期修改软件问题资金和进度。

第一,是为了确认软件的质量是否满足设计要求,一方面是为了确认软件做了期望做的事情;另一方面是确认软件是否以正确的方式来做了事情;(做了三级中规定的验证和确认的测试部分的工作);

第二,提供质量信息,为开发组提供质量相关信息;

第三,对软件和开发进行评价。

When:

软件测试一般是在完成软件实现后进行测试,但根据具体实施,最佳实践是在软件实现过程中完成了产品模块的编码后,及时进行测试工作能有效提高软件测试效率,集成测试工作可结合软件代码。

What:

软件测试就是为了验证和确认软件是否按照设计要求完成了既定的要求。

Who:

单元测试和集成测试工作一般由软件开发人员进行验证工作,配置项合格性测试和系统合格性测试一般由专业的测试队伍进行软件测试,配置项合格性测试由项目开发团队的测试组织进行,系统合格性测试一般由软件任务下达方组织实施。

How:

单元测试一般要开展代码审查、静态分析、逻辑测试、功能测试、边界测试;

集成测试一般要开展功能测试、接口测试和逻辑测试;

配置项合格性测试一般要开展文档审查、代码审查、静态分析、功能测试、性能测试、接口测试和余量测试、边界测试、人机界面测试、安全性测试、恢复性测试和安装性测试等;系统合格性测试要求和配置项合格性测试的类型基本一致。

图二.png

图 2

2.2 测试的工作流程

确定测试的对象和测试目的 → 明确测试依据 → 确定进入时机 → 确定测试类型和测试策略 → 规范测试步骤 → 明确测试的技术要求 → 建立结束准则 → 确定测试工作产品。

03

单元测试技术的要求

3.1 总体要求

a)应建立测试软件单元的环境,如桩模块和驱动模块;

b)对软件设计文档规定的软件单元的功能、性能、接口等逐项进行测试;

c)软件单元的每个特性应至少被一个正常测试用例和一个异常测试用例覆盖;

d)测试用例的输入应至少包括有效等价类值、无效等价类值和边界数据值;

e)满足语句覆盖率要达到100%的要求;

f)满足分支覆盖率要达到100%的要求;

g)满足输出数据及其格式的要求。

3.2 单元测试-代码审查的要求

a)代码审查应是人工阅读代码的结果,可以借助辅助工具予以辅助分析,但不应以工具扫描结果作为代码审查结果;

b)代码审查的内容包括:程序代码的控制流程、数据处理是否满足设计要求;程序代码的编程语言使用是否正确、规范、安全、可靠;程序代码是否满足软件可靠性安全性设计准则的相关要求;

c)代码审查应建立代码审查单,依据使用语言、软件特点,细化代码审查内容,检查的内容包括:命名规则检查、代码格式检查、内存使用检查、表达式判断逻辑检查、程序可读性检查、程序多余物检查、寄存器使用情况检查等内容。

表一.png

表 1

3.3 单元测试-静态分析的要求

静态分析应明确分析工具的名称和版本。

静态分析的内容包括:程序结构分析;数据结构分析;控制流程分析;程序质量度量。

静态分析结果的使用:为代码审查提供必要的信息为单元测试提供必要的信息;提供程序代码质量度量信息。

质量度量指标要求:模块的平均圈复杂度不大于10模块圈复杂度大于20的比例不大于20%;模块最大圈复杂度不大于80;源程序的总注释率不小于20%模块的平均规模不大于200行。

根据软件编程语言的具体特点开展控制流分析、数据流分析、表达式分析。

表二.png

表 2

3.4 单元测试—逻辑测试

a)语句覆盖率(SC)测试;

b)分支覆盖率(DC)测试;

逻辑测试主要通过动态运行测试用例,统计测试用例的运行路径,计算覆盖率。

语句覆盖率是指在运行完成所有设计的测试用例后,软件程序对每一条语句的覆盖百分比;

注:语句覆盖率 = (至少被执行一次的语句数量)/(可执行的语句总数)

分支覆盖率是指在运行完成所有设计的测试用例后,使得程序中每个判断至少取真分支和假分支一次,即判断的真假值均曾被满足的百分比。

注:分支覆盖率=(判定结果被评价的次数)/(判定结果的总数)

3.5 单元测试—结束准则

a)软件功能与设计说明一致;

b)控制流程正确;

c)语句覆盖率和分支覆盖率达到规定的覆盖率;

d)质量保证完成对内部测试的文档、程序是否符合规范的要求等符合性检查;

e)单元测试文档、代码等配置项进入受控库管理。

04

总 结

本文从为什么要做测试、什么时候是合适的介入测试的时机、如何做单元测试几个方面介绍了测试技术。测试不是一蹴而就,也不是可以跟着理论走一遍下了,就可以很好地做好测试这门技术。需要测试人员结合测试理论,系统全面地了解项目,多方面地挖掘测试本身的侧重点,结合项目的实际,挖掘项目自身的风险点。

参考文献:

[1] GB-T 15532-2008 计算机软件测试规范.

http://www.doc88.com/p-7394374075165.html

[2]  GB T 33783-2017 可编程逻辑器件软件测试指南.

 https://wenku.so.com/d/7e5129fc816015b21f1d0f3c901d307b

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

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

相关文章

7.1 动手实现AlexNet

AlexNet引入了dropput层 代码 import torch from torch import nn from d2l import torch as d2lnet nn.Sequential(# 样本数为1,通道数为96,11x11的卷积核,步幅为4,减少输出的高度和深度。 LeNet的通道数才6,此处96,为什么要增加这么多通…

常用开源的弱口令检查审计工具

常用开源的弱口令检查审计工具 1、SNETCracker 1.1、超级弱口令检查工具 SNETCracker超级弱口令检查工具是一款开源的Windows平台的弱口令安全审计工具,支持批量多线程检查,可快速发现弱密码、弱口令账号,密码支持和用户名结合进行检查&am…

C#与C++交互(2)——ANSI、UTF8、Unicode文本编码

【前言】 我们知道计算机上只会存储二进制的数据,无论文本、图片、音频、视频等,当我们将其保存在计算机上时,都会被转成二进制的。我们打开查看的时候,二进制数据又被转成我们看得懂的信息。如何将计算机上的二进制数据转为我们…

Android 实现 RecyclerView下拉刷新,SwipeRefreshLayout上拉加载

上拉、下拉的效果图如下&#xff1a; 使用步骤 1、在清单文件中添加依赖 implementation ‘com.android.support:recyclerview-v7:27.1.1’ implementation “androidx.swiperefreshlayout:swiperefreshlayout:1.0.0” 2、main布局 <LinearLayout xmlns:android"http…

洛阳Geotrust旗下有RapidSSL https证书吗

Geotrust是知名的CA认证机构&#xff0c;旗下的https数字证书产品众多&#xff0c;Geotrust的数字证书具有高度的兼容性和可信度&#xff0c;得到了全球用户的广泛认可和信赖。Geotrust是一家全球领先的数字证书颁发机构&#xff0c;提供多种数字证书服务&#xff0c;包括SSL证…

数据库作业(一)

建立一张表&#xff1a; 表里面有多个字段&#xff0c;每一个字段对应一种数据类型 注意&#xff1a;表名&#xff0c;字段名都要起的有意义 1、首先mysql -uroot -p 进入MySQL 2、选择一个数据库并使用 3、创建一张表定义多个字段使用所有数据类型&#xff0c;数字&…

汇川运动控制产品故障排查

针对汇川伺服产品&#xff08;IS600/IS620&#xff09;的基本检测和一些出现频率较高的故障进行检测判断方法&#xff0c;适用于服务人员在现场排查/判断机器故障时&#xff0c;准确定位问题。 一、简单故障排查 注1&#xff1a;接线错误&#xff1a;1、UVW相序是否正确&#…

微软创新项目Project Rumi:多模态AI项目助力理解人类意图

8月7日 消息:Project Rumi 是微软的一个项目&#xff0c;旨在通过解决大型语言模型&#xff08;LLM&#xff09;理解非语言线索和上下文细微差别的局限性&#xff0c;增强 LLM 的能力。 该项目将非语言线索融入基于提示的 LLM 交互中&#xff0c;以提高交流的质量。研究人员使…

【零基础??天速成 Java】Day2 - 初识面向对象

目录 前言 1. 可变参数的使用 2. 构造器 3. 包 1、包的创建 2、包的使用 3、包的命名规范 4、常用的包 5. 访问修饰符 6. 继承 7. super 关键字 8. 方法重写 Override 写在最后&#xff1a; 前言 我的 java 基础学习&#xff0c;跟的是韩顺平的 java 课程~ 本篇…

MySQL: Failed to Connect to MySQL at XXXX:3306 with user root

客户端连接MySQL服务器&#xff0c;报错&#xff1a; 解决方案&#xff1a; 没有让root用户远程登录&#xff0c;需要设置&#xff1b; 进入MySQL服务器&#xff0c;修改一下 # mysql -h localhost -uroot -P3306 -p12345678 mysql: [Warning] Using a password on the comm…

elk开启组件监控

elk开启组件监控 效果&#xff1a; logstash配置 /etc/logstash/logstash.yml rootnode1:~# grep -Ev "^#|^$" /etc/logstash/logstash.yml path.data: /var/lib/logstash path.logs: /var/log/logstash xpack.monitoring.enabled: true xpack.monitoring.elasti…

融云荣登36氪WISE2023「全球化最佳基础设施」榜单

8 月 17 日&#xff08;周四&#xff09;&#xff0c;融云将带来直播课-《北极星如何协助开发者排查问题与预警风险&#xff1f;》欢迎点击报名~ 7 月 25 日&#xff0c;由 36 氪主办的“WISE 2023 全球化价值大会”在上海举行。大会汇聚产业力量&#xff0c;广邀不同领域的从业…

技术 SEO: 初学者指南2023

在当今数字时代&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;对于网站的成功至关重要。无论你是个人博客、小型企业还是大型电子商务网站&#xff0c;通过优化你的技术方面&#xff0c;可以提升你的网站在搜索引擎结果页面上的排名&#xff0c;吸引更多的有针对性的访问…

优化团队沟通:应对成员间不和谐的策略

一、理解团队沟通的重要性 深入了解团队沟通的含义 团队沟通并不仅仅是团队成员之间的信息交换。它是一个更为复杂的过程&#xff0c;涉及到信息的解码、理解、反馈&#xff0c;以及相互之间的情绪表达和理解。一个高效的团队沟通环境是能够促进所有成员之间清晰、有效、及时…

使用 API Gateway Integrator 在 Quarkus 中实施适用于 AWS Lambda 的 OpenAPI

AWS API Gateway 集成使得使用符合 OpenAPI 标准的 Lambda Function 轻松实现 REST API。 关于开放API 它是一个 允许以标准方式描述 REST API 的规范。 OpenAPI规范 (OAS) 为 REST API 定义了与编程语言无关的标准接口描述。这使得人类和计算机都可以发现和理解服务的功能&am…

Javascript 从入门到精通之JavaScript属性

一、什么是属性? 属性是一个JavaScript对象关联的值。一个JavaScript对象是一个无序的性质集合&#xff0c;属性通常可以更改、添加和删除&#xff0c;但有些只读。 二、访问JavaScript属性 访问对象属性的语法是(3种表现形式): 第一种 objectName.property // person.ag…

哪种模式ip更适合你的爬虫项目?

作为一名爬虫程序员&#xff0c;对于数据的采集和抓取有着浓厚的兴趣。当谈到爬虫ip时&#xff0c;你可能会听说过两种常见的爬虫ip类型&#xff1a;Socks5爬虫ip和HTTP爬虫ip。但到底哪一种在你的爬虫项目中更适合呢&#xff1f;本文将帮助你进行比较和选择。 首先&#xff0c…

CompletableFuture基本概念及用法

CompletableFuture继承于java.util.concurrent.Future&#xff0c;它本身具备Future的所有特性&#xff0c;并且基于JDK1.8的流式编程以及Lambda表达式等实现一元操作符、异步回调以及事件驱动编程的异步类&#xff0c;可以用来实现多线程的串行关系&#xff0c;并行关系&#…

I.MX6ULL_Linux_驱动篇(45)linux INPUT子系统

按键、鼠标、键盘、触摸屏等都属于输入(input)设备&#xff0c; Linux 内核为此专门做了一个叫做 input子系统的框架来处理输入事件。输入设备本质上还是字符设备&#xff0c;只是在此基础上套上了 input 框 架&#xff0c;用户只需要负责上报输入事件&#xff0c;比如按键值、…

Zotero+坚果云解决存储空间不足

Zotero实现同步有三种思路&#xff1a;①zotero自带同步&#xff08;文件同步方式选择Zotero&#xff09;&#xff1b;②zotfile坚果云网盘同步&#xff1b;③zotero选项勾选文件同步坚果云WebDAV同步。由于第一种只有300M使用空间&#xff0c;使用一段时间就会提示存储空间不足…