51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2527|回复: 0
打印 上一主题 下一主题

TestLink的性能软肋

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2012-9-24 14:36:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
研究了一段Testlink(1.9.3),我认为它的设计确实无法胜任大数据量(十万案例十万Bug)。哪些地方有问题呢?

1、树形查询
TestLink(在大数据量下)性能最糟糕的地方,在于它的树形查询。多个功能都涉及树形查询,它的方法都是在PHP代码中做递归查询。这种方式效率相当低下,在数据量大的时候(几万个案例)完全无法接受。

实际上,一些高级的数据库支持直接在SQL中实现树形查询(或通过存储过程实现)。采用SQL树形查询后,速度可以提高成百上千倍。TestLink应该区分情况,针对特定的数据库采用不同的查询方式。

2、表结构设计
Nodes_hierachy是Testlink最核心的对象主干表,项目、需求、案例规约、案例、案例版本、步骤、测试计划……几乎所有对象(的基本信息)都保存在这个表中,导致此表记录数超多,相当影响性能。实际上每种对象有自己特定的逻辑,比如查找案例对应的步骤,在步骤表按照案例ID查就可以了,为什么要作为父子关系保存到这个表呢?我估计这个设计是为了复制对象时方便,但它对性能影响太大了。

另外,testlink的设计方式是:几乎所有的操作都限定在“当前项目”上;这样在查询所有信息时,都需要根据nodes_hierachy中的“项目”找到其子孙,然后从中过滤当前项目的记录,这也是性能差的一个原因。

如果是我来设计,首先会把固定层级的对象都从nodes_hierachy表剥离出来,这个只保存层级不定的对象(如需求或测试规约);其次,在各个表(包括nodes_hierachy)中都增加项目ID字段。

3、界面显示总数
在TestLink以树形结构展示信息时,每一级树干都会显示子节点个数,这导致它每次都必须组装整棵树,在数据量大的情况下导致PHP内存不足(前提是已经解决了树形查询的问题,否则就连内存不足都等不到呢)。这个设计当然有一定用处,但是它与性能有严重冲突,怎么办?鱼与熊掌不可得兼,舍鱼而取熊掌者也……

TestLink1.9.4已经出来了,据说主要是针对性能问题做的改进。如果上面这些问题没有解决,我估计它的性能不会有本质上的提高。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-10 07:29 , Processed in 0.064895 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表