(4)系统内部模块的组合:
较为复杂的系统,都会有自己的模块组合方式。我们需要了解系统由几个模块组成,各个模块的耦合关系是怎样的,不仅对于功能测试中的异常测试用例的设计有很大帮助,对于性能测试的帮助也同样不可小觑。
举一个比较简单的例子:aqc系统,这个系统是供外部查询的,内部的模块大致分为:网络通信层,请求分发层,功能处理层。网络通信层主要是利用某网络通信组件,处理网络通信,请求分发层dispatch,主要将网络通信层队列的包根据cmdcode的不同分发到后端的功能处理层,功能处理层则有一个个小svr组成,每个svr处理不同的查询请求。
图2
倘若有一个性能需求是发现现网有一个查询分支性能不OK,那么我们就需要很快的锁定关键的模块,瓶颈很可能存在与处理这条分支的svr上。
其次了解了系统的各个模块以及模块之间的耦合关系,在理解性能曲线,调整测试方案时同样很重要。
2、踩准关键点,进一步深挖系统
系统的性能指标,除了最典型指标即吞吐量或者响应时间,另外还有很多我们需要关注的指标,比如cpu,内存,io,数据库连接数操作等等,于是我们在测试前还需要进一步深挖的系统,找出以下几个关键点:
(1)内存分配和使用。消息队列的使用,缓存的使用
(2)文件,网络IO操作:大文件读取到内存,或者将内存写会文件,是否操作频繁
(3)耗cpu的操作:比如一些大内存排序
(4)数据库的操作:频繁的进行数据库的读写操作,频繁的建立数据库连接等等
(5)网络调用:网络时延以及连接的并发
(6)临界资源:多进程处理模式中是否有加锁不恰当的行为
(7)……