Skip to content

weicfd/AutoTest

Repository files navigation

AutoTest 自动化测试系统部署


自动化测试数据脚本解析部分实现思路

将已生成的脚本文件和数据文件进行XML文件数据解析,按脚本序列生成的次序依次解析,边解析脚本边与工程项目进行交互,发送和获取消息,每一组消息序列组成一个测试用例,对每一个测试用例记录其操作的输入,输出和预期输出,保存到测试报告中。

整个解析逻辑的实现包含

  • 项目驱动模块
  • 脚本解析模块
  • 测试报告生成模块
  • BUG分析模块
  • 配置文件模块
  • 工具模块

以上共6个模块组成。其中项目驱动模块是整个程序的入口,脚本解析模块是整个程序的主模块。


项目驱动模块

项目驱动模块的运行要求工程项目服务器在运行中的环境,并且当前程序运行后成获取到远程资源,并能够通过URL向其发送请求、接收相应的响应结果。

对数据文件进行预加载,再对脚本文件根据其序列生成顺序进行排序,依次对每个脚本文件进行脚本解析,在解析到脚本末位时,针对每一种测试用例的情况,对服务器进行一组测试,最后以日志文件的形式保存测试结果报告和BUG分析报告。


脚本解析模块

脚本解析模块由数据池DataPool,生成器Generator,解析器Parser和发送器Sender4个类组成。

数据池 DataPool

DataPool中保存了运行过程中的所涉及的数据,其中服务数据,对象数据,值数据是通过哈希表HashMap来存储的,而脚本操作序列则通过列表ArrayList来存储。对于值数据,由于其具有重复访问的特性,设置一个对应的游标值来标明上次访问结束的位置,实现数据的顺序循环访问。

生成器 Generator

生成器Generator负责的是预加载数据和脚本信息,通过Dom4j对XML文件进行读操作,并获取对应的节点值和属性值,将这些信息存入数据池的哈希表中以便后续的解析器Parser的访问。这样设计的好处是,当脚本文件的格式发生修改时,只需要修改这一部分即可,而无需涉及其他复杂模块。

解析器 Parser

解析器负责对每一组操作序列进行解析,根据不同的情况生成测试用例。对于一组包含n个操作的操作序列的前n-2个操作组成的子序列,由于测试的递增性,已经在之前的测试中保证其正确性,因此只需要实现其操作,不需要针对其进行不同情况的测试。与此同时,用一个对象列表objList模拟其在数据库中的存放。

对于最后两个操作分别定义为待测试操作和检测操作。检测操作指定为Find操作,且与待测试操作的操作对象类型一致。针对待测试操作,采取不同的策略进行测试:

  • ADD
    • 正确添加,随机取的键值对,检测时能够找到新添加的对象
    • 不与前ID重复,取前一个同类型的ID,顺便直接取其数据测即可, 应该无法添加,检测时无法找到新添加的对象
  • UPDATE
    • 正确修改,选取前一个同类型的对象,模拟修改,检测时能够找到修改后的对象并符合修改后的预期输出
    • 没有对应locator的修改,若对象列表中没有符合的修改目标,选取同类型的新值(保证对象列表中未出现)进行修改,检测时无法找到需要修改的对象,修改失败,原操作序列的值不变
    • 若未找到前一类型,参考上条进行检测,检测时修改必失败,原操作序列的值不变
  • DELETE
    • 正确删除,选取前一个同类型的对象,模拟删除,检测时无法再找到该对象
    • 没有对应locator,删除为空操作,无对象被删除,选取同类型的新值(保证对象列表中未出现)进行删除,检测时无法找到需要删除的对象,删除失败,而随机选取对象列表中的对象进行检测,均能找到
    • 若未找到前一类型,参考上条进行检测,检测时删除必失败,原操作序列的值不变
  • FIND
    • find对象列表中的数据,检测时结果符合预期
    • find对象列表中的不存在的数据,检测时结果为未找到

发送器 Sender

发送组装好的URL和参数字符串,若URL数量与参数字符串数量一致,依次发送数据到服务器并接受其响应值,返回最后一次响应值的结果,即检测时FIND操作对应的结果。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages