在
上一篇博客:django, mongodb与测试中,我推荐使用json作为数据库测试的配置格式,因为json格式简单,语言中立,容易解析, 又不似xml那样繁琐。json有它的缺点,主要有:
- 没有注释
- json不能表达复杂的类型
- json不能引用程序数据
- 程序不能引用json数据
第一个缺点是显而易见的,测试数据也要和别人交流,最简单也要给为了将一些数据和其它数据分开,要加上一些分隔符,仅仅用空白做分隔符的作用并不明显。要给json加上注释也是有办法的,一种办法是使用一个可以带注释的json解析器,然而这不幸破坏了json的语言中立。另外一种办法就是约定凡是以'--'开头的字符串都为注释,直接将它忽略,这种方式更易实施,但需要对解析之后的数据做后续处理。一个可能的json配置是:
[
"-- 以下是用户数据",
{
"name": "marlon",
..........
},
..........
"-- 以下是商品数据",
{
....
}
]
这种方式可能很奇怪,因为它必须首先要求这是一个正确的json格式,但它的确可以做到有注释了。
第二个缺点我在
上一篇博客已经讲过,可以对dict加一个标识对象类型的tag来解决,这里不再赘述。
第三个缺点可能并不明显,这只在需要测试数据需要动态生成的数据时才会出现这种问题。这有绕过的方法,就是在json使用占位符,用来替换程序中对应的相应,例如 {{ name }},会在加载数据时替换成程序中的某个name变量值。
第四个缺点想必大多数写数据库测试的都碰见过,因为我们依赖配置数据来将数据库設定到某个固定初始状态,在测试中也必定要引用这初始状态的数据,但我们不能通过程序引用json中数据,这就需要我们在测试中重复配置数据中设置,如果配置数据改了,也要更新程序中相应的数据,否则测试就会失败,这会导致测试用户更改的成本明显加大,而测试恰恰是需要经常修改的。这个问题没有简单地绕过去的方法。
然而,使用程序作为数据配置却可以轻松避免以上的缺点。它的缺点是丧失了语言中立,这其实不是问题,用什么语言开发,就用什么语言写测试,这很正常,也很普遍。它对语言的唯一的要求就是它的表达力要强,表达数据,字典(或者Map)之类的对象要很简单,Python, Ruby都符合这样的要求。对于Java,就可以使用Scala,Groovy来作测试数据的配置,因为它们都和java集成很好,或者用Java做开发,却用Scala或Groovy来写测试也是很好的选择。
使用程序作为数据配置带来的一个主要问题是如何保证测试数据配置的不可修改,一旦修改了测试数据,就会影响其它的测试。这个缺点跟它带来的巨大优点相比是微不足道的。最好的方法是尽量利用程序提供的不变类型,python对list不变类型tuple,但对dict却没有提供类似的构造。一种方法是靠程序员的自我約束,这很不靠谱,保不定哪个新手就直接更改测试数据,这引起的问题很难查出来。另外一种方法就是创建dict的一个不可变版本,但是这样就可能导致配置复杂,或者可以在加载数据时自动用它的不可变版本替换。
我将测试数据配置格式从json改成python之后,测试代码清楚了许多,完全没有硬编码的测试数据了,更改测试数据也不会导致测试的失败。
分享到:
相关推荐
.NET开发暗示该软件是使用微软的.NET Framework或其更新版本(如.NET Core或.NET 5+)编写,这是一套用于构建各种类型应用程序的开发平台,支持多种编程语言,如C#、VB.NET或F#。 这个测试软件的核心功能可能包括...
Delphi是Embarcadero Technologies开发的一款集成开发环境(IDE),它基于Pascal编程语言,特别适合创建Windows桌面应用程序。Delphi以其高效的编译器、丰富的组件库和直观的可视化设计界面而著名,使得开发过程既...
在IT行业中,数据库编程是至关重要的技能之一,尤其是在使用Visual C++ 6.0(简称VC6.0)这样的开发工具时。这个经典的IDE虽然已有些年头,但仍然被许多开发者用来创建数据库驱动的应用程序。本文将深入探讨标题和...
它支持多种编程语言,如C#、.NET和VB.NET,并且与SQL数据库兼容。 在C#、.NET和VB.NET中,连接到SQL数据库通常涉及到以下关键知识点: 1. **ADO.NET框架**:这是.NET Framework的一部分,提供了与各种数据库交互的...
"DbSettings"暗示这是一个用于配置和管理数据库设置的应用程序,而".exe"扩展名表示这是一个可执行文件,通常用于Windows操作系统中,用户可以通过双击运行来启动这个数据库测试工具。 使用这样的工具,用户可以...
你可以使用SQL脚本或者编程语言(如Java,Python等)批量插入数据。确保数据库中有足够的数据以便进行有效的测试。 2. **导入JDBC驱动**: 打开JMeter,点击“测试计划”,然后选择“浏览...”按钮,导入你之前...
- JDBC (Java Database Connectivity) 是一种用于执行 SQL 语句的 Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。 - JDBC允许Java应用程序连接到各种类型的数据库,执行SQL...
标题"数据库连接测试代码jdbc"指的是使用Java编程语言,通过Java Database Connectivity (JDBC) API来建立和测试与数据库的连接。JDBC是Java中用于与各种数据库进行交互的一组接口和类,它允许Java程序执行SQL语句并...
Delphi是一种流行的面向对象的编程语言,常用于开发桌面应用程序。Ado(ActiveX Data Objects)是Microsoft提供的一个数据访问接口,使得开发者能够轻松地访问各种数据库,包括但不限于SQL Server、Oracle、MySQL等...
在"LabView图形化编程语言之lv连接数据库.zip"这个压缩包中,我们可能找到一系列关于如何使用LabView与数据库进行交互的源码和教程。LabView提供了多种数据库连接方法,包括ODBC(Open Database Connectivity)、OLE...
7. **性能调优**:数据库性能优化涉及硬件配置、存储结构、索引策略等多个方面。书中将指导读者如何分析和改善数据库的性能,例如使用性能监视工具、调整内存分配和优化查询语句。 8. **数据库恢复**:数据库系统...
3. **使用连接工具**:使用数据库管理工具(如MySQL Workbench, SQL Server Management Studio, 或 pgAdmin)或者编程语言中的数据库驱动进行连接尝试。例如,Python可以使用`pymysql`或`psycopg2`库,Java可以使用...
7. **数据库基础**:数据库原理是C#编程的重要补充,包括关系型数据库理论(如ER模型)、SQL语言(SELECT、INSERT、UPDATE、DELETE语句)、索引、视图和存储过程等。 8. **事务与并发控制**:在多用户环境下,...
Java数据库连接测试是一种常见的开发任务,它涉及到Java编程语言与各种数据库系统的交互。在这个场景中,我们看到几个关键的文件,这些文件暗示了这个小工具可能支持多种数据库,包括Oracle、MySQL、Microsoft SQL ...
在"LabView图形化编程语言之sql测试程序"这个项目中,我们可以看到开发者使用LabView与SQL(Structured Query Language)进行了集成,这是一种用于管理和处理关系数据库的强大工具。SQL允许用户查询、更新和管理...
数据库课程设计通常旨在让学生实践数据库...进一步研究这些源代码将揭示更多的技术细节,如使用的编程语言、框架和具体的数据库操作。这个项目为学生提供了宝贵的实践经验,涵盖了数据库设计、开发和管理的多个方面。
总的来说,这个主题涵盖了数据库管理系统的基础知识,LabVIEW的数据库操作,以及跨平台数据库测试的实践。了解这些知识点对于IT专业人员来说至关重要,特别是那些需要处理数据集成、分析和可视化任务的工程师和科学...
德塔Socket流可编程数据库语言引擎系统1.0.0是一个专为数据库操作设计的软件系统,它基于Java编程语言,利用Socket通信技术实现数据的流式处理和远程操作。这个系统提供了高度可编程的接口,允许用户通过特定的API...
该项目为基于Java的多语言集成TGraph数据库性能测试与比较分析设计源码,包含171个文件,其中Java源文件142个、Dockerfile 7个、XML文件3个、JavaScript文件2个、Shell脚本1个、HTML文件1个、Gitignore文件1个、...
VB(Visual Basic)是一种由微软开发的面向对象的编程语言,尤其适合于快速构建Windows应用程序。在本案例中,我们讨论的是一个使用VB编写的MSSQL(Microsoft SQL Server)数据库连接测试工具。这个工具的主要目标是...