Skip to content

Conversation

@shiyimin
Copy link

但愿这种方式方便讨论。

@shiyimin
Copy link
Author

@monkeytest15

我将这些行为封装成N个方法

iqa直接就是将方法封装了啊,以你的微博为例,在写代码之前,你会这样写iqa步骤:

场景:测试发表删除微博
* 以[用户名]和[密码]登陆
* 发表[微博]
* 刷新
* 给[微博]添加[评论]
* 删除[微博]
* 验证[微博]和[评论]都已经被删除

数据:
   | 用户名 | 密码 | 微博 |
   | abcd  | abcd  | 一条测试微博 |

然后再写代码实现这些步骤。

是不是会因为我写case的不完整从而造成建模不完整呢?

如果对需求理解不完整,导致case不完整,会导致建模不完整的。

但是怎么保证自动生成的case就一定有联贯性呢?

通过跟踪状态之间的切换,即变量之间的联系

比如会不会出现1.登陆weibo-->删除某条评论 (其实应该先添加评论再走删除路线的)这种情况呢?

基本上不会,如果图里两个节点没有路径的话。

总结一下,我的设想是这样的,首先,我把整个待测程序看成是一个数据流图,即待测程序接受外部数据,经过内部的一系列处理输出数据。那建模的过程其实就是建立这个数据流图,在这个数据流图当中:

  1. 图里的每个节点是程序在运行过程中接受的数据和产生的中间和最终数据,这些数据节点就是iqa里的 变量
  2. 节点之间的有向边既是从一个数据(状态)转化到另一个数据(状态)的过程,这个过程就是我上面说的 iqa步骤
  3. 图有起始状态,也就是起始输入数据,可能图里会同时有多个起始节点,每次生成测试用例时,随机选择一个起始节点开始遍历。这些起始输入数据在iqa里就是通过“数据”这个关键字处理,如上面的 “用户名”“密码”“微博” 就是起始数据。
  4. 图里有终止状态,可能会通过一个关键字 “验证” 来确定终止状态,如上面的 “验证[微博]和[评论]都已经被删除” 可以确定 “微博”“评论” 都是终止状态。
  5. 建立状态之间的切换关系,如 “微博""评论" 就建立了关联关系(但具体怎么关联起来,我还没有想好,到底是在同一条语句里出现,还是通过步骤之间的顺序确定),现在假设关联关系已经建立好了,那么 “微博”“评论” 之间的联系就是步骤 “给[微博]添加[评论]”
  6. 在生成测试用例时,通过遍历数据流之间的切换,并调用切换所用到的关联步骤,实现生成自动化测试用例的目的。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants