0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

轨交软件测试过程管理

上海控安 来源:上海控安 作者:上海控安 2023-08-08 14:50 次阅读

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

版块 |鉴源论坛· 观通

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

01

什么是软件测试

1.1 测试的定义

“测试是一个证明错误不存在的过程”

“测试的目的是为了显示一个程序正确的实现了预期的功能”

“测试是建立对程序做了他应该做的事情的信心的过程”

“测试只能证明缺陷的存在,而不能证明测试的不存在”

IEEE定义的软件测试:“使用人工或自动的手段来运行或测定某个系统的过程,其目的在于它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。”

Testing is the process of executing a program with the intent of finding errors.”--- Glen Myers

1.2 软件测试的目的

验证软件的所有构件是否正确集成;验证所有需求是否已经正确实现;发现缺陷并确保在部署软件之前将缺陷解决。

1.3 软件测试的意义

测试在开发总成本中占30-50%;保证程序的正确性、完整性和一致性;显著降低完成和维护软件的开支;大大降低部署质量低劣的软件相关的责任或风险。

02

软件生命周期

常用的软件生命周期模型有:传统瀑布模型、瀑布V模型 、增量模型 、迭代模型。

wKgaomTR5ciAZCrdAACB1BsDWDM641.png

图1 传统瀑布模型

wKgZomTR5ciAVPzrAAESOa5mnyk382.png

图2 瀑布V模型

增量模型:需求基本明确,第一次需求分析包括所有需求,后续阶段提需求变更。

迭代模型:需求不明确,每阶段需求分析只包含这一阶段的需求。

03

轨交软件测试流程、策略

3.1 轨交软件测试的基本流程

测试计划→测试用例→准备数据→执行测试→输出、分析测试结果。

wKgZomTR5ciAdWJqAADzdCnwtdw118.png

图3 轨交软件测试的基本流程

(紫色背景为执行的操作,蓝色背景为输出的文档或过程数据)

3.2 轨交软件测试的测试策略

需要根据不同的输入,在不同的测试阶段中,采用相适应的测试策略。如,软件模块设计需要在单元测试阶段进行测试。软件结构设计需要集成测试进行测试,并对该阶段的文档进行验证。对于软件的需求,需要软件确认测试活动进行确认测试。系统结构设计,以及多个子系统集成,在系统集成阶段集成验证。系统需求需要进行系统级的确认测试,对其验证和确认。

wKgaomTR5cmAB4r0AAHLsFuFDE0082.png

图4 轨交软件各测试阶段的测试策略

3.3 各测试阶段输出的测试文件

wKgZomTR5cmAZMYwAAIN1tWyO6o828.png

图5 各测试阶段输出的测试文件

3.4 测试缺陷管理与跟踪

测试中发现的缺陷可能是代码缺陷,也可能是文档缺陷。对于文档缺陷,测试人员仍按照与预期的差异提交CR,由分析人员进行分析,明确修改文档。如果是代码缺陷,需要按照流程,修改代码,重新发布代码。对于回归测试,如果有影响分析报告,本次回归的用例范围应不少于影响分析所要求的范围。

测试过程中,应严格按照用例的预期结果判断用例是否通过。如果执行测试中发现用例有误或步骤需要细化或需要增加步骤,可以对用例修改,但在测试报告中,测试用例的版本为新版本,确保测试执行与实际用例版本一致。

3.5 白盒测试和黑盒测试的区别

白盒测试又叫逻辑驱动测试,具备以下特点:已知程序的内部工作逻辑;基于程序逻辑结构设计和构造测试用例和测试数据;测试程序内部的变量状态、逻辑结构、运行路径等;检验每条路径是否按预定要求正确工作;检查程序内部动作或运行是否符合设计规格要求。

黑盒测试的特点:不考虑程序的内部工作逻辑;从用户角度出发;基于程序应实现的功能和定义好的需求规格设计测试用例和测试数据;验证功能是否实现且与需求一致。

黑盒测试设计方法:等价类划分(EP)、边界值分析(BVA)、错误猜测(EG)、因果图等。

04

软件测试常用的几个阶段

4.1 单元测试

单元测试包括动态测试、代码审核和代码走读。

动态测试是通过插桩和驱动,动态运行程序的最小组成单位(一般是函数),验证函数是否与模块设计文档定义的功能一致。动态测试依据软件详细设计规格书进行。

代码审核是利用工具或人工,检查代码是否满足定义的编码规则。

代码走读是通过人工阅读代码,检查代码中的逻辑错误或对结构优化提出改进。代码走读的形式可以是小组评审或纯粹个人读代码。

wKgaomTR5cmABkZzAABI2bcF_2s514.png

图6 单元测试动态测试

模块接口:验证数据能否正确的输入、输出;

边界条件:边界上出现的错误是很常见的;

覆盖条件:或称路径分析,即对执行的基本路径和循环进行测试;

出错处理:良好的设计应该估计到投入使用后可能发生的错误,并给出相应的处理措施,保证逻辑上的正确性。

测试用例设计遵循:基于结构化测试(白盒)原则设计足够的测试,达到要求的覆盖率(语句覆盖;判定覆盖;条件覆盖;判定/条件覆盖;条件组合覆盖;路径覆盖)

推荐:首先设计黑盒测试用例,然后分析代码,从白盒角度分析,根据覆盖率要求增减测试用例。

注意:在实践中存在不好的倾向,单元测试人员纯粹为了完成覆盖率目标,不去理解被测模块实现的功能,仅从白盒角度建立测试用例,往往不能发现模块功能性的错误。

4.2 软件集成测试

在单元测试的基础上,根据选择的集成方式,将模块或任务或线程组装,验证被集成对象之间消息传递是否正确(必要时需要通过插桩来验证)。

本测试依据软件结构设计规格书进行。测试的对象是模块间的接口、函数调用接口、消息接口、共享队列、文件等。集成的对象可以根据实际情况分析后确定,可以是函数之间集成,也可以是任务或线程之间集成。

软件集成测试的方式:大爆炸集成(Big-bang integration);自顶向下集成(Top-down integration);自底向上集成(Bottom-up integration)。

wKgZomTR5cqAXz57AAELkumDkns823.png

图7 大爆炸集成

大爆炸集成 (Big-bang integration):也叫非增量式集成。其优点:不需要插桩与驱动;缺点:不容易定位问题。

wKgaomTR5cqAS8CvAADN-crZ9IM257.png

图8 自顶向下集成

深度优先:M1-M2-M5-M8;M1-M2-M5-M8-M6;M1-M2-M5-M8-M6 -M3-S7;M1-M2-M5-M8-M6-M3-S7-S4。

宽度优先:M1-M2-M3-S4;M1-M2-M3-S4-M5-M6-S7;M1-M2-M3-S4-M5-M6-S7-M8。

优点:一开始就能看到系统的框架;

缺点:需要插桩,桩不能反映真实情况,所以测试可能不充分,且在桩中查看输出不方便。

wKgZomTR5cuAC99ZAADYUS8R1ZE468.png

图9 自底向上集成

自底向上集成 (Bottom-up integration):属于增量式集成。其优点:方便查看输出。关键模块在底部时,这种方式更有优越性。缺点:要在最后才能看到系统的框架。

执行集成测试的建议:核心任务应执行模块级别的集成;非核心任务可只执行任务之间或进程之间的集成;集成测试以接口测试为主,功能测试为辅;集成策略采用大爆炸方式还是增量式集成方式视情况而定;集成测试集成的模块可以是以线程为单位,或者以功能模块为单位,或者以接口为单位或者以函数为单位。

需要工具支持:模块集成可使用相应的白盒测试工具;任务/进程集成应使用协议分析软件或逻辑分析仪、示波器硬件测试分析设备。

4.3 软件确认测试

将已经集成好的软件,作为整个元素,与计算机硬件、外设、某些支持软件、数据和人员等其他软件元素结合在一起,在实际运行环境下,对软件进行一系列的组装和确认测试。

本测试依据软件需求规格书进行。

wKgZomTR5cuAG01yAABrLaOyBnc521.png

图10 软件确认测试

安全测试(Safety Test):验证软件是否会产生危险输出,比如联锁软件中如果板卡位置放置错误,软件应宕机。

恢复性测试(Recovery Test):人为使软件出错,检查软件是否能自动恢复,及自动恢复时初始化、参数等是否正确。

备份测试(Backup Test):验证软件能够自动进行数据备份。

GUI测试:界面显示,是否友好

健壮性测试(Robust Test),也叫容错性测试。忽略故障,继续运行。比如,联锁备机故障不影响软件输出;联锁主机故障时,备机升级为主机,整个软件仍能正确输出。

安装测试(Installation Test):验证是否能够根据安装说明书完成安装,安装过程中是否有合理的提示信息,是否对安装环境有限制。验证是否可以卸载。

4.4 系统集成测试

验证各子系统的独立功能及其接口、数据传输的正确性,满足整个系统设计所规定的特性。该测试依据系统结构设计进行。

wKgaomTR5cuAeyppAADN5pNozP8224.png

图 11 系统集成测试

4.5 系统确认测试

功能测试 (Functional Test):验证功能实现是否符合软件需求。

性能测试(Performance Test):特定负荷下,CPU网络,内存,系统反应时间,指令执行时间等。

压力测试(Stress Test):也叫强度测试。资源超负荷(比如用户),验证系统能承受的最大压力、找到系统在哪里失效及如何失效。

容量测试(Volume Test):超额的数据容量,验证系统的最大容量,一般和数据库有关。

安全性测试(Security Test):防范非法侵入。

安全测试(Safety Test):验证系统是否会产生危险输出,比如联锁系统中如果板卡位置放置错误,系统应宕机。

恢复性测试(Recovery Test):人为使软件出错,检查系统是否能自动恢复,及自动恢复时初始化、系统参数等是否正确。

备份测试(Backup Test):验证系统能够自动进行数据备份。

GUI测试:界面显示,是否友好。

健壮性测试(Robust Test),也叫容错性测试。忽略故障,继续运行。比如,联锁系统备机故障不影响系统输出;联锁主机故障时,备机升级为主机,整个系统仍能正确输出。

4.6 验收测试

最后正式将被测系统放到实际运行环境运行之前,完全真实的环境和操作过程,不使用任何模拟设备或模拟程序。本测试在现场进行。

05

总 结

轨交软件系统大多采用瀑布V模型的生命周期模型,因涉及到需求分析、概要设计、详细设计等,所以会有单元测试、集成测试、软件系统测试对应各个阶段的输入进行验证或确认测试。

各个阶段的测试关注点不同,需要进行各种测试方法的适应性改变,如,EG的方法,在程序中植入错误,验证既有测试用例是否能发现也可以验证用例是否充分。测试用例中必须包含期望输出,程序员应避免测试自己编写的代码、程序开发组织应避免测试自己编写的代码,彻底检查每一个测试的结果,应为非法的、非预期的条件以及正常的、预期的条件设计测试用例,检查程序是否执行了指定的行为只是测试的一部分,还应检查程序是否执行了未指定的行为,这些是在设计用例、执行测试过程中的注意点,分别从独立性、充分性等方面考虑。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 测试
    +关注

    关注

    8

    文章

    4448

    浏览量

    125124
  • 模型
    +关注

    关注

    1

    文章

    2704

    浏览量

    47687
收藏 人收藏

    评论

    相关推荐

    [1.5.1]--1.5软件测试过程管理

    软件测试
    jf_75936199
    发布于 :2023年01月22日 18:39:06

    三个基本外围电路的调试过程与调试结果

    一、本文内容本文主要包含以下三个基本外围电路的调试过程与调试结果:电源模块时钟模块复位模块二、电源模块调试无论对FPGA还是DSP而言,对电源的上电顺序都有一定的要求,且不同型号的器件对电源的顺序
    发表于 11-11 06:51

    动态模型在软件系统测试过程中的应用研究

    系统测试软件开发过程中的重要环节,系统测试过程的动态模型有助于更好地理解和分析系统行为,做出正确的判断和决策;相对于已有的软件测试模型,通
    发表于 07-16 11:58 8次下载

    软件测试培圳资料

    软件测试培圳资料:软件测试的目的和策略测试方法学测试的技巧
    发表于 10-19 18:56 20次下载
    <b class='flag-5'>软件</b><b class='flag-5'>测试</b>培圳资料

    白盒测试中源代码变更管理方法的研究与实现

    在大型软件白盒测试项目中,源代码的频繁变化给测试工作增加了很大难度,对源代码进行管理和控制是对白盒测试过程
    发表于 04-03 23:20 30次下载

    工业软件现场测试过程及其测试数据生成方法

    在工业软件的用户生产现场测试中,可能由于操作风险、用户生产限制等约束而导致测试不充分,针对实践中的难点提出新的现场测试过程及其测试数据生成方
    发表于 11-30 10:08 0次下载

    锂离子电池测试过程的误差分析

    部分动力电池企业将电池送外检测,不同结构给出的结果往往也存在差异,更别提测试过程出现的各种数据波动等异常。
    的头像 发表于 12-02 17:19 5722次阅读
    锂离子电池<b class='flag-5'>测试过程</b>的误差分析

    测试项目管理系统(TPA)的详细介绍

    INTEWORK-TPA(Test Project Administrator)是一款集成的测试项目管理工具,它可以管理测试过程中的很多数据,包括需求、用例、样件、计划、报告和缺陷等。
    的头像 发表于 02-10 18:09 4190次阅读

    气密性测试过程中为什么会出现负的泄漏值

    在进行气密性测试的时候测试过程中有时候会出现负的泄漏值,为什么会出现负的泄漏值呢?在了解这个问题之前,我们首先需要知道的是检测过程中的测试原理,是在产品腔体内充入一定压力的气体,到达设
    的头像 发表于 04-08 11:38 4255次阅读
    气密性<b class='flag-5'>测试过程</b>中为什么会出现负的泄漏值

    系统测试-从研发到测试过程

    系统测试是为了发现错误而执行程序的过程,成功的测试是发现了至今尚未发现的错误的测试。目的是在真实系统工作环境下通过与系统的需求定义作比较,检验完整的
    的头像 发表于 11-19 09:58 693次阅读

    渗透测试过程中所使用的抓包方法

    本篇只是简单分享平常笔者渗透测试过程中所使用的抓包方法,后面会继续更新其他以及安卓端的抓包方法,比较适合没理解过这方面的新手作参考。
    的头像 发表于 02-01 15:41 1035次阅读

    防静电ESD测试过程展示

    点击上方蓝字关注我们防静电ESD测试过程展示本期内容为ESD的测试过程,先来看一下规格书中有哪些参数VRWM和IT是固定的,可用作设置参考,所以我们要测试的就是VBIPPVCIRC和VESD。
    的头像 发表于 09-30 17:18 1080次阅读
    防静电ESD<b class='flag-5'>测试过程</b>展示

    测试项目管理系统 — TPA

    概述INTEWORK-TPA(TestProjectAdministrator)是一款集成的测试项目管理工具,它可以管理测试过程中的很多数据,包括需求、用例、样件、计划、报告和缺陷等。
    的头像 发表于 01-07 16:48 654次阅读
    <b class='flag-5'>测试</b>项目<b class='flag-5'>管理</b>系统 — TPA

    如何解决车载部品测试过程中峰值电流不足的问题?

    如何解决车载部品测试过程中峰值电流不足的问题? 随着汽车电子系统的不断发展和普及,车载部品的测试过程变得更加复杂和严峻。其中一个常见的问题是峰值电流不足。峰值电流不足可能导致测试结果不准确、设备损坏
    的头像 发表于 11-23 10:33 228次阅读

    IZYTRONIQ测试软件介绍——管理测试设备数据库

    一款完整的用于管理和记录测试过程的数据库软件IZYTRONIQ
    的头像 发表于 01-11 11:11 183次阅读
    IZYTRONIQ<b class='flag-5'>测试</b><b class='flag-5'>软件</b>介绍——<b class='flag-5'>管理</b><b class='flag-5'>测试</b>设备数据库