CN112699037A - 一种用于二取二系统的软件测试方法 - Google Patents
一种用于二取二系统的软件测试方法 Download PDFInfo
- Publication number
- CN112699037A CN112699037A CN202011619578.7A CN202011619578A CN112699037A CN 112699037 A CN112699037 A CN 112699037A CN 202011619578 A CN202011619578 A CN 202011619578A CN 112699037 A CN112699037 A CN 112699037A
- Authority
- CN
- China
- Prior art keywords
- data
- cpua
- cpub
- command
- stub
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3644—Software debugging by instrumenting at runtime
Abstract
本发明涉及一种用于二取二系统的软件测试方法,该方法包括以下步骤:步骤S1:PC机通过网络发送命令信息给嵌入式系统的CPUA和CPUB;步骤S2:在每个嵌入式软件CPUA和CPUB中,定义临时的数据缓存区;步骤S3:在主任务中,分别将临时缓存区内的数据发给对系的CPU,收到对系数据存在g_Other_g_SyncTagBuf中;步骤S4:在更新任务中,轮询本系g_SyncTagBuf中的数据,并判断是否需要CPUA和CPUB使用或者删除相同的桩数据,如果是使用,则执行相应使用操作,如果是删除,则执行步骤S5;步骤S5:删除相应的桩数据。与现有技术相比,本发明具有提高了自动化测试的正确率等优点。
Description
技术领域
本发明涉及列车信号控制系统,尤其是涉及一种用于二取二系统的软件测试方法。
背景技术
铁路中,为了提高安全性,很多嵌入式系统都是采用二取二,例如输入输出单元,采用两个CPU(中央处理器),通过对两个CPU的结果进行比较,保证了输入输出的数据安全性。还有安全平台,平台本身采用二取二的架构,保证了上层数据的一致性。
在铁路系统中,在对二取二嵌入式系统进行测试时候,往往采用PC机发送命令,嵌入式系统接收命令后,执行PC机发送的命令的方式进行测试。但是由于PC机发送命令采用UDP或者TFTP等其他网络协议,在发送命令时,由于网络延迟或者网络丢包,会造成两个CPU收到命令时间不同,这样一个CPU执行了错误模拟,另外一个CPU没有执行错误的模拟,可能造成测试结果的不同,如图1。
发明内容
本发明的目的就是为了解决上述现有二取二系统测试过程中,由于网络延迟,导致桩代码不能同时打开或者关闭的问题而提供一种用于二取二系统的软件测试方法。
本发明的目的可以通过以下技术方案来实现:
根据本发明的一个方面,提供了一种用于二取二系统的软件测试方法,该方法包括以下步骤:
步骤S1:PC机通过网络发送命令信息给嵌入式系统的CPUA和CPUB;
步骤S2:在每个嵌入式软件CPUA和CPUB中,定义临时的数据缓存区,在收到网络数据后,CPUA和CPUB将收到的数据保存在临时数据缓存区;
步骤S3:在主任务中,分别将临时缓存区内的数据发给对系的CPU,收到对系数据存在g_Other_g_SyncTagBuf(另一通道缓存区)中;
步骤S4:在更新任务中,轮询本系g_SyncTagBuf(本通道缓存区)中的数据,并判断是否需要CPUA和CPUB使用或者删除相同的桩数据,如果是使用,则执行相应使用操作,如果是删除,则执行步骤S5;
步骤S5:删除相应的桩数据。
作为优选的技术方案,所述的步骤S1中的消息格式为:
其中m_tagName为消息包括桩的名字,m_bOpen为打开还是关闭桩,m_bSync为是否要在CPUA和CPUB同时打开,m_data为数据。
作为优选的技术方案,所述的步骤S4中的执行相应使用操作具体为:
步骤S4-1:如果不需要同步执行收到的桩,则CPUA和CPUB分别将桩复制到全局区域中,在CPUA和CPUB的其他任务中,当需要用到某个桩时候,从g_switchTable(桩列表)中获取,不需要与对系使用的数据相同;
步骤S4-2:如果需要同步执行收到的桩,在CPUA和CPUB会分别将自己的临时数据区域的数据和由对系发送的数据做比较。
作为优选的技术方案,所述的步骤S4-2中将自己的临时数据区域的数据和由对系发送的数据做比较,具体为:
步骤S4-2-1:如果一致,则将数据同步到g_switchTable,保证CPUA和CPUB在使用g_switchTable中的数据时,两个CPU使用的相同的数据;
步骤S4-2-2:如果不一致,则不更新,继续循环等待CPUA和CPUB都接收到数据。
作为优选的技术方案,若所述的步骤S4-2-2中不一致的周期超过设定阈值,则发送不同步命令给PC端,在PC端收到不同步命令后,重新发送同样的命令给CPUA和CPUB,然后重新执行步骤S2。
作为优选的技术方案,所述的设定阈值为5。
作为优选的技术方案,在更新g_switchTable时,会将g_switchTable里面的需要更新的tagname(桩名称)与已有的进行查询,如果相同,则不再进行添加。
作为优选的技术方案,所述的步骤S5:删除相应的桩数据具体为:
步骤S5-1:不需要同步,在更新任务中,轮询g_switchTable中的数据,找到需要删除的tagname,将其删除,不需要CPUA和CPUB同步删除;
步骤S5-2:如果需要同步,在CPUA和CPUB会分别将自己的临时数据区域的数据和由对系发送的数据做比较,是否临时数据区内都收到删除桩命令。
作为优选的技术方案,所述的步骤S5-2具体为:
步骤S5-2-1:如果CPUA和CPUB都收到删除命令,在更新任务中,轮询g_switchTable中的数据,找到需要删除的tagname,将其删除,保证CPUA和CPUB同步删除;
步骤S5-2-2:如果不一致,不删除,继续等到CPUA和CPUB都接收到数据。
作为优选的技术方案,所述的步骤S5-2-2中,当5个周期还是为不一致,则发送不同步命令给PC端,在PC端接收到不同步命令后,可重新发送同样的命令给CPUA和CPUB,然后重新执行步骤S5。
与现有技术相比,本发明具有以下优点:
1)本发明设计可实现二取二系统动态同时开桩或关桩,减少因为桩导致的二取二不一致;
2)本发明可以在当个系统中开桩或者关桩;
3)本发明适合嵌入式二取二系统,可移植性强;
4)本发明采用了反馈机制,支持自动化测试,提高了自动化测试的正确率。
附图说明
图1为现有软件测试的流程图;
图2为本发明软件测试的流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
为了解决由于网络延迟,造成两个CPU接收命令不同步的情况,需要在嵌入式系统中对两个CPU是否收到命令进行同步;有时需要在单CPU进行发送命令,也不需要同步,针对二取二的系统,此专利设计一种二取二系统的测试方法,保证两系在执行命令时,能够同步执行相同的命令,如图2。
本发明用于二取二系统的软件测试方法,该方法包括以下步骤:
步骤S1:PC机通过网络发送命令给嵌入式系统的CPUA和CPUB,消息格式为:
消息包括桩的名字m_tagName,打开还是关闭桩m_bOpen,是否要在CPUA和CPUB同时打开m_bSync;以及数据m_data。
步骤S2:在每个嵌入式软件CPUA和CPUB中,会定义临时的数据保存区
fault_insert_item g_SyncTagBuf[MAX_OPEN_STUB];
在收到网络数据后,CPUA和CPUB将收到的数据保存在临时数据缓存区;
步骤S3:在主任务中,分别将临时缓存区内的数据发给对系的CPU,收到对系数据存在g_Other_g_SyncTagBuf中;
步骤S4:然后在更新任务中,轮询本系g_SyncTagBuf中的数据,并判断是否需要CPUA和CPUB使用或者删除相同的桩数据,如果是使用,则执行以下步骤,否则执行步骤S5;
步骤S4-1:如果不需要同步执行收到的桩,则CPUA和CPUB分别将桩复制到全局区域fault_insert_item g_switchTable[MAX_OPEN_STUB]中,在CPUA和CPUB的其他任务中,当需要用到某个桩时候,从g_switchTable中获取,不需要与对系使用的数据相同;
步骤S4-2:如果需要同步执行收到的桩,在CPUA和CPUB会分别将自己的临时数据区域的数据和由对系发送的数据做比较;
步骤S4-2-1:如果一致,则将数据同步到g_switchTable,保证CPUA和CPUB在使用g_switchTable中的数据时,两个CPU使用的相同的数据;
步骤S4-2-2:如果不一致,则不更新,继续循环等待CPUA和CPUB都接收到数据;
步骤S4-2-2-1:当CPUA和CPUB接收数据一致时,则将数据同步到g_switchTable;
步骤S4-2-2-2:当5个周期还是不同步,则发送不同步命令给PC端,在PC端收到不同步命令后,可以重新发送同样的命令给CPUA和CPUB,然后重新执行S2;
反馈CPUA和CPUB不同步状态,是方便自动化测试。在自动化测试时,会出现需要CPUA和CPUB同步,可能一系因为网络丢包而导致没有收到,因此加入反馈机制,会减少网络丢包而导致的没有达到预期结果的情况。
为了避免重复添加相同的桩信息,在更新g_switchTable时,会将g_switchTable里面的需要更新的tagname与已有的进行查询,如果相同,则不再进行添加。
步骤S5:删除某个桩时;
步骤S5-1:不需要同步,在更新任务中,轮询g_switchTable中的数据,找到需要删除的tagname,将其删除,不需要CPUA和CPUB同步删除;
步骤S5-2:如果需要,在CPUA和CPUB会分别将自己的临时数据区域的数据和由对系发送的数据做比较,是否临时数据区内都收到删除桩命令;
步骤S5-2-1:如果CPUA和CPUB都收到删除命令,在更新任务中,轮询g_switchTable中的数据,找到需要删除的tagname,将其删除,保证CPUA和CPUB同步删除;
步骤S5-2-2:如果不一致,不删除,继续等到CPUA和CPUB都接收到数据;
步骤S5-2-2-1:当CPUA和CPUB都收到删除桩命令,轮询g_switchTable中的数据,找到需要删除的tagname,将其删除,保证CPUA和CPUB同步删除;
步骤S5-2-2-2:当5个周期还是为不同步,则发送不同步命令给PC端,在PC端接收到不同步命令后,可以重新发送同样的命令给CPUA和CPUB,然后重新执行S5。
具体实施例
PC机发送桩名字为m_tagName:Change_the_Speer_value;m_bOpen=TRUE;m_bSync=TRUE m_data[0]=0x11;
当CPUA和CPUB收到网络消息后,将Change_the_Speer_value的消息放在临时缓存区g_SyncTagBuf[0]中;
在测试主任务中,CPUA会将g_SyncTagBuf[0]发给CPUB,CPU会将g_SyncTagBuf[0]发给CPUA。每个CPU都会有本地缓存数据g_SyncTagBuf[0]和对系缓存数据g_other_SyncTagBuf[0]
当判断m_bSync=TRUE时,需要将本地的g_SyncTagBuf[0]和g_other_SyncTagBuf[0]进行比较:
如果两个都收到Change_the_Speer_value,则将数据同步到g_switchTable,并清空g_SyncTagBuf[0]和g_other_SyncTagBuf[0]内的数据;
如果没有收到,则继续等待,直到g_SyncTagBuf[0]和g_other_SyncTagBuf[0]内的数据相同,
如果在5周期内还不相同,则通知PC端重新发Change_the_Speer_value数据。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种用于二取二系统的软件测试方法,其特征在于,该方法包括以下步骤:
步骤S1:PC机通过网络发送命令信息给嵌入式系统的CPUA和CPUB;
步骤S2:在每个嵌入式软件CPUA和CPUB中,定义临时的数据缓存区,在收到网络数据后,CPUA和CPUB将收到的数据保存在临时数据缓存区;
步骤S3:在主任务中,分别将临时缓存区内的数据发给对系的CPU,收到对系数据存在g_Other_g_SyncTagBuf中;
步骤S4:在更新任务中,轮询本系g_SyncTagBuf中的数据,并判断是否需要CPUA和CPUB使用或者删除相同的桩数据,如果是使用,则执行相应使用操作,如果是删除,则执行步骤S5;
步骤S5:删除相应的桩数据。
3.根据权利要求1所述的一种用于二取二系统的软件测试方法,其特征在于,所述的步骤S4中的执行相应使用操作具体为:
步骤S4-1:如果不需要同步执行收到的桩,则CPUA和CPUB分别将桩复制到全局区域中,在CPUA和CPUB的其他任务中,当需要用到某个桩时候,从g_switchTable中获取,不需要与对系使用的数据相同;
步骤S4-2:如果需要同步执行收到的桩,在CPUA和CPUB会分别将自己的临时数据区域的数据和由对系发送的数据做比较。
4.根据权利要求3所述的一种用于二取二系统的软件测试方法,其特征在于,所述的步骤S4-2中将自己的临时数据区域的数据和由对系发送的数据做比较,具体为:
步骤S4-2-1:如果一致,则将数据同步到g_switchTable,保证CPUA和CPUB在使用g_switchTable中的数据时,两个CPU使用的相同的数据;
步骤S4-2-2:如果不一致,则不更新,继续循环等待CPUA和CPUB都接收到数据。
5.根据权利要求4所述的一种用于二取二系统的软件测试方法,其特征在于,若所述的步骤S4-2-2中不一致的周期超过设定阈值,则发送不同步命令给PC端,在PC端收到不同步命令后,重新发送同样的命令给CPUA和CPUB,然后重新执行步骤S2。
6.根据权利要求5所述的一种用于二取二系统的软件测试方法,其特征在于,所述的设定阈值为5。
7.根据权利要求5所述的一种用于二取二系统的软件测试方法,其特征在于,在更新g_switchTable时,会将g_switchTable里面的需要更新的tagname与已有的进行查询,如果相同,则不再进行添加。
8.根据权利要求1所述的一种用于二取二系统的软件测试方法,其特征在于,所述的步骤S5:删除相应的桩数据具体为:
步骤S5-1:不需要同步,在更新任务中,轮询g_switchTable中的数据,找到需要删除的tagname,将其删除,不需要CPUA和CPUB同步删除;
步骤S5-2:如果需要同步,在CPUA和CPUB会分别将自己的临时数据区域的数据和由对系发送的数据做比较,是否临时数据区内都收到删除桩命令。
9.根据权利要求8所述的一种用于二取二系统的软件测试方法,其特征在于,所述的步骤S5-2具体为:
步骤S5-2-1:如果CPUA和CPUB都收到删除命令,在更新任务中,轮询g_switchTable中的数据,找到需要删除的tagname,将其删除,保证CPUA和CPUB同步删除;
步骤S5-2-2:如果不一致,不删除,继续等到CPUA和CPUB都接收到数据。
10.根据权利要求9所述的一种用于二取二系统的软件测试方法,其特征在于,所述的步骤S5-2-2中,当5个周期还是为不一致,则发送不同步命令给PC端,在PC端接收到不同步命令后,可重新发送同样的命令给CPUA和CPUB,然后重新执行步骤S5。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011619578.7A CN112699037B (zh) | 2020-12-30 | 2020-12-30 | 一种用于二取二系统的软件测试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011619578.7A CN112699037B (zh) | 2020-12-30 | 2020-12-30 | 一种用于二取二系统的软件测试方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112699037A true CN112699037A (zh) | 2021-04-23 |
CN112699037B CN112699037B (zh) | 2022-10-04 |
Family
ID=75512863
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011619578.7A Active CN112699037B (zh) | 2020-12-30 | 2020-12-30 | 一种用于二取二系统的软件测试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112699037B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105068481A (zh) * | 2015-08-10 | 2015-11-18 | 李士祥 | 二乘二取二安全冗余控制系统及其运行方法 |
CN108562646A (zh) * | 2018-04-23 | 2018-09-21 | 国网浙江省电力有限公司电力科学研究院 | Gis电缆终端环氧套管超声相控阵检测装置及检测方法 |
CN109240975A (zh) * | 2017-07-10 | 2019-01-18 | 比亚迪股份有限公司 | 二取二系统同步方法及装置 |
CN109240974A (zh) * | 2017-07-10 | 2019-01-18 | 比亚迪股份有限公司 | 二乘二取二系统同步方法及计算机设备 |
CN110941520A (zh) * | 2019-12-28 | 2020-03-31 | 卡斯柯信号有限公司 | 基于二取二安全控制单元的硬件功能测试系统及方法 |
-
2020
- 2020-12-30 CN CN202011619578.7A patent/CN112699037B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105068481A (zh) * | 2015-08-10 | 2015-11-18 | 李士祥 | 二乘二取二安全冗余控制系统及其运行方法 |
CN109240975A (zh) * | 2017-07-10 | 2019-01-18 | 比亚迪股份有限公司 | 二取二系统同步方法及装置 |
CN109240974A (zh) * | 2017-07-10 | 2019-01-18 | 比亚迪股份有限公司 | 二乘二取二系统同步方法及计算机设备 |
CN108562646A (zh) * | 2018-04-23 | 2018-09-21 | 国网浙江省电力有限公司电力科学研究院 | Gis电缆终端环氧套管超声相控阵检测装置及检测方法 |
CN110941520A (zh) * | 2019-12-28 | 2020-03-31 | 卡斯柯信号有限公司 | 基于二取二安全控制单元的硬件功能测试系统及方法 |
Non-Patent Citations (2)
Title |
---|
XIU-FANG SUN 等: "Reliability analysis of a novel structure in an automatic sorting system", 《2010 IEEE 17TH INTERNATIONAL CONFERENCE ON INDUSTRIAL ENGINEERING AND ENGINEERING MANAGEMENT》 * |
杨文阁 等: "二乘二取二安全计算机的设计与实现", 《自动化技术与应用》 * |
Also Published As
Publication number | Publication date |
---|---|
CN112699037B (zh) | 2022-10-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106164866B (zh) | 客户端侧web状态的高效迁移 | |
CN104881494B (zh) | 与Redis服务器进行数据同步的方法、装置和系统 | |
US7089289B1 (en) | Mechanisms for efficient message passing with copy avoidance in a distributed system using advanced network devices | |
KR101963917B1 (ko) | 가장 최근에 사용된 문서 목록들의 자동 동기화 기법 | |
US20180124173A1 (en) | Optimizing a slow synchronization package | |
US6799200B1 (en) | Mechanisms for efficient message passing with copy avoidance in a distributed system | |
CN107171825B (zh) | 一种终端的重复日志过滤方法 | |
US9946582B2 (en) | Distributed processing device and distributed processing system | |
CN109213462B (zh) | Android横竖屏数据同步方法、装置、终端及可读介质 | |
US20050193039A1 (en) | Fault tolerant mechanism to handle initial load of replicated object in live system | |
CN110677280B (zh) | 服务节点切换方法、装置、设备及计算机可读存储介质 | |
US9043283B2 (en) | Opportunistic database duplex operations | |
CN112699037B (zh) | 一种用于二取二系统的软件测试方法 | |
CN112749123A (zh) | 用于管理文件系统的方法、设备和计算机程序产品 | |
CN110888739B (zh) | 延迟任务的分布式处理方法与装置 | |
US7533132B2 (en) | Parallel replication mechanism for state information produced by serialized processing | |
CN100419689C (zh) | 中断处理方法及装置 | |
CN108667682B (zh) | 基于安全网关深度包检测的连接同步方法、装置及介质 | |
CN113515574B (zh) | 一种数据同步方法及装置 | |
EP4175207A1 (en) | Method, apparatus and device for supporting tcp dynamic migration, and storage medium | |
CN114125081A (zh) | 一种接收数据的处理方法、装置及存储介质 | |
CN108737208B (zh) | 基于安全网关深度包检测的连接同步方法、装置及计算机 | |
CN112965949B (zh) | 一种远程读取oracle日志文件的方法 | |
CN104135393B (zh) | 一种分布式系统拓扑维护方法和装置 | |
JPH06259302A (ja) | 分散コンピュータのデータ更新処理方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |