在学习大型机测试概念之前,让我们先了解
什么是大型机?
主机是一个高性能、高速的计算机系统。它用于更大规模的sc,主要用于金融、保险、零售和其他需要多次处理海量数据的关键领域。
大型机测试
大型机测试是基于大型机系统对软件应用程序和服务进行测试的过程。大型机测试的目的是通过验证和确认方法来确保软件应用或服务的性能、可靠性和质量,并检查其是否可以部署。
在执行大型机测试时,测试人员只需要知道CICS屏幕的导航。在一个终端仿真器上起作用的更改也会在其他终端仿真器上起作用。
- 大型机应用程序(也称为作业批处理)根据使用需求开发的测试用例进行测试
- 大型机测试通常使用输入文件中设置的各种数据组合对部署的代码执行。
- 在大型机上运行的应用程序可以通过终端仿真器访问。仿真器是客户端计算机上唯一需要安装的软件。
在本初学者教程中,将了解-
- 大型机属性
- 大型机手工测试的分类
- 如何进行大型机测试
- 大型机自动化测试工具
- 大型机测试中的方法论
- 批量测试中涉及的步骤
- 在线测试中涉及的步骤
- 在线批量集成测试中涉及的步骤
- 大型机测试中使用的命令
- 开始大型机测试的前提条件
- 最佳实践
- 大型机测试挑战和故障排除
- 遇到的常见折弯
- 大型机测试期间面临的常见问题
大型机属性
-
虚拟存储
- 这是一种让处理器模拟大于实际实际存储量的主存储的技术。
- 是一种有效使用内存来存储和执行各种大小任务的技术。
- 使用磁盘存储作为实际存储的扩展。
-
多道程序设计
- 计算机同时执行多个程序。但是在任何给定的时刻,只有一个程序可以控制CPU。
- 它是为有效利用CPU而提供的设施。
-
批处理
- 是一种以作业为单位完成任何任务的技术。
- 作业可能导致一个或多个程序按顺序执行。
- 作业调度程序决定作业的执行顺序。为了最大限度地提高平均吞吐量,作业根据其优先级和类别进行调度。
- 批处理所需的信息通过JCL(作业控制语言)提供。JCL描述批处理作业-所需的程序、数据和资源。
-
分时分时
- 在分时系统中,每个用户都可以通过终端设备访问系统。用户输入立即处理的命令,而不是提交计划稍后执行的作业。
- 因此,这被称为“交互处理”。它使用户能够直接与计算机交互。
- 分时处理称为“前台处理”,批处理作业称为“后台处理”。
-
假脱机
- 代表在线同步外围设备操作。
- 设备用于存储程序/应用程序的输出。假脱机输出被定向到输出设备,如打印机(如果需要)。
- 一种利用缓冲优势来有效利用输出设备的设备。
大型机手工测试的分类
大型机手动测试可以分为两种类型:
1. 批处理作业测试-
- 测试过程涉及执行当前版本中实现的功能的批处理作业。
- 验证并记录从输出文件和数据库中提取的测试结果。
2. 在线测试-
- 在线测试是指对CICS屏幕的测试,类似于对网页的测试。
- 可以更改现有屏幕的功能,也可以添加新屏幕。
- 各种应用程序可以有查询屏幕和更新屏幕。作为在线测试的一部分,需要检查屏幕的功能。
如何进行大型机测试
- 业务团队准备需求文档。其确定在发布周期中将如何修改特定项或过程。
- 测试团队和开发人员收到需求文档。该版本的其他75%将用于测试应用程序和进程等开箱即用功能。
-
因此,大型机应用程序必须分两部分进行测试: 1. 测试需求-测试应用程序的功能或需求文档中提到的更改。
- 测试集成-测试整个流程或向受影响的应用程序接收或发送数据的其他应用程序。回归测试是此测试活动的主要焦点。
大型机自动化测试工具
以下是可用于大型机自动化测试的工具列表。
- REXX
- Excel
- QTP
大型机测试中的方法论
考虑一个例子:一家XYZ保险公司有会员注册模块。正如前面讨论的,它采用两种方法进行大型机测试,即在线测试和批处理测试。
- 在线测试在会员注册屏幕上进行。就像网页一样,数据库使用通过屏幕输入的数据进行验证。
- 离线注册可以是纸质注册,也可以是第三方网站上的注册。离线数据(也是如此,对于大型机应用程序测试,我们可以使用以下方法。
- 批处理作业行中的第一个作业验证输入的数据。例如,让我们说特殊字符、仅数字字段中的字母等。
- 第二项工作基于业务条件验证数据的一致性。例如,子女投保不应包含受抚养人数据、成员邮政编码(注册计划不提供服务)等。
- 第三个作业以可以输入数据库的格式修改数据。例如,删除计划名称(数据库将只存储计划ID和保险计划名称)、追加录入日期等。
- 第四个作业将数据加载到数据库中。
- 批处理作业测试分两个阶段对此过程进行-
- 每个作业都是单独验证的,并且
- 通过向第一个作业提供输入平面文件并验证数据库来验证作业之间的集成。(中介结果必须经过验证,以获得额外的谨慎)
以下是大型机测试所遵循的方法:
步骤1) :冒烟测试
此阶段的主要重点是验证部署的代码是否在正确的测试环境中。它还确保代码不存在严重问题。
步骤2) :系统测试
以下是作为系统测试的一部分进行的测试类型。
- 批处理测试-此测试将通过验证测试范围内的批处理作业所做的输出文件和数据更改的测试结果并进行记录来完成。
- 在线测试-此测试将在大型机应用程序的前端进行。在这里,将测试应用程序的正确输入字段,如保险计划、计划利息等。
- 在线-批处理集成测试-此测试将在具有批处理流程和在线应用程序的系统上进行。验证在线屏幕和批处理作业之间的数据流和交互。
(此类型测试的示例-考虑更新计划详细信息,如提高利率。兴趣的更改是在更新时进行的,在本例中,测试将通过验证Plan Details屏幕和为更新所有帐户而运行的批处理作业来完成)。
- 数据库测试-对来自大型机应用程序(IMS、IDMS、DB2、VSAM/ISAM、顺序数据集、GDG)的数据进行布局和数据存储验证的数据库。
步骤3) :系统集成测试
此测试的主要目的是验证与被测系统交互的系统的功能。
这些系统不会直接受到需求的影响。重要的是)可以在系统之间进行可能的流动,以及由各个系统采取的结果操作。
在此阶段进行的测试类型包括
- 批量测试
- 在线测试
- 在线批量集成测试
步骤4) :回归测试
回归测试是任何类型的测试项目中的常见阶段。大型机中的此测试确保批处理作业和不直接与被测系统交互(或不在需求范围内)的在线屏幕不受当前项目版本的影响。
为了进行有效的回归测试,应该根据测试用例的复杂性列出一组特定的测试用例,并且应该创建回归床(测试用例存储库)。只要版本中推出了新功能,就应该更新此集。
步骤5) :性能测试
进行此测试是为了找出前端数据、升级在线数据库等高命中率领域的瓶颈,并预测应用程序的可扩展性。
步骤6) :安全测试
进行此测试是为了评估应用程序在对抗反安全攻击方面的设计和开发情况。
对系统进行两重安全测试-主机安全和网络安全。
需要测试的功能有
- 完整性
- 机密性
- 权限
- 身份验证
- 可用性
批量测试中涉及的步骤
- 在QA团队收到批准的包(包中包含程序、JCL、控制卡、模块等)后,测试人员应根据需要预览内容并将其检索到PDS中。
- 将生产JCL或开发JCL转换为QA JCL,也称为作业设置。
- 复制生产文件并准备测试文件。
- 对于每项功能,都将定义作业序列。(如大型机中的方法论部分中的示例所述)。作业应使用带有测试数据文件的sub命令提交。
- 检查中间文件,以确定数据丢失或出错的原因。
- 检查最终输出文件、数据库和假脱机以验证测试结果。
- 如果作业失败,假脱机将具有作业失败的原因。解决错误并重新提交作业。
测试报告-如果实际结果与预期结果不一致,则记录缺陷。
在线测试中涉及的步骤
- 在测试环境中选择在线屏幕。
- 测试每个字段是否有可接受的数据。
- 在屏幕上测试测试场景。
- 从联机屏幕验证数据库中的数据更新。
测试报告-如果实际结果与预期结果不一致,则记录缺陷。
在线批量集成测试中涉及的步骤
- 在测试环境中运行作业并验证在线屏幕上的数据。
- 更新在线屏幕上的数据,并验证批处理作业是否使用更新后的数据正确运行。
大型机测试中使用的命令
- 提交-提交后台作业。
- 取消-取消后台作业。
- 分配-分配数据集
- Copy-复制数据集
- 重命名-重命名数据集
- 删除-删除数据集
- 作业扫描-将JCL与程序、库、文件等绑定,而不执行它。
需要时还会使用许多其他命令,但不频繁。
开始大型机测试的前提条件
大型机测试所需的基本详细信息包括:
- 用于登录应用程序的登录ID和密码。
- 简要了解ISPF命令。
- 文件名、文件限定符及其类型。
在开始大型机测试之前,应验证以下几个方面。
作业
- 在执行作业扫描之前执行作业扫描(Command-JobScan)以检查错误。
- 类参数应指向测试类。
- 使用MSGCLASS参数将作业输出定向到假脱机或JHS,或根据需要使用MSGCLASS参数。
- 将作业中的电子邮件重新路由至假脱机或测试邮件ID。
- 注释初始测试的FTP步骤,然后将作业指向测试服务器。
- 如果在作业中生成IMR(事件管理记录),只需在作业或参数卡片中添加注释“测试目的”即可。
- 作业中的所有产品库都应该更改并指向测试库。
- 这项工作不应该无人照管。
- 为了防止作业在出现错误的情况下无限循环运行,需要添加指定时间的时间参数。
- 保存作业的输出,包括假脱机。可以使用XDC保存假脱机。
文件
- 仅创建所需大小的测试文件。必要时使用 GDGs(Generation Data Groups – Files with the same name but with sequential version numbers– MYLIB.LIB.TEST.G0001V00,MYLIB.LIB.TEST.G0002V00 so on ) 将数据存储到同名的连续文件中。
- 应正确编码文件的DISP(Disposition-描述在步骤或作业正常或异常终止后系统执行保留或删除数据集)参数。
- 确保用于作业执行的所有文件都已正确保存和关闭,以防止作业进入挂起状态。
- 在使用GDG进行测试时,确保指向正确的版本。
数据库
- 执行作业或在线程序时,确保未插入、更新或删除意外数据。
- 另外,确保使用正确的DB2区域进行测试。
测试用例
- 始终测试边界条件,如-空文件、第一条记录处理、最后一条记录处理等。
- 始终包括阳性和阴性测试条件。
- 如果在程序中使用了标准程序,如检查点重新启动,则Abend模块、控制文件等包括用于验证模块是否已正确使用的测试用例。
测试数据
- 测试数据设置应在测试开始之前完成。
- 在没有通知的情况下,切勿修改测试区域上的数据。可能有其他团队使用相同的数据,他们的测试将失败。
- 如果在执行过程中需要生产文件,则在复制或使用它们之前,应获得适当的授权。
最佳实践
- 在批处理作业运行的情况下,最大CC 0表示作业已成功运行。因此,在宣布作业成功之前,总是希望检查所有输出。
- 在测试中进行一次工作的演练总是一种很好的做法。对于受测试周期更改影响的作业,应遵循此流程。
- 在测试周期开始之前,应该提前很好地完成设置的测试工作。这将有助于提前发现任何JCL错误,从而节省执行期间的时间。
- 在通过SPUFI访问DB2表(模拟器上用于访问DB2表的选项)时,始终将自动提交设置为“no”,以避免意外更新。
- 测试数据可用性是批量测试中的主要挑战。所需数据应在测试周期之前创建,并应检查其完整性。
- 一些在线事务和批处理作业可能会将数据写入MQS(消息队列),以便将数据传输到其他应用程序。在测试之后检查MQS是否工作正常是一种很好的做法。
大型机测试挑战和故障排除
面临挑战 | 应对方法 |
---|---|
不完整/不明确的要求 可能可以访问用户手册/培训指南,但这些与文档要求不同。 | 测试人员应该从需求阶段开始参与SDLC。这将有助于验证需求是否可测试。 |
数据设置/标识 可能存在应根据要求重用现有数据的情况。有时很难从现有数据中识别所需的数据。 | 对于数据设置,可以根据需要使用自主开发的工具。 对于获取现有数据,应该提前构建查询。如果遇到任何困难,可以向数据管理团队提出创建或克隆所需数据的求。 |
作业设置 将作业检索到PDS后,需要在QA区域设置作业。因此提交作业时不会包含生产限定符或路径详细信息。 | 应使用作业设置工具,以克服设置过程中出现的人为错误。 |
临时求 可能存在由于上游或下游应用程序问题出现问题而需要支持端到端测试的情况。这些求增加了执行周期中的时间和精力。 | 使用自动化脚本、回归脚本和框架脚本可以帮助减少时间和工作开销。 |
及时发布范围更改的新闻稿 可能存在这样一种情况,即代码影响可能会完全改变系统的外观。这可能需要更改测试用例、脚本和数据。 | 范围变更管理流程和影响分析应到位。 |
遇到的常见错误
-
S001-发生I/O错误。
原因-在文件末尾读取,文件长度错误,试图写入只读文件。
-
S002-无效的I/O记录。
原因-尝试写入超过记录长度的记录。
-
S004-打开期间出错。
原因-无效的DCB
-
S013-打开数据集时出错。
原因-PDS成员不存在,程序中的记录长度与实际记录长度不匹配。
-
S0C1-操作异常
原因-无法打开文件,缺少DD卡
-
S0C4-保护异常/存储违规
-
原因-尝试访问程序不可用的存储。
-
S0C7-程序检查异常-数据
-
原因-更改记录布局或文件布局。
-
Sx22-作业已取消
-
S222-用户在没有转储的情况下取消作业。
-
S322-作业或步骤时间超过指定的限制,或者程序处于循环或时间参数不足。
-
S522-TSO会话超时。
-
S806-无法链接或加载。
原因-作业ID找不到指定的加载模块。
- S80A-虚拟存储不足,无法满足GETMAIN或FREEMAIN求。
- S913-尝试访问用户未授权的数据集。
-
Sx37-无法为数据集分配足够的存储。
Error Assist-一个非常流行的工具,可以获取各种类型的Abend的详细信息。
大型机测试期间面临的常见问题
-
放弃作业-为成功完成作业,应检查特定位置是否存在数据、输入文件和模块。由于多种原因可能会面临Abends,最常见的原因是-无效数据、输入字段不正确、日期不匹配、环境问题等。
- 输出文件为空-尽管作业可能成功运行(MaxCC 0) ,但输出可能不是预期的。只有这样才能更进一步。
-
输入文件为空-在某些应用程序中,将从上游进程接收文件。在使用接收到的文件测试当前应用程序之前,应对数据进行交叉验证,以避免重复执行和返工。
总结:
- 大型机测试就像任何其他测试过程一样,从需求收集、测试设计、测试执行和结果报告开始。
- 为了有效地测试应用程序,测试人员应该参加由开发和业务团队安排的设计会议。
- 测试员必须熟悉各种主机测试功能。在测试周期开始之前。
- 大型机应用程序测试是一个耗时的过程。应遵循明确的测试时间表进行测试设计、数据设置和执行。
- 应该有效地进行批量测试和在线测试,不能遗漏需求文档中提到的任何功能,不能遗漏任何测试用例。