繁体   English   中英

如何设计我的测试自动化

[英]How to design my test automation

这是我的测试场景。

当命令行执行时-许多值被写入db中的不同表中。

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

到目前为止,我所做的-

  • 执行命令

  • 连接到数据库

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

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

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

因此,我试图查看是否可以更好地简化支票。 像声明一个类(用于表)那样,将列作为暴露的属性。 这样,我至少不会弄错列名。

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

让我知道是否有任何细节不清楚,或者我是否想详细说明这些细节。

感谢您的光临。

我不知道用于此问题的标准方法,但我将提供一些想法。

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

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

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"), ...];
  }
}

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

希望这有助于或至少引起一些想法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM