当前位置: 首页 > news >正文

【银行测试】金融项目+测试方法范围分析,功能/接口/性能/安全...

目录:导读

    • 前言
    • 一、Python编程入门到精通
    • 二、接口自动化项目实战
    • 三、Web自动化项目实战
    • 四、App自动化项目实战
    • 五、一线大厂简历
    • 六、测试开发DevOps体系
    • 七、常用自动化测试工具
    • 八、JMeter性能测试
    • 九、总结(尾部小惊喜)


前言

1、金融行业软件特征分析

金融行业软件系统具有集中度高、规模庞大、数量多、系统之间关联性强、业务复杂、需求变化快等特点,如何有效可行的实现软件测试和软件质量控制,是对金融行业软件测试人员提出的基本要求。

1)金融行业软件的业务特点

以金融行业软件的典型代表银行系统软件为例:
一般的银行系统软件都有一个核心系统,核心系统主要涉及账务的处理、清算、计息等。

银行的其它业务系统都会直接或间接的与核心系统进行交互,主要处理一些涉及业务的流程以及系统管理、用户管理等辅助功能。

此外,银行的业务系统也种类繁多。
比如:ACE/柜面、网上银行、电话银行、呼叫中心、信贷、资产托管、资金风险分析及风险控制系统、外汇买卖、基金、期货、黄金、汇票、信用卡业务以及其它衍生业务等等。

各个系统之间都可能有着密切的联系,之间也会涉及到不同系统之间的接口。

因此,在测试过程中,除了对银行的核心系统、业务系统进行测试之外,还会涉及对接口的测试,而接口测试往往需要测试人员构造一定的测试环境与测试数据来模拟各系统之间的交互。

2)金融行业软件的复杂性特点

就银行系统软件来说,本身就具有复杂性的特点。首先,银行软件具有不同的客户群,如个人用户、企业用户、银行内部管理人员、业务人员等,因此,银行软件会有针对不同客户所使用的版本或权限控制。

此外,对于不同的服务方式,如柜台、电话银行、网上银行等,都必须开发出不同的软件。其次,银行业务种类繁多,业务逻辑也非常复杂,对业务处理要求有很高的安全性和实时性,这些都要借助复杂的技术才能实现。

因此,对于测试而言,软件的复杂性也增加了测试的复杂性,对测试者来说要求有相当的经验和测试技术的支持。

另外,由于银行业务的快速发展,当旧的银行软件系统无法满足业务处理的要求时,就必须开发新的系统,对于重新开发的新系统来说,旧系统的用户数据必须保证能在新系统中正常使用。

这就涉及到了新旧版本的数据移植问题,由于新旧系统之间数据字典存在差异,数据移植后能否正常,就需要对新旧数据进行比对性测试。

比对测试过程往往会涉及数据库的应用及比对工具的开发使用。

2、金融行业软件测试方法及范围分析

以下主要从功能测试、接口测试、数据移植测试、性能测试、安全性测试、风险监控测试、几个方面来阐述金融行业软件的测试方法及范围。

1)功能测试

功能测试,主要是对软件的功能进行的验证,对于金融行业软件来说,功能测试主要进行以下功能的验证:

业务验证测试:

验证业务系统的功能是否正确实现,测试其业务处理的准确性。

①业务流程测试

金融行业软件测试首先关注的是业务的正确性,业务流程要合理、业务处理正确无误,这些往往需要测试人员具备一定的金融软件测试经验,才能更好的判断业务流程设计是否合理,是否满足客户实际需求。

以及业务流程处理过程中可能会涉及到的异常,通常通过正常案例和异常案例来验证业务流程的完整性和正确性。

业务流程除了验证流程的正确性,通常对于涉及金额、资金、库存等数据及业务流程中生成的记录是否正确性也是测试的重点。

②账务处理

对于银行来说,账务处理为核心系统功能,也是这类软件测试的重点,账务处理不仅涉及到资金,还与交易过程相关,在测试系统对账时,必须对账务处理流程有清晰的认识。

对于账务处理过程中账务是否处理正确、是否出现错账、是否需要进行调账等案例都要能进行完整的案例设计来覆盖测试点,这一块的测试一般需要有经验的测试人员来进行测试。

③清算

银行系统清算过程涉及的东西较多,如资金清算、库存清算、计费、计息、对账、登帐、报表生成等复杂的过程,同时涉及的数据量也是非常的大,对于大型系统来说更是如此数据检查的工作量也很大,同样测试人员需要对清算的全过程有清晰的了解。

④报表

对于银行系统来说,报表是直接呈现给用户最直接的结果,而对一个银行系统来说,报表的数量一般都较庞大,很可能涉及到几十张报表,因此对报表的检查也是测试的重点,这需要测试人员对银行系统涉及的业务非常熟悉,能判断报表的设计是否合理,报表数据是否正确等。

2)客户端测试

客户端主要针对的是软件界面功能的测试,根据功能划分一般涉及以下几类:

①系统管理类

系统管理主要包括系统参数管理、用户管理、角色管理、权限分配等,测试也包含相应的业务逻辑及页面测试,如查询功能的测试、显示风格、验证客户端页面显示数据是否正确等。

②数据查询类

主要验证数据查询结果客户端显示是否正确。

③其它涉及业务操作的功能界面

主要针对客户端界面的录入、查询等功能进行测试。
客户端测试还会对界面的友好性、提示信息的合理性等进行测试。

3)接口测试

对于银行来说,通常行内系统和与银行外对接的系统是独立开发的,行内与行外系统采用的数据库、通讯协议等都可能存在差异;

并且对于银行来说,还可能存在多个系统:

如:网上银行、ACE/柜面、电话银行、呼叫中心、信贷、资产托管、资金风险监控分析系统等,并且各个系统之间可能关联特别紧密,存在许多交互;

因此,在测试中会涉及到相关系统接口的测试,这时通常需要构造对接系统的测试环境、数据、业务等来模拟对接系统。

接口测试中,由于一方系统在测试过程中不可见,因此通常需要进行环境的模拟。

比如开发模拟软件来模拟被测试系统与所交互的系统之间的通讯,并且在测试过程中通常需要测试人员自己组报文,通过模拟发送器收发发送报文来进行测试,并通过后台检查报文转换是否正确,通过数据库来验证数据是否正确。

通常来说,接口的测试测试人员主要跟后台和数据库打交道,而很少通过客户端来操作,因此要求测试人员对数据库知识、对应的操作系统命令以及一些中间件具有一定的熟悉程度才能更好的进行测试。

接口测试一般在功能测试阶段完成,功能测试计划中应包含接口测试。

4)数据移植测试

对于银行来说,软件产品经常存在更新换代或升级的情况,新系统的运行环境和旧系统可能不一致。

因此,为了保证系统的顺利运行,在新系统研发出来,准备上线之前,需要把原来旧系统的客户历史数据移植过来,这就涉及到了数据移植问题。

数据移植并不是简单的数据迁移,因为新旧系统之间数据字典是不同的,为了保证移植结果的正确性,需要对新旧数据库的数据进行比对,通常可以通过人工方法或开发比对工具进行比对。

举例来说,旧系统采用的SQLSERVER的数据库,而新系统采用Oracle的数据库;

并且就系统可能存在50张数据表,新系统可能有200张数据表,而且,新系统的数据表结构与旧系统可能完全不一样,或者新旧系统的某张表可能对应另一个系统的几张表,这样在数据移植测试中就要进行几方面的测试。

比如,两个数据库可能存在有差异的地方,如数据类型不同,位数不同,在数据移植过程中对这部分就应该做详细的检查。

此外,表结构的不同,在做数据移植检查时,需要获得新旧版本的数据字典,并且对移植过来对应的所有字段数据是否移植正确做检查。

数据移植测试往往需要测试人员有足够的耐心,能仔细进行比对,发现存在的问题。数据移植测试一般在功能测试阶段完成,功能测试计划中应包含数据移植的测试。

5)性能测试

性能测试的目的主要是验证业务系统是否满足业务需求的多用户并发操作,是否满足业务性能需求,评估压力解除后的自恢复能力,测试系统性能极限。

随着金融行业软件的规模越来越大、处理能力要求越来越高,进行性能测试成为金融软件测试中必不可少的一个环节。

金融行业软件一般在投入使用时,需要接受大批量的业务,并且对于业务的响应处理时间也有很高的要求,这对于应用程序本身、操作系统、中心数据库服务器、中间件服务器以及网络设备的承受力都是一个严峻的考验。

任一个环节的问题都可能给用户带来巨大的商业损失。因此,如何保证在压力情况下系统能正常运行是金融行业软件质量保证的关键,同时也是测试人员最需关注的重点。

在性能测试过程中,通过性能测试工具来模拟与真实环境接近的情况,如通过测试程序在同一时间内或某一段时间内,向系统发送预期数量的交易请求、测试系统在不同压力情况下的效率。

获得一定的参数(如:(如内存、CPU、缓存、系统响应时间、最大吞吐率、事务平均处理时间),以及系统可以承受的压力情况,进行针对性的测试与结果分析,找到影响系统性能的瓶颈,以便对系统进行优化。

6)安全性测试

安全性测试的目的主要是评估业务系统在网络安全、主机安全、应用安全、数据安全、运行维护安全、电子认证安全、业务连续性等方面的能力及管理措施,评价其业务系统的安全防控和安全管理水平。

对于金融行业软件来说,安全性有着重大的意思,尤其对于网络日益发达的今天,大量的金融类交易都是通过网络来实现,确保信息的安全,对安全性测试提出了更高的要求。如客户数据的安全、资金的安全;

银行主机的安全,应用程序的安全以及网络安全,某一个环节出现问题都会给系统带来巨大的风险。安全性测试主要检查出软件存在的安全隐患,确定安全等级,以期得到整改。

通常用的安全性检查手段及检查点如:跨站攻击、弱点攻击、管理界面泄露、敏感信息泄露、跨站点请求伪造、恶意上传等。

对于安全性测试来说,一般需要专业的工具作为支持,因为,大多数的安全性测试都会交给具有一定资质的第三方评测机构来进行。

7)风险监控测试

主要目的是评估业务系统的风险监控、预警和管理措施,测试其业务系统异常交易、大额交易、非法卡号交易、密码错误交易等风险的监测和防范能力以及系统资源占用的监控。

对于银行的较大型系统来说,一般都会专门开发对应的风险监控系统,一类风险监控主要是对系统的交易、资金、等情况进行监控;

另一类则是对主机资源情况进行监控,对于交易、资金类的风险监控测试时主要是根据风险监控需求来验证监控结果是否符合需求描述;

对于系统资源类的测试主要关注被监控主机的资源占用情况是否合理。

风险监控测试一般在功能测试阶段或性能测试阶段完成,功能测试或性能测试计划中应包含风险监控的测试。

8)自动化测试

现阶段实施的自动化测试与手工测试相比较,就是采用程序模拟手工测试的过程。在自动化测试过程中,原来由手工控制的操作,现在由程序来控制,不再进行手工干预。自动化测试主要用于功能测试,测试过程包括脚本的录制、编写及回放。

3、金融行业软件测试工具分析

金融行业软件测试与其它应用软件测试流程基本一致,测试过程也涉及到一定的测试工具的使用,以下是金融行业软件常用的软件测试工具:

①黑盒测试工具

黑盒测试工具较多应用的是自动化测试工具QARun、QTP。

②性能测试工具

常用于金融系统软件,适用于各种体系架构的自动负载测试工具LoadRunner,它能预测系统行为并优化系统性能。

对于性能测试来说,很多情况下,商业化的软件不一定能满足性能测试的需求,因此很多时候,需要开发一定的性能测试软件来进行针对性的测试。

③测试管理(测试流程管理、缺陷跟踪管理、测试用例管理)工具
常用测试管理工具有:QC、TD、ClearQuest等,主要对测试计划、测试用例、测试实施进行管理,并进行缺陷跟踪管理。

