大型机测试

2025年3月17日 | 阅读 14 分钟

在本节中,我们将了解Mainframe 测试,它用于测试在 Mainframe 系统上开发的软件或应用程序和服务。

我们还将学习 Mainframe 属性、Mainframe 测试类型、如何执行 Mainframe 测试、在执行 Mainframe 测试时遇到的不同挑战和故障排除、Mainframe 测试中使用的各种命令、Mainframe 测试期间遇到的一些常见问题以及 Mainframe 自动化测试工具。

在理解 Mainframe 测试的概念之前,我们将先了解 Mainframe。

什么是 Mainframe?

Mainframe 是一种多用户、高性能、高速度的计算机系统。Mainframe 是最可靠、可扩展且安全的机器系统。

换句话说,我们可以说这些系统用于大规模计算,涉及极高的可用性和安全性。Mainframe 系统主要用于各种细分领域,如零售、保险、金融和其他关键领域,在这些领域中,海量数据会被处理多次。

通过以下方面,我们可以每秒执行数百万条指令 [高达 569,632 MIPS]

  • 最大输入/输出带宽:如果存在极大的输入和输出带宽,驱动器和处理器之间的连接会存在一些瓶颈。
  • 可靠性:尽管系统仍在运行,但 Mainframe 经常会接受 优雅降级 和服务。
  • 可靠的单线程性能:这对于数据库的实际操作至关重要。
  • 最大输入/输出连接性:最大的输入/输出连接性意味着 Mainframe 在提供大量磁盘阵列方面表现出色。

在理解了 Mainframe 的概念后,现在我们进入我们讨论的重点——Mainframe 测试

什么是 Mainframe 测试?

Mainframe 测试的主要目标是通过验证和确认方法来确保应用程序或服务的可靠性、性能和卓越性,并检查其是否已准备好部署。

在执行 Mainframe 测试时,测试人员只需要了解 CICS 屏幕的导航,因为这些屏幕是为特定应用程序定制的。

如果 COBOL、JCL 等代码发生任何修改,测试人员不必担心机器上的模拟器设置。

在哪里执行 Mainframe 测试?

通常,Mainframe 测试在已部署的代码上执行,并通过将多个数据组合设置到输入文件中。换句话说,我们可以说 Mainframe 应用程序 必须在生产运行之前经过全面测试。

Mainframe 应用程序,或者称为批处理作业,是根据开发的测试用例与需求进行测试的。

运行在 Mainframe 上的软件或应用程序可以通过终端模拟器进行检索。

在理解了 Mainframe 测试之后,我们将看看 Mainframe 测试的几个特征。

Mainframe 测试方法论

在 Mainframe 测试中,软件或应用程序的检索方式与 Web 应用程序不同,是由 最终用户 执行的。

应用程序测试人员应该了解这些重要的区别,如下所示。

Web 应用程序Mainframe 应用程序
Web 应用程序通过两层架构 [客户端/服务器] 或三层架构 [表示层/应用层/数据库存储层] 进行获取。在 Mainframe 应用程序中,最终用户必须直接登录系统。
Web 应用程序通过 浏览器或 UI 进行获取。终端模拟器 必须用于获取 Web 应用程序。
在此,测试可以直接在应用程序屏幕上执行。在此,测试人员应具备 Mainframe 操作的精确知识。
在 Web 应用程序中,一些处理是在客户端进行的,应用程序应在测试开始前安装在正确的位置。在 Mainframe 测试中,终端模拟器 是唯一需要在客户端机器上加载以进行测试的软件,而应用程序则位于主服务器上。

Mainframe 属性

在 Mainframe 测试中,我们有以下 Mainframe 特性;让我们一一来看。

  • 多进程
  • 分时
  • 虚拟存储
  • Spooling
  • 批处理
Mainframe Testing

多进程

  • 多编程属性是一种设施,它允许我们有效地利用 CPU。
  • 计算机同时执行各种程序。

分时

  • 分时处理也称为 前台处理,而 批处理作业 处理称为 后台处理。因此,它被称为 交互式处理,因为它允许用户直接与计算机交互。
  • 在分时系统中,每个用户都可以通过终端设备访问系统。

虚拟存储

  • 虚拟存储使用磁盘存储作为实际存储的扩展。
  • 这是一种有效利用内存来存储和执行各种大小任务的技术。

Spooling

  • Spool 意为 Simultaneous Peripheral Operations Online(同步外围操作联机),用于累积程序或应用程序的输出。
  • 如果需要,会将 Spool 的输出定向到打印机等输出设备。

