【系统架构设计师】论文:论软件系统测试及其应用

论文:论软件系统测试及其应用

文章目录

论文一

摘要

2021年12月,我所在公司组织了某市环境影响评价会商系统一期的开发工作。我有幸作为该项目的技术负责人参与整个开发过程。该项目主要业务需求是技术评估流程业务,包括规划环评流程、建设项目流程、竣工验收项目流程、环保专项资金评估流程。本文以该系统为例,主要论述了软件系统测试技术在该项目中的具体应用。在系统测试阶段,我们从功能测试和用户界面测试以及性能测试三个方面对该项目进行了测试工作。功能测试主要验证业务流程的正确以及表单数据的合法输入;用户界面测试主要验证界面和原型的匹配以及浏览器的兼容性;性能测试主要验证系统最大在线人数的并发。通过以上技术使得项目的测试工作顺利进行,最终项目成功上线,获得用户一致好评。

正文

为促进某市环评信息化的建设,某市环境工程评估中心向市环境工程评估中心递交了《某市环境工程评估中心关于申请环评基础数据库建设试点单位的请示》,环保部评估中心已正式回函,同意将该市作为全国环评基础数据库的试点单位,并与环保部评估中心开展国家级环评数据库的技术合作和共建共享工作。我所在的公司是一家专注环保业务的软件开发公司,其中环境影响评价是我们的主要业务之一。通过招标,我们公司成功的中标了这个项目, 2021年12月,我们正式进行项目的开发工作, 2022年6月,完成了项目的验收工作。我作为技术负责人全程参与了这个项目的开发、测试工作。

环境影响评价基础数据库是指支撑环境影响评价全生命周期,以及环境影响评价过程产生的数据的集合。主要包括支撑数据、业务数据、管理数据三大库群。环评基础数据库的建设过程实际上是是构建"横向"支撑数据库群和"纵向"业务数据库群,以及搭建管理数据库群的过程。"横向"支撑数据库群主要包括支撑环境影响评价全生命周期(环评、技术评估、审批管理、监督后评价、公众参与等)的数据资源。"纵向"业务数据库群包括环境影响评价全生命周期产生的所有数据资源,涉及战略环评、规划环评、区域环评、项目环评等,管理数据库群主要包括为环评管理服务的基础支撑数据,如环评资质管理数据、环评从业人员数据、技术评估专家库等。 该系统在功能和性能方面要求较高,因此,采用合理的系统测试方法显得至关重要。

软件测试是软件交付客户前必须要完成的重要步骤之一,目前仍是发现软件错误(缺陷)的主要手段。系统测试是将已经确认的软件、计算机硬件、外设、网络等其他元素结合在一起,针对整个系统进行的测试,目的是验证系统是否满足了需求规格的定义,找出与需求规格不符或与之矛盾的地方,从而提出更加完善的方案。系统测试的主要内容包括功能性测试、健壮性测试、性能测试、用户界面测试、安全性测试、安装与反安装测试等。功能性测试主要通过白盒的测试方法,主要目的是验证系统是否达到了用户提出的需求或者隐性的需求。用户界面测试主要的目的是验证系统的界面设计是否达到客户的要求,浏览器的兼容性。性能测试主要是系统在一定负载的情况下表现出来的性能是否达到客户的性能指标,同时发现系统中的性能瓶颈、并优化软件最终达到优化系统的目的。结合我们系统的实际情况,我们对系统进行了功能性测试、用户界面测试和性能测试。

一、功能性测试

该阶段的主要任务是通过白盒测试的方式验证系统是否符合需求规格说明书上的业务。在实际测试中,首先测试人员根据需求规格说明书,制定了测试计划和录入了测试用例,然后在按模块的一个一个进行测试。在测试中主要对业务流程是否符合需求和流程表单的各个节点的表单的必填项以及代办测试。由于这个系统的流程比较多,流程节点也比较多,所以测试的过程中需要频繁的切换账号来验证流程的正确性。比如项目负责人录入了一个项目,提交后到部门主任审核并分配办理人员。测试人员需要先用项目负责人登陆系统,然后录入一个项目并提交,退出登陆后再用部门主任账号登陆,查看是否有代办事宜,通过代办进入审核页面,然后提交下一步时候选择业务办理人员,这样流程就流转到业务办理人员的代办了,业务办理人员登陆后,也是通过代办进入后在这个阶段需要验证表单的一些字段是必填的是否验证了必填。测试人员通过这样的测试流程一个一个流程和模块的测试,最终完成了功能性测试的目的,发现了一些bug并提交到了QC系统。

二、用户界面测试

该阶段的主要目的测试系统的用户界面是否符合用户的要求,用户的要求是界面大方简洁、兼容目前市场的主流浏览器并且系统的代办业务在手机端也可以兼容显示。对于界面要求,测试人员主要是根据美工提供的页面原型和实际的系统对比,测试效果是否和页面原型的效果一致。对于浏览器的兼容测试,测试人员使用的方法是下载并安装目前的主流浏览器,使用每个浏览器访问业务系统,验证在各个浏览器中系统是否有不兼容的情况,比如界面变形、有些验证失效、表格对齐等。对于代办业务在手机端显示,测试人员通过在手机登陆系统后,查看代办列表是否有提醒提示,通过提示是否能够看到代办的项目名称和提交的时间。通过这个阶段的测试,测试人员发现了在一些功能的问题,比如在建设项目审批流程的项目负责人编写报告书阶段,其中附件报告书是必须上传的,但是现在不上传也能提交。在界面测试的时候发现表格的样式和美工提供的原型相差很大,不支持只适应,手机代办页面,代办列表不能自适应手机的界面。通过这个阶段的测试发现了一些界面上的问题也提交到了QC系统。

三、 性能测试

该阶段的主要任务是系统在一定负载的情况下表现出来的性能是否达到客户的性能指标,该系统的主要的性能指标是单台服务器在500人同时在线的情况下系统是否能提供正常的服务。为了完成这个测试,测试人员要求开发人员单独在一台配置为4核16G内存硬盘为机械硬盘的服务器上部署该系统,然后通过性能测试软件loadrunner对系统进行性能测试。测试的过程为:并发的人数以10、30、50、100、200、300、400、500的方式依次进行登陆和退出的测试,并对TPS、响应时间、点击率、数据库cpu负载、应用服务器cpu负载和服务器吞吐量进行了记录。在测试的过程中当用户并发达到400的时候,系统的性能明显的下降了很多,通过向开发人员反映,经过几次的优化后,最终在并发为500的时候,系统的性能没有明显的下降,达到了客户提出的性能的要求。

总结

2022年6月,系统顺利通过验收并且上线运行。系统上线后,系统功能和性能都达到用户的要求,得到各个部门领导和业务人员的一致好评。但是系统上线一段时间以后也出现了一些不足的地方,比如建设项目流程,在办公室人员核对节点,审核不通过的时候需要上传说明文档,由于测试人员的疏忽没有测试到这个要求,导则在实际流程过程中项目审核不通过的时候也可以提交,还要系统上线后很快就发现了问题,我们也及时的修复了这个漏洞。我们准备在二期的项目中对测试这块加大要求,以保证项目在线上环境尽可能少的出现低级的错误。 实践证明,有效利用多种测试方法充分进行系统测试,可以有效降低项目风险,对项目顺利进行起到至关重要的作用。通过该项目的顺利实施和验收,让我在系统测试方面受益良多,也深刻认识到我们技术工作者要不断学习,拼搏进取,提高自身的素质和能力,为国家的环保事业奉献自己。

论文二

摘要

2015年3月,我所在公司承担了某养老管理信息平台的开发工作,我有幸作为该项目的技术负责人参与整个开发过程,并负责了该项目的需求分析与系统设计的工作。该系统以养老为主线,其中包括养老档案,照护计划,服务审计,状况跟踪,费用管理,决策支持等方面的60多个业务功能模块组成。 本文以养老管理平台为例,主要论述了软件系统测试技术在该项目中的具体应用。通过采用功能分解、等价类划分及边界值分析来完成系统的功能测试;通过采用LoadRuner等测试工具完成压力测试;通过编写并发测试用例,利用地毯式的逐渐增加阈值量的方式来完成并发测试。通过以上测试技术的运用,大大提升了系统的稳定性及可靠性,最终项目顺利上线,获得用户一致好评。

正文

目前我国已经进入到老龄化社会,老龄人口逐年增长,按照老龄办提供的数字,预计到2020年中国的老年人口将要达到2.48亿,与之增加的养老消费人均三千元左右,从整个养老产业的规模来看,估算在2025年要增加到五万亿规模,市场前景巨大。随着互联网的迅猛发展,各行各业都在进行着互联网+的尝试,希望搭上这个发展契机。其中,养老领域更迫切需要解决养老专业化程度低,信息化不足,健康照护水平滞后等一系列亟待解决的问题。

2015年3月,我所在公司承担了全国老龄办及全国几十家养老和医疗机构合作进行的养老管理信息平台的开发工作,我有幸作为该项目的技术负责人,参与整个开发过程,并负责了该项目的需求分析与系统设计的工作。由于我们公司在医疗行业领域有着丰富的成功经验,同时,近些年在养老领域也成功实施过很多成熟的案例,所以,一期投资方出资3000万,委托我们进行这款综合性养老管理平台的开发工作。该系统以养老为主线,其中包括养老档案,照护计划,服务审计,状况跟踪,费用管理,决策支持等方面的60多个业务功能模块组成,系统功能相当完备。

经过前期对全国几十家养老机构和相关合作的医疗单位的调研分析,我们这个系统主要需要解决几大问题。其中包括养老机构从传统方式向先进的精细化管理过渡,人员组成结构和工作方法的改变,如何更好的医养结合对老人进行健康照护等。因此,如何提升系统的稳定性及可靠性,软件测试方法的运用显得至关重要。

系统测试的主要内容包括功能测试、健壮性测试、性能测试、用户界面测试、安全性测试、安装和反安装测试等。其中,最重要的工作是进行功能性测试和性能测试。功能性测试主要采用黑盒测试,主要目的是检查功能是否按照SRS的要求正常使用,软件是否能够恰当地接收输入数据并产生正确的输出信息,软件运行过程中能否保持外部信息的完整性;性能测试主要验证软件系统在承担一定负载的情况下所表现出来的特性是否符合客户的需要,主要指标有响应时间、吞吐量、 并发用户数和资源利用率等。性能测试主要目的验证软件系统是否能达到用户和提出的性能指标,同时发现软件系统中存在的性能瓶颈,并优化软件,最后起到优化系统的目的,包括发现缺陷,性能调优,评估系统的能力,验证稳定性和可靠性等方面。

本文基于整个养老管理信息系统结合具体软件测试的各种方法,主要对项目的功能测试和性能测试中的压力测试、并发测试几个方面进行详细的论述。

首先,系统的功能测试。如何能够对覆盖用户提出的所有需求,这个是进行功能测试的核心目标。由于功能测试的方法很多,我们主要采用了功能分解,等价类划分,边界值分析来进行测试。起初,根据项目在需求分析阶段整理的需求分析文档(SRS),我们对每个功能模块进行细化分解,建立功能测试用例并编写测试用例文档,譬如,照护计划模块,包括护理员和护士角色,根据角色划分具体工作,测试用例就需要拆开编写,具体的个人卫生,常规照顾等属性护理员角色,护理工作,医疗服务等属于护士角色。子模块继续拆分,个人卫生包括穿衣服务,起床梳洗等。继续拆分就是每个业务功能中包含具体的数据输入和保存等操作功能。经过这种自上而下的梳理和拆分,功能测试用例对整个系统基本全部覆盖,保证功能不缺失。然后,针对具体的数据输入项,为了保证数据输入的合理有效,我们又针对特殊字段进行了等价类划分的用例测试。譬如,电话,体温值,血压值等输入项,进行了有效类和无效类划分,同时,结合边界值的分析,确保了系统输入数据的正确有效。