4、金融软件测试模式分析

在金融机构内部组织业务测试之前,软件必须经过完整的系统测试、性能测试及安全性测试等才能交付金融机构的业务部门进行业务测试,测试模式可以有以下几种模式:

①软件开发方进行的内部系统测试、性能测试和安全性测试

开发方内部进行的测试与本文第三部分描述的软件测试方法与范围分析基本一致,下面主要就第三方测试的模式进行分析。

②第三方测试机构进行的系统测试、性能测试和安全性测试

下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

人生就像一场马拉松,不要因短暂的疲惫而停下脚步,只有坚持到最后,才能看到奋斗的意义和价值。勇敢前行吧,你一定能够到达成功的终点。

勇于追求梦想,坚持不懈地奋斗,即使路途再坎坷,也会有收获的一天。信念和毅力是成功的关键,只要心怀信念,你就能超越自我,创造属于自己的辉煌人生。

在努力的道路上,不要畏惧失败与困难,坚持奋斗,相信自己的潜力与能力,勇往直前,你将开创属于自己的壮丽传奇,迎接人生的辉煌。

相关文章:

【银行测试】金融项目+测试方法范围分析,功能/接口/性能/安全...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、金融行业软件特…...

Java网络编程——安全网络通信

在网络上,信息在由源主机到目标主机的传输过程中会经过其他计算机。在一般情况下,中间的计算机不会监听路过的信息。但在使用网上银行或者进行信用卡交易时,网络上的信息有可能被非法分子监听,从而导致个人隐私的泄露。由于Intern…...

云原生数据库是什么?它的作用是啥?

目前来说,各厂商的云原生数据库在演进路线上分成了两个略有不同的路径来解决不同的问题。 一种是各大公有云厂商选择的,优先保证上云兼容性的路线,就是基于存算分离架构对传统数据库进行改造的路线:通过把大量的日志操作放到后台…...

使用ansible批量初始化服务器

简介 本文详细介绍ansible怎么批量初始化服务器,包括ansible批量初始化服务器详细配置和步骤,有需要的小伙伴们可以参考借鉴,希望对大家有所帮助。 详细步骤 1、ansible要初始化的主机 [rootnginx ansible]# tail -3 /etc/ansible/hosts …...

国标GB28181安防视频云平台EasyCVR出现持续重启现象,是什么问题?该如何解决?

视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安防视频监控的能…...

【APP安卓测试工具】adb(Android Debug Bridge)

1.常见的命令 列出已连接的设备 adb device安装 adb install <APK文件路径>卸载 adb uninstall <APK文件路径>启动和停止 adb shell am start -n <包名>[/<Activity>]adb shell am force -stop <包名>截屏和录屏 adb shell screencap <文件路…...

图像融合领域的挑战

图像融合是将来自不同传感器或不同时间的多个图像集成为信息更丰富的单个图像的过程&#xff0c;通常预计更有利于人类或机器感知或进一步的图像处理任务。 以下是图像融合研究中的一些众所周知的挑战&#xff1a; 保持图像质量&#xff1a;确保融合图像保留每个源图像的重要特…...

Tomcat配置成服务、开机自启动

Tomcat配置成服务、开机自启动 问题解决方案 问题 在配置成开机自启动的服务时&#xff0c;遇到了如下提示。 最终原因是因为双击apache-tomcat-9.0.83\bin\tomcat9w.exe&#xff0c;在弹出的的“Startup”选项卡中的mode没有设置为Java 解决方案 右键“我的电脑”——管理—…...

IntelliJ IDEA创建一个spark的项目

在开始之前&#xff0c;需要说明的是 要跑通基本的wordcount程序&#xff0c;是不需要在windows上安装 hadoop 和spark的&#xff0c;因为idea在跑程序的时候&#xff0c;会按照 pom.xml配置文件&#xff0c;从指定的 repository源&#xff0c;按照properties指定的版本&#x…...

【数据库】数据库多种锁模式,共享锁、排它锁,更新锁,增量锁,死锁消除与性能优化

多种锁模式的封锁系统 ​专栏内容&#xff1a; 手写数据库toadb 本专栏主要介绍如何从零开发&#xff0c;开发的步骤&#xff0c;以及开发过程中的涉及的原理&#xff0c;遇到的问题等&#xff0c;让大家能跟上并且可以一起开发&#xff0c;让每个需要的人成为参与者。 本专栏会…...

串口通信(1)-硬件知识

本文讲解串口通信的硬件知识。让读者快速了解硬件知识&#xff0c;为下一步编写代码做基础。 目录 一、概述 二、串口通信分类 2.1信息的传送方向进行分类 2.2同步通信和异步通信 三、串口协议 3.1 RS232 3.1.1 电气特性 3.1.2 连接器的机械特性 3.1.3 连接类型 3.1…...

越南语翻译,人工翻译哪个值得信赖?

近年来&#xff0c;随着中越两国的交流日益频繁&#xff0c;为了促进双方的交流与理解&#xff0c;市场上对越南语翻译的需求也日益增加。那么&#xff0c;如何做好越南语翻译&#xff0c;人工翻译哪家公司值得信赖呢&#xff1f; 据了解&#xff0c;中文翻译越南语是一项颇具挑…...

攻防世界题目练习——Web引导模式(五)(持续更新)

题目目录 1. FlatScience2. bug3. Confusion1 1. FlatScience 参考博客&#xff1a; 攻防世界web进阶区FlatScience详解 题目点进去如图&#xff0c;点击链接只能看到一些论文pdf 用dirsearch和御剑扫描出一些隐藏文件&#xff1a; robots.txt: admin.php: login.php: f…...

attack vector

攻击介质&#xff0c;是指可以攻击信息系统&#xff0c;破坏其安全性的特定路径、方法或是情景。 vector 此处并不是向量的意思。...

好看的早上问候语早安图片,今天最新唯美温馨祝福语

1、天气冷了&#xff0c;情谊不凉&#xff0c;树叶黄了&#xff0c;思念不忘&#xff0c;问候像一杯热茶&#xff0c;让人暖心&#xff01;祝愿我们与健康平安同行&#xff01;朋友们&#xff0c;大家早上好&#xff01; 2、多一个人牵挂是一种幸福&#xff1b;多一个人相知是一…...

人体关键点检测2:Pytorch实现人体关键点检测(人体姿势估计)含训练代码

人体关键点检测2&#xff1a;Pytorch实现人体关键点检测(人体姿势估计)含训练代码 目录 人体关键点检测2&#xff1a;Pytorch实现人体关键点检测(人体姿势估计)含训练代码 1. 前言 2.人体关键点检测方法 (1)Top-Down(自上而下)方法 (2)Bottom-Up(自下而上)方法&#xff1…...

聚类分析 | Matlab实现基于谱聚类(Spectral Cluster)的数据聚类可视化

聚类分析 | Matlab实现基于谱聚类(Spectral Cluster)的数据聚类可视化 目录 聚类分析 | Matlab实现基于谱聚类(Spectral Cluster)的数据聚类可视化效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现基于谱聚类(Spectral Cluster)的聚类算法可视化&#xff08;完…...

【回眸】Tessy 单元测试软件使用指南(三)怎么打桩和指针测试

目录 前言 Tessy 如何进行打桩操作 普通桩 高级桩 手写桩 Tessy单元测试之指针相关测试注意事项 有类型的指针&#xff08;非函数指针&#xff09;&#xff1a; 有类型的函数指针&#xff1a; void 类型的指针&#xff1a; 结语 前言 进行单元测试之后&#xff0c;但凡…...

关系型数据库-SQLite介绍

优点&#xff1a; 1>sqlite占用的内存和cpu资源较少 2>源代码开源&#xff0c;完全免费 3>检索速度上十几兆、几十兆的数据库sqlite很快&#xff0c;但是上G的时候最慢 4>管理简单&#xff0c;几乎无需管理。灵巧、快速和可靠性高 5>功能简…...

