Parasoft SOAtest测试接口的方法,和接口断言怎样设置,这两件事的关键,是先把接口的请求调通,然后再一步一步把需要校验的地方补上去。SOAtest这个工具,能够支持REST、SOAP、微服务、数据库这些不同的测试场景,也能够根据流量或者自然语言去生成API的测试,还可以创建那种靠数据来驱动、分好几个步骤的测试流程。所以,它的用处不只是发出一个请求然后去看返回的结果,它更适合把接口的调用、参数的准备、响应的校验,还有回归的执行这一整套东西都串在一起。
Parasoft的单元测试用例应该怎样生成,以及单元测试的数据又该如何维护,这两个问题通常需要先看项目使用的是C/C++test、Jtest,还是团队在现有工具上集成出来的测试流程。Parasoft C/C++test主要面向C和C++,它能提供静态分析、单元测试、覆盖率以及需求追踪这些能力;Jtest则针对Java单元测试,比较关注JUnit测试的生成、执行和覆盖率的提升。所以在生成用例之前,不能只问工具该怎么操作,还要先把语言、构建环境和测试目标确认下来。
Parasoft的代码覆盖率是怎样统计的,以及覆盖率的缺口又该如何定位,这两个问题在进行单元测试、集成测试和安全关键软件验证时经常会被遇到。覆盖率并不仅仅是查看一个最终的百分比,而是要弄清楚哪些代码被测试执行过,哪些分支、条件或者路径还没有被覆盖到。Parasoft的C/C++test、C/C++test CT这类工具,是能够在单元测试、集成测试和系统测试中收集覆盖率信息的,它们支持的覆盖类型也很多,比如语句覆盖、分支覆盖,以及MC/DC覆盖。
如何设置Parasoft的静态分析,以及怎样确认它产生的误报,许多开发团队在引入代码检查的时候,都会遇到这类问题。静态分析并不是把工具装好,点一次扫描就结束了,在这之前,要去看工程的配置是否准确,挑选的规则集是否合适,在那之后,还要看扫描出来的结果,能不能被开发人员弄明白,愿不愿意去处理。如果配置与真实项目差别很大,告警就会大量出现;如果判断误报时缺少依据,后面的评审又容易反复争论。
测试环境一切换,页面上给出保存成功的提示,并不代表目标服务已经在按新配置运行了,这个细节很多人在排查问题时容易忽略。Parasoft CTP对测试环境的管理,主要依赖环境定义、组件实例、变量、Virtualize资源以及Provisioning Action这几个模块一起来完成。团队里常说的“策略下发”,指的就是先把环境的配置保存下来,然后再去执行Provision动作,让配置里定义好的状态真正施加到目标环境上面去。官方文档也提到过,Environment Manager的用途正是把环境通过Provision操作,调整到测试所需要的指定状态。
在项目经历过多次扫描之后,单独一份报告已经很难满足分析需求了。想要弄清楚Parasoft DTP里的质量趋势图该怎么看,以及遇到指标口径不一致的问题时如何统一,最关键的一点是得先确认图表使用的项目、筛选配置还有构建版本,然后再去解释缺陷数量、覆盖率和测试结果变动背后的含义。DTP中的筛选配置相当于一组运行时的设定,它负责从数据库里提取特定项目的数据;另外,某些组件还能按照仪表板的设置、指定的筛选配置和目标构建来获取数据。
在CTP里说测试策略,真正落地时通常不是单指一条规则,而是把测试场景、环境配置、变量集和执行方式绑成一套可复用的执行方案。Parasoft官方现在把这套链路放在Environment Manager里推进,核心动作包括按环境配置执行test scenario jobs,用环境变量切换同一套资产在不同环境下的取值,以及在新版里为单个测试选择test configuration或为场景映射variable set。所以测试策略要想下发得稳,重点不是手工通知,而是把策略做成环境和作业层面的可执行对象。
很多团队上了Parasoft之后,扫描是跑起来了,但真正到了研发链路里,常见问题还是两类。一类是规则、项目、构建口径没统一,导致流水线每次跑出来的结果都能看,却很难直接拿来卡版本;另一类是漏洞结果停在平台里,没有顺着责任人、动作、参考编号继续往缺陷系统和整改闭环里走。Parasoft官方文档里其实已经把这条链路拆开了,工具侧负责执行静态分析和测试,DTP负责汇总、比较、筛选、追踪,并提供和缺陷系统做双向追踪的能力。
很多团队做虚拟服务,前期最常见的问题不是做不出来,而是做完以后越用越散。一个接口改一次,就复制一份虚拟服务;一个响应多一个字段,又单独改出一个新分支,时间一长,服务能跑,但维护成本会越来越高。Parasoft Virtualize本身并不是按“多复制几份响应”来设计的,它把responder、data source、variables和performance profiles都放在responder suite和.pva里统一组织,目的就是让资产能复用、响应能持续维护。
Parasoft Virtualize做服务虚拟化,核心不是先去拼响应报文,而是先确定你要走哪条建模路径。官方现在给出的主路径有两类,一类是从OpenAPI、RAML、WSDL这类服务描述直接生成虚拟资产,另一类是先用Parasoft代理录制真实流量,再从录制结果生成虚拟资产和Message Responder。前者适合接口定义比较完整的场景,后者更适合真实流量已经存在、但文档不完整或行为较复杂的场景。