API测试


从本质上来说,API测试是用来验证组成软件的那些单个方法的正确性,而不是测试整个系统本身.

API测试也被称为单元测试(Unit Testing), 模块测试(Module Testing), 组建测试(Component Testing), 以及元件测试(Element Testing).

为了将待测的程序和用于测试它们的测试套件(test harness)系统区分开来,待测程序通常叫做SUT(System Under Test), AUT(Application Under Test) 或者IUT(Implementation Under Test)

通常来说,当待测函数或方法都位于DLL当中时,使用术语API测试.当待测方法位于某个类(当然,这个类可能作为一个DLL来实现)中的时候,使用术语单元测试等更为宽泛的术语.

API测试需要注意的点


  • 存储用于测试用例的数据 (文本[自定义的序列化/反序列化,IOReaderWrter],XML[XmlSerializer],数据库[ADO.net])
  • 读入测试用例的数据
  • 解析测试用例
  • 运行测试用例
  • 判定测试结果
  • 纪录测试过程与结果
  • 给测试加上时间戳
  • 综合总结测试结果
  • 纪录测试总耗时
  • 处理输入输出特殊值(null,string.Empty,"",越界值)
  • 处理"方法抛出异常"
  • 发送邮件(Report)
  • 自动运行(.Bat, Task Schedule, Daily Build & Run)(TFS)

自动化测试相对于手工测试有以下优点


  • Speed--快速地进行成千上万个测试用例;
  • Accuracy--不受人为的因素的干扰,例如记录错误的结果;
  • Precision--每次都以同样的方式运行;
  • Efficiency--晚上白天都可以进行测试;
  • Skill-Building--培养技能,手工测试非常枯燥乏味,提高不了技能。

待测方法的代码如下:



好了,下面来介绍API自动化测试的流程:


1、准备测试用例数据,最好是独立于测试套件,可以存放在txt文件 ,XML文件和数据库,以便多个测试套件重复使用。这里我准备好了

测试ID    待测方法    测试输入  期望值

0001:ArihthmeticMean:4 8:8
0002:ArihthmeticMean:2 2:24
0003:ArihthmeticMean:4 8:8
0004:ArihthmeticMean:3 2:345.4
0005:ArihthmeticMean:55 555:555
0006:ArihthmeticMean:2 444:23234
0007:ArihthmeticMean:4 8:8
0008:ArihthmeticMean:2 2:24

实际测试时,需要成千上万个测试用例数据,包括边界值,空值,无效输入。有些自动化测试工具可以自动产生测试用例数据。

2、读入测试用例数据

a.如何从测试用例文件中读入读入每条测试用例数据?

b.设计--通过while循环遍历测试用例的每一行。

c.方案

3、解析测试用例

a.如何解析出用字符串隔开的测试用例的各个字段

b.设计-使用string.Split()方法,该方法返回一个字符数组。具体使用去查查api

c.具体实现方案看接下来的代码

4、把数据转换为合适的类型

a.读入的是字符串类型,在这里必须转为整型

b.看下面的整理代码

5、判定测试用例通过与否

a.如何判定API测试用例是否通过

b.设计--调用待测方法,传给它测试用例的输入,得到返回值,然后比较实际结构和测试用例中读入的期望值是否一致

c.具体代码看下面

6、记录测试用例结果

a.如何把测试用例的结果存入独立于测试程序的简单文本文件

b.设计--在处理测试用例的主循环中,使用System.IO.StreamWriter对象把测试用例ID和测试结果写到一个文本文件。当然可以记录到XML文件或者数据库中,看需要

c.代码实现看下面

7、给测试用例结果文件加上实际戳

8、通过计算对测试结果进行总结

9、获得测试的总运行时间

用DateTime TimeSpan可以实现

10、处理输入为空或者期望值为空的情况--NULL

11、处理“方法抛出异常”的情况

12、处理输入参数为空字符串的情况

13、在测试用例失败时发送警告邮件

System.Net.Mail下的MailMessage类实现,很简单

14、自动运行测试套件

用.BAT文件可以实现,用System.Diagnosis.Process命名空间下的Start()方法

在这里,稍微实现了代码

结果如下:


CaseID Result Method Details
===============================
0001  Pass  ArihthmeticMean  actual=8
0002 Fail ArihthmeticMean actual=2
0003  Pass  ArihthmeticMean  actual=8
0004 Fail ArihthmeticMean actual=3
0005  Pass  ArihthmeticMean  actual=555
0006 Fail ArihthmeticMean actual=444
0007  Pass  ArihthmeticMean  actual=8
0008 Fail ArihthmeticMean actual=2
===========================end test run===============
pass=4Fail=4

测试结果文件2011-3-26 16-01-02  testresult.txt,内容如下

0001  Pass  ArihthmeticMean  actual=8
0002 Fail ArihthmeticMean actual=2
0003  Pass  ArihthmeticMean  actual=8
0004 Fail ArihthmeticMean actual=3
0005  Pass  ArihthmeticMean  actual=555
0006 Fail ArihthmeticMean actual=444
0007  Pass  ArihthmeticMean  actual=8
0008 Fail ArihthmeticMean actual=2

至此,API自动化测试介绍基本完毕

软件测试自动化之- API Test的更多相关文章

  1. 《软件测试自动化之道》读书笔记 之 基于Windows的UI测试

    <软件测试自动化之道>读书笔记 之 基于Windows的UI测试 2014-09-25 测试自动化程序的任务待测程序测试程序  启动待测程序  获得待测程序主窗体的句柄  获得有名字控件的 ...

  2. 软件测试自动化…python学习到什么程度?代码好不好学!

    软件测试自动化…python学习到什么程度?代码好不好学! 如下:

  3. 《软件测试自动化之道》读书笔记 之 基于反射的UI测试

    <软件测试自动化之道>读书笔记 之 基于反射的UI测试 2014-09-24 测试自动化程序的任务待测程序测试程序  启动待测程序  设置窗体的属性  获取窗体的属性  设置控件的属性  ...

  4. 《软件测试自动化之道》读书笔记 之 底层的Web UI 测试

    <软件测试自动化之道>读书笔记 之 底层的Web UI 测试 2014-09-28 测试自动化程序的任务待测程序测试程序  启动IE并连接到这个实例  如何判断待测web程序完全加载到浏览 ...

  5. 《软件测试自动化之道》读书笔记 之 SQL 存储过程测试

    <软件测试自动化之道>读书笔记 之 SQL 存储过程测试 2014-09-28 待测程序测试程序   创建测试用例以及测试结果存储  执行T-SQL脚本  使用BCP工具导入测试用例数据  ...

  6. 《软件测试自动化之道》读书笔记 之 XML测试

    <软件测试自动化之道>读书笔记 之 XML测试 2014-10-07 待测程序测试程序  通过XmlTextReader解析XML  通过XmlDocument解析XML  通过XmlPa ...

  7. Ganymed实现基本的自动化部署API

    Ganymed SSH-2 for Java是一个纯Java实现的SHH2库,官网为http://www.ganymed.ethz.ch/ssh2/,最新的更新时间为2006年10月,在用之前,请仔细 ...

  8. appium自动化常用API

    常用函数 一.获得信息类API (1)获取当前页面的activity名,比如: (.ui.login.ViewPage)  current_activity() 比如我们需要实现这个登录的功能时,主要 ...

  9. 使用python编写量子线路打印的简单项目,并使用Sphinx自动化生成API文档

    技术背景 该文章一方面从量子线路的打印着手,介绍了一个简单的python量子线路工程.同时基于这个简单的小工程,我们顺带的介绍了python的API文档自动化生成工具Sphinx的基本使用方法. 量子 ...

随机推荐

  1. windows10下部署IIS10+Django web服务

    下面不是一系列过程. 1.下载软件 Python: 2.78 Django: 1.10.3 wfastcgi-2.2.1 pywin32-219.win32-py2.7.exe 下载并安装以上软件 2 ...

  2. 全局 Style

    1.定义一个全局资源文件,如下 <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/pres ...

  3. 默认网关和默认路由 —— Cisco CCNA – Default Gateway & Default Routes

    原文:https://www.certificationkits.com/cisco-certification/ccna-articles/cisco-ccna-intro-to-routing-b ...

  4. (转)UnityVS(Visual Studio Tools For Unity)的安装与使用

    UnityVS(Visual Studio Tools For Unity)的安装与使用   一些废话 Unity 的开发者们,尤其是微软系的Unity开发者们,用Mono是不是烦死了?你是不是跟我一 ...

  5. VS2010 配置PCL1.6.0AII in one 无法启动程序ALL_BUILD

    无法启动程序D:\build\debug\ALL_BUILD 系统找不到指定文件 解决办法:将project_inliers工程设置为启动项目    找到项目右击--设为启动项目. 将project_ ...

  6. STL - 容器 - vector简单应用

    VectorTest.cpp #include <vector> #include <iostream> #include <string> #include &l ...

  7. Java 类型, Hibernate 映射类型及 SQL 类型之间的相应关系

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/ ...

  8. 获取TrustedInstaller

    Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\*\shell\runas] @="获取TrustedInstaller权限& ...

  9. 如何固定OpenERP顶的主菜单,方便滚动至第二屏以及多屏时,快速切换主菜单

    如何固定OpenERP顶的主菜单,方便滚动至第二屏以及多屏时,快速切换主菜单 作者:广州-步科,来自OpenERP应用群() 将“addons\web\static\src\css”目录下的“base ...

  10. 【BIEE】导出数据报错

    使用BIEE导出数据的时候,发现个问题,导出过程中,报错如下: 问题解决: 找到文件opmn.xml,路径为:/Middleware/instances/instance1/config/OPMN/o ...