• 软件测试自动化之- API Test


    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--培养技能,手工测试非常枯燥乏味,提高不了技能。

    待测方法的代码如下:


    View Code

    好了,下面来介绍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.方案 

    View Code

    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、给测试用例结果文件加上实际戳

    View Code

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

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

        用DateTime TimeSpan可以实现

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

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

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

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

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

    14、自动运行测试套件

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

      

    在这里,稍微实现了代码

    View Code

    结果如下:


    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自动化测试介绍基本完毕

  • 相关阅读:
    python_Opencv_使用Matplotlib模块
    django中同源策略和跨域解决方案
    ES6常用语法
    django之页面缓存
    django组件之ContentType
    我的博客园设置
    rest_framework 之版本控制
    rest_framework 之分页器
    在django项目中手动模拟实现settings的配置
    rest_framework之url控制器详解
  • 原文地址:https://www.cnblogs.com/binyao/p/5003495.html
Copyright © 2020-2023  润新知