【问题标题】:How to design my test automation如何设计我的测试自动化
【发布时间】:2013-01-03 20:28:50
【问题描述】:

这是我的测试场景。

当命令行执行时 - 大量值被写入数据库中的不同表。

数据库中有多个命令行选项和许多值/表需要验证。我应该如何设计对 db 中值的检查?

到目前为止我所做的 -

  • 执行命令

  • 连接到数据库

  • 运行特定于命令的查询(这将非常特定于我需要查看哪些表的命令)

  • 从数据集中返回检查if dt[row][col]="value i expect"

这里的优点是我必须编写更少的代码作为框架的一部分。 这样做的缺点是我必须在开发每个测试时编写更多代码,而不是简化,有时我可能会弄错列名。

所以我想看看我是否能更好地简化检查。像声明一个类(对于一个表),其中列作为公开的属性。这样我至少不会弄错列名。

  1. 这是最简单的方法吗(从长远来看?我想编写更多可重用的代码)。如果没有,有什么最好的方法?
  2. 有没有一种简单的方法可以将表/列值从 db 导出到 c# 项目文件(作为类/代码),这样我就不必再次将所有内容都放入代码中。

如果有任何细节不清楚,或者我想让我详细说明一下细节,请告诉我。

感谢收看。

【问题讨论】:

    标签: testing automation


    【解决方案1】:

    我不知道解决这个问题的标准方法,但我会提供一些想法。

    我通常会发现自己创建类来表示表以利用编译时检查,所以我认为这是一个很好的方法。您可能想研究 Linq-to-SQL——我认为它可以为您做很多事情。为此,我有时会在 Ruby 中使用 ActiveRecord,即使在 C# 项目中也是如此,因为使用它进行开发非常快。

    或者,您可能希望将测试放在文本文件中:

    Command: 
    command to execute
    
    Expected Data:
    SELECT column FROM table;
    row name, column name, expected data
    row name, column name, expected data
    row name, column name, expected data
    
    Expected Data:
    SELECT column FROM table;
    row name, column name, expected data
    row name, column name, expected data
    

    然后编写一些代码来加载和解析文件,运行命令并比较结果。这只会排除每次测试会发生变化的事情,所以我不知道它是否会变得更好。

    另一个想法是尝试将通用代码拉入基类,并将变化的代码保留在子类中。此设计遵循模板方法模式。

    例子

    class MyTest : CommandLineTest {
      public String Command() { return "Command to execute"; }
      public String DataRetrievalCommand() { return "SELECT column FROM table"; }
    
      public DataResult[] ExpectedData() {
        return [ new DataResult("column", "row", "value"), ...];
      }
    }
    

    超类将使用这些方法来获取命令和值,但它会做所有实际工作。与文本文件类似的想法,但测试规范保存在代码中。

    希望这会有所帮助,或者至少能激发一些想法。

    【讨论】:

    • 感谢您的回复。我想我也会选择类/属性。至少我的自动化的其余部分就是这样设计的。我查看了 linq to sql,看起来它为我公开了一个数据层来查询数据库(而不是加载到数据集)。那是对的吗?还有其他方法可以将表/列自动生成到 c# 属性。谢谢。
    • 我对 Linq-to-SQL 不太熟悉。我相信它会为您创建代表您的数据库表的类。这些类将为您提供读取和写入数据库的方法,因此它应该消除列名拼写错误的可能性。
    猜你喜欢
    • 2012-07-21
    • 1970-01-01
    • 2022-12-20
    • 1970-01-01
    • 2014-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-11
    相关资源
    最近更新 更多