其次,系统的压力测试。由于养老系统本身采用的B/S架构风格开发SAAS服务平台,服务器统一部署,用户采用浏览器和移动设备(主要是手机和PAD),系统用户规模较大和未来有可能会不断增加,如何保证系统在大量用户下系统响应正常,服务器是否能够承受住多大压力?进行有效的性能测试,其中压力测试是解决以上疑问的必要手段。我们基于需求分析阶段关于非功能需求的分析,综合考虑当前用户规模和近期可能的使用情况,对服务器配置和型号进行选型,采用了1U的刀片服务器,内置负载均衡配置,热插拔,性价比高,扩展方便。首先,根据系统部署方案和测试用例,利用LoadRuner等测试工具在服务器上进行压力模拟测试,评估一下压力峰值,观测并记录下CPU,内存等使用情况,为了充分利用服务器,同时,又保证系统的稳定运行,我们以CUP和内存到达75%最高上限。其中测试发现没有达到预计标准的情况,我们首先进行了程序上的优化,提高CUP的使用率和降低对内存的消耗,然后,有些软件优化不了的考虑服务器的扩充,最后保证了系统压力性能的要求。

最后,系统的并发测试。基于B/S模式的分布式服务平台,每天同时有大量用户在工作使用,如何保证系统在满足正常功能的前提下,不会被使用人数的增多而影响,这个就是并非测试需要解决的问题。我们基于需求分析阶段的分析结论,编写了并发测试的测试用例,根据并非场景较多的模块进行了重点测试。利用LoadRuner软件,录制了使用脚本,利用地毯式的逐渐增加阈值量的方式,譬如,用户登陆,老人列表是使用最频繁的模块,我们模拟1000,1100,1200等不同阈值,如果测试过程中出现问题,把问题反馈给开发人员进行调试优化,很多问题是系统没有进行系统没有充分考虑到业务场景,对多线程处理不当造成的,经过定位问题和并进行优化后,很多问题重新进行测试后,确实得到了解决和改善。但是,在充分发挥软件能力的同时,服务器使用上达到了上限,为了保证系统的高可用和用户的使用效果,我们又通过扩展服务器的方式来提升并发量。最后,通过部署4台应用服务器,基本满足需求分析中前期全国使用用户数量并发量控制在1000左右的要求,响应速度在2s以内的要求。

总结

整个项目历时10个月开发完成,到目前运行稳定。通过在生产环境一段时间的使用,用户普遍反馈良好。但同时,也存在一些的不足,譬如,关于养老机构楼层设置这部分,由于用户提出修改需求,增加每个楼层的建筑结构图,简化了处理,但是,在测试过程中测试不够全面,没有进行充分的性能测试,导致用户使用过程有时会有些慢,经过测试查出是程序问题,重新优化的处理方式,并进行了充分的性能测试,响应时间小于1s,达到了使用要求,最后获得用户的认可。

实践证明,有效利用多种测试方法充分进行系统测试,可以有效降低项目风险,对项目顺利进行起到至关重要的作用。养老管理平台是一个通用的管理平台,接下来,作为项目的技术负责人,我会总结现阶段的经验教训,在后续系统升级完善中,不断思考和改进系统测试中的不足,在后续项目中充分发挥系统测试的更大作用,为公司创造效益的同时,也能够为客户开发出更稳定更高效的系统。

更多内容请见备考系统架构设计师-核心总结索引

相关推荐
ftswsfb1 小时前
【系统架构设计师(第2版)】七、系统架构设计基础知识
系统架构
幺零九零零3 小时前
【C++】socket套接字编程
linux·服务器·网络·c++
free4 小时前
netstat中sendq/recvq用于排查发送端发送数据的问题
服务器
力姆泰克5 小时前
看电动缸是如何提高农机的自动化水平
大数据·运维·服务器·数据库·人工智能·自动化·1024程序员节
力姆泰克5 小时前
力姆泰克电动缸助力农业机械装备,提高农机的自动化水平
大数据·服务器·数据库·人工智能·1024程序员节
程思扬5 小时前
为什么Uptime+Kuma本地部署与远程使用是网站监控新选择?
linux·服务器·网络·经验分享·后端·网络协议·1024程序员节
sun0077005 小时前
拷贝 cp -rdp 和 cp -a
linux·运维·服务器
tingting01196 小时前
Linux 普通用户禁用sudo su - 命令
linux·运维·服务器
WZF-Sang6 小时前
Linux—进程学习-01
linux·服务器·数据库·学习·操作系统·vim·进程
没有名字的小羊7 小时前
二.Linux文件与目录管理
linux·运维·服务器