本文档是为了给需要了解如何填写性能需求或需要引导客户填写性能需求项目组成员参考性文档(为公司内部人员)。
1. 系统的性能
1)概念
系统的性能是一个很大的概念,覆盖面非常广泛,对一个软件系统而言,包括:执行效率、资源占用、系统稳定性、安全性、兼容性、可靠性、可扩展性。
2)主要指标
响应时间、点击数、吞吐量、并发用户数、资源利用率、每秒连接数
3)不同视角的性能
* 用户角度
响应时间(最关心的指标)2/5/10原则,过长的时间等待让客户烦燥不安
系统的稳定性 HTTP500、数据库崩溃、应用服务器崩溃
* 系统角度
网络延迟、数据延迟
系统资源的使用情况 硬件配备情况 软件的配置情况(应用服务器、数据库、系统)
* 开发角度
代码实现(算法等)
数据库实现(数据模型设计、语句的实现方式等)
2. 我们的目标
我们的目标是要开发出符合用户的应用系统,其中包括性能的需求并且通过测试及其他验证等手段验证系统达到用户的要求。首先要了解客户,向客户了解应用系统运行目标硬件配置、应用环境及网络环境等。了解系统业务逻辑(可能有多种业务)及处理业务量时间分布图。然后由性能测试人员分析以上的数据制定测试策略及测试方法。例如分析出在某月的某一天10:00-11:00是系统处理业务高峰,平均处理50000个A业务量,那么性能测试人员需要根据这个数据设计一个处理业务A测试场景,验证(系统在目标硬件环境)在1个小时内至少能成功处理50000个A业务量。
3. 用户类型
* 专业型:熟悉开发应用系统,具有深厚的计算机功底,并且非常清楚系统处理业务量的分布,即能明确的提出具体的性能需求。很遗憾,一般很难遇到这么“牛人”的客户。
* 普通型:了解开发的应用系统,具有一般系统管理能力。不了解性能指标,不能明确提出具体性能需求。需求项目经理或需求人员引导客户明确性能需求,甚至需要我们开发方为客户制定符合要求的性能需求。
4. 填写性能需求调研表
专业型客户很容易向我们提供明确的性能需求,而普通型客户一般最关注的是响应时间(遵循2/5/10原则)、必须支持多少在线用户、应用服务的稳定性(如运行1周或1月服务器后应用服务还能正常提供服务等)。
为了性能测试更真实的接近系统实现的应用,性能测试人员还必须获取更为详尽的信息。可以从以下三个方面获取:
* 向项目经理调研信息:如应用系统目标运行硬件配置(此硬件设备是否运行其他服务)、应用环境(是否有其它的服务共用服务)、网络环境、数据库规模等。
* 向业务经理调研信息:业务量分布图及业务量增长分布图、关键业务量(即场景)
* 向技术经理调研信息:关键场景交易路径及对数据库操作的动作(见模板)
根据模板项目经理向客户调研时一般都能很方便获取必要的信息
(即使用户不能直接明确提出性能需求),项目组也能很容易制定出符合用户的性能需求。
接下来的问题是量化性能需求、如何制定性能测试及性能调优……