批量处理

  • 批处理是一种技术,我们可以将任何任务分解成单元,也称为 作业
  • 我们可以按照作业的顺序执行一个或多个程序。
  • 作业调度程序会确定作业的执行顺序。
  • 作业根据其重要性和类别进行计划,以最大化平均吞吐量。
  • 批处理通过 作业控制语言 (JCL) 提供必要的信息。

如何进行 Mainframe 测试

Mainframe 测试可以有两种方式执行:手动 或使用一些 自动化工具,如 QTP、REXX 和 IBM Application Performance Analyzer 等。但通常,我们将 手动 执行 Mainframe 测试。

要进行 Mainframe 测试,我们需要遵循以下步骤:

Mainframe Testing

步骤 1:规划

首先,业务团队开发团队 构建 测试计划,包括 业务需求文档、系统需求文档、其他 项目文档输入。它控制在发布周期中特定项目或流程将如何被更改。

同时,为了提前准备测试场景和测试用例,测试团队将与开发和项目管理团队协调。

步骤 2:计划安排

一旦需求文档成功准备好,它将被移交给开发团队和测试团队。测试计划应与项目交付计划一起书写,并且应准确。

步骤 3:可交付成果

收到文档后,他们将检查可交付成果。可交付成果应描述清晰,没有任何不确定性,并且应满足测试目标的范围。

步骤 4:实施

之后,实施应按照计划和可交付成果进行。

通常,在发布中,15-25% 的应用程序将直接受到修改需求的影响。而发布的其他 60-75% 将依赖于开箱即用的功能,如应用程序和流程的测试。

因此,我们需要通过两种方式测试 Mainframe 应用程序:

  • 测试需求
  • 测试集成

测试需求: 我们将测试应用程序的功能或需求文档中披露的修改。

测试集成: 回归测试 是此测试活动的主要关注点。我们将测试整个流程或其他接收或发送数据到先前应用程序的应用程序。

步骤 5:报告

之后,我们将定期与开发团队分享测试结果。为了保持连续性,测试团队应与开发团队保持联系,以便在关键情况下进行即时修改。

Mainframe 手动测试的分类

Mainframe 手动测试 可分为以下两类:

  • 在线测试
  • 批处理作业测试
Mainframe Testing

在线测试

  • 在线测试是指对 CICS 屏幕 的测试,这相当于 网页测试,其中现有屏幕的功能可以更改,或者可以添加新屏幕。
  • 各种应用程序可以有查询和修改屏幕,作为在线测试的一部分,需要测试屏幕的功能。

批处理作业测试

  • 通常,在批处理作业测试中,测试过程包含用于在现有发布中执行的功能的 批处理作业
  • 测试结果将从输出文件中提取,并且数据库应经过测试和记录。

Mainframe 测试命令

在 Mainframe 测试中,我们使用各种命令,这些命令在测试应用程序或软件时非常有用。

以下表格显示了一些最常用的 Mainframe 测试命令:

命令描述
COPYCOPY 命令用于 复制数据集。
SUBMITSUBMIT 命令用于 提交后台作业。
重命名RENAME 命令用于 重命名 数据集。
DELETEDELETE 命令用于 删除数据集。
JOB SCANJOB SCAN 命令用于 在不执行的情况下,将 JCL 与库、程序、文件等进行匹配。
CANCELCANCEL 命令用于 取消 后台作业。
ALLOCATEALLOCATE 命令用于 分配数据集。

注意:我们在执行 Mainframe 测试时还有一些其他命令,但它们不经常使用;因此,我们只在需要时使用这些命令。

Mainframe 操作的先决统计信息

在对应用程序执行 Mainframe 测试时,测试人员应掌握以下关于 Mainframe 操作的信息:

  • ISPF [Interactive System Productivity Facility] 必须用于菜单操作。
  • TSO [Time-Sharing Option] 是一种用于访问虚拟存储和使用命令管理数据集的方法。
  • 在测试软件时,必须使用 FTP [File Transfer Protocol] 或其他传输协议。
  • 如果 Mainframe 是后端,我们应该使用 跨平台操作
  • SDSF [System Display and Search Facility] 必须用于控制操作和系统资源。
  • 必须遵循批处理作业管理。
  • CICS 事务必须用于测试 IBM Mainframes。

Mainframe 测试的挑战和故障排除

如果我们正在对应用程序执行 Mainframe 测试,我们可能会遇到一些挑战,对于这些挑战,我们有一些特定的方法,如下表所示:

挑战说明方法
需求不明确或不完整有时用户可以访问 用户手册或培训指南,但这些与文档化的需求不符。
  • 测试工程师应积极参与软件开发生命周期 (SDLC),从需求阶段开始,以克服需求不明确的问题。
  • 如果需求是可测试的,那么它们将有助于轻松验证。
数据识别或设置有时,测试人员可能需要根据要求重新使用当前数据。但有时很难从当前数据中找到必需的详细信息。
  • 为了克服数据设置的挑战,我们可以根据要求使用自研工具。
  • 为了获取现有数据,应提前创建查询。
  • 如果出现任何问题,请向 数据管理团队 提出请求,以生成或复制关键数据。
作业设置当作业保存在 PDS 中时,需要在 QA 区域中设置作业。
因此,作业不会使用生产限定符进行提交。
  • 为此,可以使用作业设置工具来克服设置过程中的人为错误。
临时请求有时,我们可能会遇到一些情况,由于上游或下游应用程序出现问题,需要维护 端到端测试。而 临时请求 会增加执行周期中的时间和精力。
  • 为了克服这些特定的挑战,我们可以借助一些回归脚本、自动化脚本和骨架脚本,它们可以减少时间和精力开销。
按时发布以应对范围变更有时,我们会遇到代码影响可能完全改变系统外观和感觉的情况。修改可能涉及测试用例、脚本和数据。
  • 为此,应妥善建立影响分析和范围变更管理流程。

Mainframe 测试的步骤

在执行 Mainframe 测试时需要遵循以下步骤:

步骤 1:冒烟测试

第一步,我们将执行 冒烟测试,检查安装的代码是否在正确的测试环境中。它还确保代码没有关键问题,从而节省测试人员在测试有缺陷版本时的时间。

步骤 2:功能测试/系统测试

执行冒烟测试后,我们将进行一轮功能测试或 系统测试,以独立地测试各个模块的功能以及它们之间的相互关系。

以下是在实施系统测试时必须进行的测试类型:

  • 批处理测试
  • 在线测试
  • 在线-批处理集成测试
  • 数据库测试
  • 批处理测试

我们将执行批处理测试,以根据测试规范验证输出文件中的测试结果以及批处理作业完成的数据修改。

注意:批处理作业是一系列事件,它们在没有用户与可访问计算资源交互的情况下执行。

  • 在线测试

在在线测试中,我们将测试 Mainframe 应用程序的 前端 功能。在线测试涵盖了各种方面,例如 用户友好性、数据输入验证、外观和感觉、屏幕内的导航等。

应用程序应针对精确的输入字段进行测试,例如计划中的利息、保险计划等。

  • 在线-批处理集成测试

在线-批处理集成测试可以在具有批处理进程和在线应用程序的系统上执行。在这里,我们还测试了在线进程与后端进程的集成功能。

基本上,在此测试中,我们验证数据流的准确性以及屏幕与后端系统之间的交互。批处理作业用于检查在线屏幕之间的数据流和通信。

  • 数据库测试

数据库测试用于测试事务存储的数据是否符合系统规范。数据库验证其布局和数据存储,其中包含 Mainframe 应用程序的数据,例如 IMS、IDMS、DB2、VSAM/ISAM、Sequential datasets、GDGs

在数据库测试中,我们还可以验证 数据完整性 和其他数据库参数以获得最佳性能。

步骤 3:系统集成测试

系统集成测试用于检查系统功能与被测系统相关。在单元级测试之后执行,因为测试接口和各种消息(如 作业成功、作业失败、数据库已更新等)很重要。

为了正确性,我们将测试跨模块和应用程序的数据流。执行系统集成测试以确保构建已准备好部署。

在系统集成测试中,我们可以执行以下测试:

  • 批处理测试
  • 在线测试
  • 在线 - 批处理集成测试

步骤 4:回归测试

任何测试中最关键的阶段是回归测试。回归测试是为了确保 批处理作业和在线屏幕 不会直接影响被测系统,并且不受当前项目发布的影响。

回归测试保证了模块中的修改不会影响父应用程序和整体功能以及集成应用程序。

应根据其复杂性接受一组特定的测试用例,并且应创建 测试用例存储库 以获得成功的回归测试。并且,每当有新功能集成到发布中时,都应修改特定测试。

步骤 5:性能测试

在 Mainframe 测试中,下一步是性能测试。在性能测试中,我们将尝试查找关键区域的瓶颈,例如 前端数据、升级在线数据库以及预测应用程序的可扩展性

