【基于人工智能的自主回归系统】成长笔记——狂想曲

2010-11-16  周桃林 

随着技术的发展,人们使用的软件系统也越来越复杂,测试人员的测试工作量也随之上升。引用网上看到的一段话:

        “早在很久以前,几千行代码就能写出一个软件来,比如WPS,CCED这些软件。但随着网络时代的到来,分布式系统的发展,软件系统越来越重视交互和协 作,多个模块服务的交叉调用,网间的交互安全等等,这大大提高了软件系统的复杂度和规模。Oracle曾经开发过一个邮件客户端Outlook的插件,这 个插件是安装在outlook上,提供一些常用功能,比如收发mail,calendar创建等等。但oracle的测试部门仅仅为这个插件就设计了 6000多个test case!这个数目是如此巨大,使得测试执行和产品周期产生了深刻的矛盾。这个矛盾体现在:当每个新版本发布时,如果做一遍完整测试,一个人手工测试执行 一遍6000多个test case就要半个月,而产品版本的发布周期也就一周左右,也就是说测试的速度远远跟不上产品的发布速度。在这种情形下,如果没有自动化测试帮忙,手工测试 只能望洋兴叹了!”

          其实文中,每次新版本的发布,可以理解为一次回归需求,而在大部分时间里,回归总是重复而又繁琐的,我们将花费大量的工时用于做一些令人厌倦的回归测试。

          而本文所提出的系统,是为了解决平时大量的回归任务,解放测试工作量。系统将学习线上的用户行为,然后在一个特定的环境里,模拟执行用户的操作,最后生成分析报告。

          系统模型如下:

         在线上环境中,大量的用户会发生大量的操作。

         学习系统会去采集这些操作,并对这些操作进行分析,最终产生自动生成脚本所需的数据源。

         解析系统获得数据源后,生成脚本。

         回归系统在特有的环境中,执行这些脚本。

         这是一个持续集成的过程,模仿线上用户行为,然后在回归环境中执行这些行为。该策略主要用于日常的回归,和对线上环境的模拟监控。

         优点和好处:

1. 能处理功能改造、功能优化、相邻功能变动所引发的回归需求。

2. 用例生成和执行脱离手工,释放工作量。

3. 真实模拟线上用户行为,保证主要功能点的覆盖。

4. 持续集成,及时反馈问题,减少测试工作量。

        问题的提出:

1. 对于新增功能点,线上无法采集到用户操作,不能进行测试,只能对现有的功能进行回归。

2. 线上用户操作数的数据量非常大,生成脚本时过程中对相同操作的筛选成为问题。

3. 怎样进行用户操作的采集,成为一个很棘手的问题。

4. 如何自动生成脚本,同样是一个棘手的问题。

         解决方案:

         目前还未想出完美的解决方案,初步想法是采用人工智能技术,让机器自主去线上环境学习,通过学习积累出知识库,然后通过知识库生成脚本。

         本系统自动生成脚本、自动更新脚本,重点在于释放了测试人员在编写脚本和维护脚本中的工作量。并在真实模拟线上操作这点上,保证测试覆盖率。

         目前我们还处于yy阶段,还不知道如何去实现,但只要认准方向,就不怕路远。相信通过大家的努力,一定能解决各种技术难题。

326°/3265 人阅读/0 条评论 发表评论

登录 后发表评论