Page 156 - 《软件学报》2020年第11期
P. 156

3472                                Journal of Software  软件学报 Vol.31, No.11, November 2020

                    为了记录场景信息,本文对 Kieker 进行了改造,新增图 8 所示的页面.在每个测试用例执行前,输入对应的场
                 景名(scenario name)和权重(scenario weight),整个用例执行期间生成的每条日志都会带有这两项信息.














                                         Fig.8    Scenario input page after modifying Kieker
                                              图 8   Kieker 改造后的场景输入界面
                    为了将方法调用链和操作的数据相关联,每次方法调用返回后,在 Kieker 中拦截 JDBC 执行的 SQL 语句,
                 使用语法解析工具 JSqlParser    [38] 获取 SQL 语句操作的数据表名,再将拦截的 SQL 语句和对应的数据表名连同
                 调用链 ID 等属性一同打印到日志文件中.

                 3.2   数据处理与分析
                    Kieker 监控运行时系统,并将监控日志写入日志文件中.MSDecomposer 读取日志文件,根据日志中每条记
                 录的调用链 ID、调用实体等信息,构建数据访问轨迹图.同时,MSDecomposer 从日志文件中解析出项目的静态
                 结构(例如包(package)、类(class)和方法(method)).为了方便后续的查看和搜索,MSDecomposer 将数据访问轨迹
                 和项目的静态结构一起存储在图数据库 Neo4j             [39] 中.
                    图 9 展示了实验系统 Spring JPetStore  [40] 中“修改个人信息”这个测试场景在 Neo4j 中关联的子图,图的左半
                 边是场景涉及的类和包的结构;右半边对应于图 2 的数据访问轨迹图,从上到下依次为场景涉及的方法、SQL
                 语句和数据表.不同的节点类型使用不同的颜色表示,节点之间的连线表示包含或调用关系,记录着场景名、权
                 重等关键信息.由于在进行数据存储时创建了两个虚拟节点 Root和 Entry,分别作为包结构的根节点和方法调用
                 链的入口节点,所以这两个节点会出现在所有场景的关联子图中.
























                          Fig.9    Data access trajectory and static structure of ‘modify personal information’ scenario
                                      图 9   “修改个人信息”场景的数据访问轨迹和静态结构
   151   152   153   154   155   156   157   158   159   160   161