使用shell脚本将一台虚拟机上面数据分发到其他虚拟机上面xsync

目录 1&#xff0c;功能2&#xff0c;注意点3&#xff0c;shell脚本介绍4&#xff0c;bash内容 1&#xff0c;功能 使用shell脚本将一台虚拟机上面数据分发到其他虚拟机上面。 2&#xff0c;注意点 需要修改的地方&#xff1a;hadoop250 hadoop251 hadoop252 hadoop253 hado…...

OpenGL学习(二)绘制三维图形 固定管线

一.简单步骤 考虑顶点数据上色旋转 二.完整代码 myopenglwidget.h // An highlighted block #ifndef MYOPENGLWIDGET_H #define MYOPENGLWIDGET_H #include <QOpenGLWidget> #include <QOpenGLFunctions> #include <QOpenGLShaderProgram> #include <Q…...

微信小程序游戏:移动游戏市场的新兴力量

随着移动互联网的迅猛发展&#xff0c;微信小程序游戏已经成为现代数字娱乐领域的一股不可忽视的力量。这些游戏通过融入微信这一广泛使用的社交平台&#xff0c;为用户带来了全新的游戏体验。本文探讨了微信小程序游戏的特点、发展现状和未来趋势。 微信小程序游戏最大的特点之…...

Netflix Mac(奈飞客户端)激活版软件介绍

Netflix Mac(奈飞客户端)是一款流行的视频播放软件&#xff0c;专为Mac用户设计。它提供了大量的高质量电影、电视剧、纪录片和动画片资源&#xff0c;让用户可以随时随地观看自己喜欢的内容。 首先&#xff0c;Netflix Mac(奈飞客户端)以其简洁直观的用户界面而闻名。用户可以…...

【Docker】进阶之路:(十)Docker日志管理

【Docker】进阶之路&#xff1a;&#xff08;十&#xff09;Docker日志管理 查看引擎日志查看容器日志清理容器日志日志驱动程序日志驱动程序概述local日志驱动json-file 日志驱动syslog 日志驱动日志驱动的选择 Docker 容器日志分为两类&#xff1a;引擎日志和容器日志。Docke…...

Lcss算法介绍与应用演示

Lcss算法介绍 LCSS&#xff08;最长公共子序列&#xff0c;Longest Common Subsequence&#xff09;算法是一种用于比较两个序列相似度的方法。它寻找两个序列中的最长子序列&#xff0c;这个子序列不需要在原始序列中连续&#xff0c;但必须保持原有序列中元素的相对顺序。LC…...

【SpringBoot】从入门到精通的快速开发指南

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是Java方文山&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的专栏《SpringBoot》。&#x1f3af;&#x1f3af; &…...

每日一练【长度最小的子数组】

一、题目描述 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl1, ..., numsr-1, numsr] &#xff0c;并返回其长度。如果不存在符合条件的子数组&#xff0c;返回 0 。 二、题目解析 经…...

HTML 块级元素与行内元素有哪些以及注意、总结

行内元素和块级元素是HTML中的两种元素类型&#xff0c;它们在页面中的显示方式和行为有所不同。 块级元素&#xff08;Block-level Elements&#xff09;&#xff1a; 常见的块级元素有div、p、h1-h6、ul、ol、li、table、form等。 块级元素会独占一行&#xff0c;即使没有…...

SpringBoot热部署

SpringBoot热部署 借鉴链接&#x1f517;&#xff1a;SpringBoot中的热部署 添加devtools依赖和pom插件 <!-- devtools 依赖 --> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId&…...

Jmeter入门

一、下载jmeter 官网下载 下载之后解压&#xff0c;在目录/bin下面找到jmeter.bat双击之后即可启动Jmeter。 二、使用 如下左图&#xff0c;选择语言为中文&#xff0c;可以修改测试计划的名称。如下右图&#xff0c;添加线程组 添加线程组 添加http请求 路径传参方式 …...