【系统分析师】高分论文:论系统测试技术及应用
【摘要】
2022 年 7月,我作为项目负贵人,参加了某银行的统计数据发布系统建设项目。该项目合同金额230 万元,合同工期为半年。统计数据发布系统的主要目标是为该行建设一个企业级的数据统计、分析、发布平台,实现定制化的数据应用、分析、展示功能;实现灵活的综合查询分析、明细数据查询、固定报表展示、移动设备数据展示、风险分析、自助取数等功能,达到“统一数据来源、统一数据口径、统一数据出口”的数据管理目标。
本文结合本人在该项目中的实践,分别讨论了单元测试、功能测试、集成测试和性能测试各阶段测试的特点,详细闸述了各阶段所采用的具体测试措施和策咯。其中,重点讨论了性能测试的类型和如何在项目中实践各种性能测试。项目最终成功实施完成并顺利验收,得到了客户高层领导的高度认可。
【正文】
某银行在各项经营活动中积累了大量的数据资源,这些数据除了支撑银行生产业务流程的正常运转之外,也越来越多地被用于支撑监管报送、精准营销、战略决策、风险控制、绩效考核等运营管理和决策过程的数据分析工作。为了满足业务部门和管理人员不断增长的报表数据需求,为决策分析提供依据,反映全行业务发展情况,识别和监测凤险状况。某银行管理层迫切需要规划和建立科学、规范、易于扩展、灵活性强的统计数据发布平台。这样就可以进一步完善全行报表体系,降低该行报表开发成本和难度,缩短报表开发周期,规范报表使用流程,降低管理与维护复杂度,实现统计数据集中及统计报表统一、规范管理。
2022 年 7 月,我作为项目负责人,参与并主导了该银行的统计数据发布平台项目,该项目合同金额230万元,实施周期为半年。本项目产品架构基于 Java 的 B/S 架构,数据库平台是 Oracle 11g,中间件为 Weblogic,报表展现工具采用国内知名的 Smartbi 产品,调度工具为国内产品 TASKCTL,数据采集工具采用开源的 Kettle。我们在 IBM 完全生命周期测试模型的基础上,根据本项目的具体特点和要求,结合成本效率进行了裁剪,形成本项目的测试策略、总体测试计划和详细测试计划,并得到了银行方技术部门的认可。测试整体上划分为单元测试、功能测试、集成测试、性能测试和验收测试等阶段。验收测试主要由银行方的业务人员进行。本文重点讨论前面4个阶段的测试。
一、单元测试
该阶段测试工作有应用系统测试和 ETL 开发单元测试。应用系统测试由于是用 Java 开发,所以采用了 JuNit 进行单元测试,由于本项目是基于标准产品的二次开发,类的数量不多。因此我们要求开发人员对每个新开发的类都要写对应的测试类,测试通过后需要写单元测试报告,并要求组内人员交叉检查执行。ETL 开发是采用 Perl 脚本+存储过程的方式进行的,单元测试阶段主要采用公司自主研发的ETL 开发自动化测试工具。测试人员进行合理的配置,可自动化运行 ETL脚本,可进行空值检查、主键重复检查等。
二、功能测试
由于本系统既要在 PC 端展示,同时也需要在移动端展示,因此要求应用系统的功能测试主要通过编写一份测试案例能在多个终端执行。我们使用公司自主研发的基于 STAF 自动化测试框架的测试工具进行功能测试,确保页面功能在跨平台,如PC端、安卓端、苹果端都能运行正常,并确保在各个终端的链接跳转都是符合预期的。
三、集成测试
集成阶段需要将每个 ETL 作业配置在调度工具上,因此集成测试阶段主要测试调度作业是否按照各种串行、并行机制分别运行,确保依赖作业的先后顺序执行。对对于银行信息系统,数据指标的正确性是重中之重。以往项目中,由于对数据准确性测试不充分,导致试运行阶段不断返工,不仅增加了开发人员投入,还导致了验收期的延长。
本阶段的测试重点是测试数据加工的准确性。我们主要采用以下措施:
(1)每个字段的值域范围测试,譬如某个指标的历史波动范围在100万~300 万元之间,那么加工后的指标就不应该超过这个范围。
(2)借助于业务经验,采用总分比对的方式。银行一般有分户账和汇总账两本账。分户账通过按照机构、科目分类从明细汇总后,应当和现有的汇总账一致。以上测试时都可用公司自主研发的 ETL 测试工具,在上面配置校验规则后进行测试执行。另外,测试数据的完整性是确保数据准确性的关键所在,因此我们便在测试案例编写过程中同步进行测试数据的申请。
四、性能测试
性能测试的目的是验证软件系统是否能够达到用户提出的性能指标,同时发现软件系统中存在的性能瓶颈,并优化软件,最后起到优化系统的目的。具体来说,包括以下四个方面。
(1)发现缺陷:软件缺陷往往与软件性能密切相关,因此缺陷测试需要结合性能测试一起进行。
(2)性能调优:性能调优并不一定发现性能缺陷,还可以更好地发挥系统潜能。
(3)评估系统的能力:测试能够满足性能需求的条件极限。
(4)验证稳定性和可靠性:在一定负载下一段时间内,评估系统稳定性和可靠性是否满足要求的方法。
性能测试类型包括基准测试、负载测试、压力测试、稳定性测试、并发测试等。项目实际中,我们采用 LoadRunner 作为性能测试工具。基准测试方面,我们主要测试系统在用户登录数处于非月初正常水平下,系统的各项运行指标,并将各项指标进行记录作为参考。
由于每月初系统用户数都会有一个激增的过程,主要是因为月初为各业务部门进行数据统计报送的高并发期。因此需要基于这个用户数量再加上未来 5年内该行业务部门统计人员增加的预估情况进行负载测试和压力测试。我们要求系统的负载测试能至少持续 10 个工作日,压力测试要求系统运行的各项指标不能低于基准测试指标的 80%。这些基准指标中,我们重点关注数据查询响应效率指标,要求1 千万级记录数以下的表查询响应时间为1 秒以内;1干万~3 千万级记录数的查询响应时间为3 秒以内;3 千万~6千万级记录数的查询响应时间为6 秒以内。同时,在测试过程中,还要及时发现 ELT 作业运行时间超过基准指标的作业进行整改,避免了这些作业在上生产后由于运行缓慢导致整体时间窗口延长。
2022 年 12月,本项目历时半年后,在双方项目领导的大力支持下,在双方项目组成员的共同持续奋战下,项目最终成功实施完成并顺利验收。由于客户的高层领导在手机移动端看到了准确数据组的业务指标,而且界面美观、功能流畅,因此高度认可该项目。客户的科技部门也给我们公司发来了表扬信,并与公司快速签约项目的二期建设。本项目的成功很大程度上得益于采用了科学测试技术、测试方法,测试取得的不错效果,有力保障了项目的质量。
项目仍然存在不足的地方,具体有以下几个方面:开发人员测试观念不强,虽然要求进行单元测试,但是开发人员没有很好地执行,导致在集成测试阶段发现较多问题。公司自主研发的测试工具在配置上不够灵活,无法快速配置大量测试案例。一些测试案例的数据准备不够完备。我们从实践中领会到测试确实可以在保证软件质量方面起到很大的作用,但同时我们也认识到测试中还有很多领域和知识点需要继续研究和实践。新技术的发展对测试也提出了新的要求和挑战,需要我们继续研究探索。