在 Mainframe 应用程序中,我们可能会遇到以下性能问题:

  • 在线 响应时间 可能很慢,导致用户不满。
  • 有时 批处理作业和后端进程 需要额外的时间,这会挤占在线用户的系统可用性。
  • 可扩展性问题。

为了克服上述问题,我们应该通过以下方式充分测试应用程序:

  • 系统集成参数
  • 应用程序和数据库设计
  • 编码
  • 系统和数据库参数
  • 后端作业的时序

步骤 6:安全测试

安全测试包括评估应用程序和网络的 威胁、风险、漏洞 并提出补救措施。

安全测试应涵盖 身份和访问管理、风险与合规管理、数据保护与隐私政策遵从 等用例。

换句话说,我们可以说安全测试是为了检查应用程序在对抗安全攻击方面的设计和开发程度。

安全测试应在两种安全系统上完成:Mainframe 安全和网络安全。

在安全测试中,我们需要测试以下方面:

  • 授权
  • 诚信
  • 认证
  • 保密性
  • 可用性

步骤 7:敏捷方法

敏捷方法用于简化应用程序的渐进式开发,并快速响应更改。

注意:在敏捷开发场景中,我们可以使用增量测试方法。

Mainframe 自动化测试工具

市场上我们有各种类型的 Mainframe 自动化测试工具。以下是一些最常用的 Mainframe 自动化测试工具:

  • QTP
  • REXX

QTP [Quick Test Professional]

QTP 工具用于测试 Web 应用程序的功能回归测试用例。QTP 代表 Quick Test Professional,现在称为 Micro Focus UFT [Unified Functional Testing]

对于新测试工程师来说,它非常有帮助,因为他们可以快速理解这个工具。QTP 基于 VB 脚本等脚本语言进行应用程序自动化。

Mainframe Testing

QTP 的特性

以下是 QTP 最常见的特性:

  • 在此工具中,我们可以执行 BPT [业务流程测试]
  • QTP 使用脚本语言部署对象,并为分析目的提供测试报告。
  • 技术和非技术测试人员都可以使用 QTP。
  • QTP 支持多种软件开发环境,如 Oracle、SAP、JAVA、
  • 借助 QTP,我们可以测试桌面和 Web 应用程序。

REXX [Restructured Extended Executor]

它是一种解释型编程语言,在 IBM 开发。REXX 是一种高级、结构化编程语言,专为阅读和学习而设计。REXX 代表 Restructured Extended Executor

它用作 脚本和宏 语言。换句话说,我们可以说 REXX 经常用于 处理文本、数据和生成报告

它支持各种操作系统,如 MVS、OS/2、AmigaOS、VM。 REXX 也可以用作某些其他软件的 内部宏语言,例如 KEDIT、ZOC 终端模拟器、SPFPC 等。

Mainframe Testing

REXX 的特性

以下是 REXX 最常见的特性:

  • 它支持 不区分大小写的标记,其中包含变量名。
  • 使用 REXX,我们可以轻松访问系统服务和命令。
  • REXX 可以支持与特定情况相关的各种过程、函数和命令。
  • 它支持基本的输入/输出功能。
  • 它支持动态数据类型,无需声明。

执行 Mainframe 测试的优势

执行 Mainframe 测试过程的优势将在以下方面帮助我们:

  • 它能最大限度地利用资源。
  • 它有助于避免冗余返工。
  • 它增强了用户体验。
  • 它减少了生产停机时间。
  • 它帮助我们扩大客户保留率。
  • 它还帮助我们降低 IT 运营的总成本。

概述

在 Mainframe 测试部分,我们学习了以下主题:

  • 为了高效地测试应用程序,测试工程师应参与业务和开发团队安排的 设计会议
  • Mainframe 测试与其他测试过程一样,从 需求收集、测试设计、测试执行和结果报告 开始。
  • 我们理解了 Mainframe 属性,如 多编程、分时、虚拟存储、Spooling 和批处理
  • 我们理解了 Mainframe 测试分为两部分:在线测试和批处理测试。在线和批处理测试可以有效地执行,而不会遗漏需求规格文档中提到的任何功能。
  • 我们理解了各种 Mainframe 测试挑战和方法
  • 我们学习了最常用的 Mainframe 测试命令
  • 我们理解了几个 Mainframe 自动化测试工具,它们有助于我们改进 Mainframe 测试过程。

下一主题Adhoc Testing