文/侯玉龙
随着互联网时代的到来业务变得多元化,用户量也随之激增,系统的性能和稳定性表现变得尤为重要。在软件生命周期过程中性能测试是软件质量保障的重要活动,也是评估系统质量的重要组成部分,通过软件性能指标分析、制定、应用的探讨与研究,统一了软件性能衡量指标,明确了软件设计、开发、测试等生命周期过程各项性能标准。为软件系统降低性能风险,消除性能隐患,保障软件高效、稳定运行,提高产品质量,提升客户的满意度发挥着关键作用。
软件性能标准是研发过程中评估软件性能的基础,然而在软件需求、设计、开发、测试等整个软件生命周期存在着性能指标含糊不清、性能要求无法量化、评估困难等性能指标缺失现象,导致软件性能缺少标准和依据。
针对软件性能标准遇到的问题分析,结合当前软件性能的实际情况,开展了“软件性能标准”研究工作。通过与同行业调研以及多年来测试资产的经验积累,并结合公司实际情况,分别制定了制定基础类指标70项,扩展性指标26项的公共性能指标集,涵盖了各个角色关注的性能指标范围,为后续标准应用奠定了坚实基础。
随着业务和技术的发展,软件性能在不同角色的关注与理解也不同,用户更关注系统响应时效、运维人员更关注资源使用效率、开发人员更关注架构与代码设计。公共性能指标集结合各系统、角色的特性,通过公司各系统生产和测试原始指标梳理、分析、提取等过程,在遵循软件性能指标制定规则的条件下,分别建立了能力指标、时间指标、资源指标、扩展性指标、稳定性指标、可用性指标。
软件性能指标分析:
(1)开展原始数据梳理,针对性能指标需求,收集大量原始指标数据,同时进行数据的分类、汇总,形成原始指标数据初稿。
(2)进行指标特性分析,根据原始指标数据,开展数据特性分析、总结发展规律,并且加以研究与总结。
(3)完成指标提取定制,针对指标特性,根据不同类型、维度提取并制定相应的性能指标。
软件性能指标主要分类如下:
(1)能力指标,通过公司各系统处理能力原始指标梳理与汇总,分别从并发用户、响应时间、时间窗口、成功率等维度进行了分析与提取形成能力指标集。如,交易处理能力、数据处理能力等指标。
(2)时间指标,通过公司各系统业务响应时间原始指标梳理与汇总,分别从页面交易、接口调用、数据处理、批处理等维度进行了分析与提取形成时间指标集。如,登录类响应时间、查询类响应时间等。
(3)资源指标,根据业界对资源类指标约束,同时结合公司相关指标要求,分别从主机、中间件、数据库等方面进行了资源指标的分析与制定。如,CPU使用率、Weblogic队列、数据库死锁等。
(4)扩展性指标,通过业界可扩展性标准分析,同时结合公司各系统横向、纵向扩展性要求,分别从服务级、应用级、数据库等方面进行了扩展性指标的分析与制定。如,服务横向扩展有效性、应用纵向扩展有效性等。
(5)稳定性指标,通过公司各系统稳定运行时间窗口与要求,从系统长时间持续稳定运行方面进行分析与定义。如,稳定运行时长、内存泄漏现象等。
(6)可用性指标,通过业界可用性开展情况调研,同时结合公司可用性保障机制要求,分别从集群机制、控制机制、负载策略、主备切换、HA切换、RAC切换等可用性内容进行指标的分析与制定。如,流控机制有效性、负载策略有效性、主备切换有效性等。
在实际环境中各个系统有着不同的属性与特点,软件性能指标也有所不同。针对各异的系统通过性能指标集提供的性能指标项,各系统根据自身特性进行分析和提取,构建出属于自身的性能指标,并纳入到系统架构评审范畴,正式发布后作为需求分析、架构设计、代码开发、性能测试等工作的重要依据。
各系统性能指标需要依据性能指标集进行构建,主要分为系统性能指标抽取、系统性能指标构建等步骤。第一步进行系统性能指标抽取,在获取了系统需求、设计方面的性能需求、特性、属性(如,发生频率非常高、关键程度非常高、资源占用非常严重等)后,依据性能指标集进行系统相关特性选择与提取,提取出符合当前系统特性的性能指标集。第二步开展系统性能指标构建,抽取完性能指标后,针对各项指标属性进行指标值定义与设计,最终构建完成系统性能指标。
系统性能指标构建过程中需要遵循准则,系统性能指标需要依据软件性能指标集,根据不同指标类型进行系统指标构建。系统性能指标纳入到系统架构评审范畴,正式应用需要经过评审。系统性能指标作为开发团队在系统代码开发过程中性能方面的标准与依据。系统性能指标作为性能测试开展的准入/准出条件。
构建了软件性能指标后,需要结合公司实际情况,将性能指标应用到整个软件生命周期,为软件需求分析、架构设计、代码开发、性能测试等重要活动,提供软件性能标准。
软件性能指标实际使用情况下,在软件需求分析过程中,需求人员参照性能指标要求,充分考虑软件性能需求,量化性能指标,以保证性能需求的有效性、准确性。在软件架构设计过程中,架构设计人员需要系统性能需求开展架构设计充分考虑性能因素对架构的影响,构建并评审系统性能指标,为后续工作提供标准。在软件代码开发过程中,开发人员需要按照当前软件性能标准要求,充分考虑代码性能优化及对软件整体性能表现的影响,进行软件代码开发工作。在软件性能测试过程中,测试人员需要依据当前软件性能标准要求,开展系统性能测试工作,最终作为评价系统性能的主要依据。
软件性能指标是衡量软件质量的重要方法,通过性能指标大范围推广与应用,明确了各软件研发过程中性能预期指数、规格及标准,为软件性能分析与评估提供了标准和依据,消除了性能隐患与风险,进一步提升了软件产品质量与客户满意度。