本文假设对某大型 SOA 系统进行的性能测试。其中主要的测试场景是案例的申请,保证所有在线用户同时在线录入档案。测试场景包括了创建成员的信息、收入及支出信息和提交救援案例的申请。共有 10 个 web services。
在这个系统中,性能测试需要模拟很多人同时在线的情景,通过性能测试工具能模拟任意多的人同时在线,而且要保证系统性能稳定,不论任何时候都要保证系统的请求和响应时间基本保持稳定,不会随着数据库的数据的增加而变慢。基于这些问题,就需要找到一种有效的方式来对系统进行性能测试。
1. 为什么要准备铺底数据
在上面的场景中,需要一个长时间稳定的环境,那我们就可以增大数据库里面的数据量,并用一些负载平衡的应用服务器环境。综上所述,可以在数据库里面存入铺底数据,在服务器端搭建集群服务器。
那么如何制作铺底数据呢?以下的几段我们将详细阐述。
1.1 什么是铺底数据
铺底数据就是我们在做性能测试之前,在数据库里面除数据库字典表外按照业务逻辑存入的大量的数据。这些数据可以视为垃圾数据,因为它们对系统的业务逻辑没有实际的影响,但对系统的性能却有着很大的影响。
铺底数据需要按照实际的情况去生成,要符合实际的生产情况的表的数据比例。譬如:有一张表的数据量和另外一张表的倍数关系是 5:1,那么准备数据的时候不论准备的数据是多少条,也需要保证这两个表的数据量的倍数是 5:1。
铺底数据虽然是垃圾数据,但同样需要遵守数据库中数据的依赖关系。比如一对一,一对多的关系。
如下是我们在性能测试中准备的数据:
在性能测试之前在 DB2 里面准备的铺底数据,总量是:10.5 GB。
表 1:在性能测试之前在 DB2 里面准备的铺底数据 Table Name Data size(KB) Data Count Interested_party 3,630,594 7,730,000 Address 178,600 1,230,000 Interested_party_type_association 760,719 7,720,000 Household_member 546,328 4,487,000 Household 28,840 1,239,000 Document 610,632 5,251,000 Interested_party_association 542,390 4,958,000 Interested_party_address 99,602 1,232,000 Contact_phone 143,581 1,232,000 Address_contact_phone 109,356 1,232,000 Case 269,039 2,479,000 Case_document_association 22,731 1,235,000 Case_party_association 537,562 4,958,000 Evidence 2,793,073 43,295,000 evidence_party_association 796,680 43,295,000