软件测试自动化之- 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--培养技能,手工测试非常枯燥乏味,提高不了技能。
待测方法的代码如下:
好了,下面来介绍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的更多相关文章
- 《软件测试自动化之道》读书笔记 之 基于Windows的UI测试
<软件测试自动化之道>读书笔记 之 基于Windows的UI测试 2014-09-25 测试自动化程序的任务待测程序测试程序 启动待测程序 获得待测程序主窗体的句柄 获得有名字控件的 ...
- 软件测试自动化…python学习到什么程度?代码好不好学!
软件测试自动化…python学习到什么程度?代码好不好学! 如下:
- 《软件测试自动化之道》读书笔记 之 基于反射的UI测试
<软件测试自动化之道>读书笔记 之 基于反射的UI测试 2014-09-24 测试自动化程序的任务待测程序测试程序 启动待测程序 设置窗体的属性 获取窗体的属性 设置控件的属性 ...
- 《软件测试自动化之道》读书笔记 之 底层的Web UI 测试
<软件测试自动化之道>读书笔记 之 底层的Web UI 测试 2014-09-28 测试自动化程序的任务待测程序测试程序 启动IE并连接到这个实例 如何判断待测web程序完全加载到浏览 ...
- 《软件测试自动化之道》读书笔记 之 SQL 存储过程测试
<软件测试自动化之道>读书笔记 之 SQL 存储过程测试 2014-09-28 待测程序测试程序 创建测试用例以及测试结果存储 执行T-SQL脚本 使用BCP工具导入测试用例数据 ...
- 《软件测试自动化之道》读书笔记 之 XML测试
<软件测试自动化之道>读书笔记 之 XML测试 2014-10-07 待测程序测试程序 通过XmlTextReader解析XML 通过XmlDocument解析XML 通过XmlPa ...
- Ganymed实现基本的自动化部署API
Ganymed SSH-2 for Java是一个纯Java实现的SHH2库,官网为http://www.ganymed.ethz.ch/ssh2/,最新的更新时间为2006年10月,在用之前,请仔细 ...
- appium自动化常用API
常用函数 一.获得信息类API (1)获取当前页面的activity名,比如: (.ui.login.ViewPage) current_activity() 比如我们需要实现这个登录的功能时,主要 ...
- 使用python编写量子线路打印的简单项目,并使用Sphinx自动化生成API文档
技术背景 该文章一方面从量子线路的打印着手,介绍了一个简单的python量子线路工程.同时基于这个简单的小工程,我们顺带的介绍了python的API文档自动化生成工具Sphinx的基本使用方法. 量子 ...
随机推荐
- linux CentOS7 安装spark
上次安装了scala-2.11.8,这次安装spark-2.1.0版本 1.下载spark-2.1.0 打开terminal 进入当前用户目录 /home/sks wget http://d3kbcq ...
- EOSS V3.0 企业运营支撑系统(基于RBAC原理的权限管理)
一:EOSS 功能介绍 其于用户,角色,权限,菜单的一套“简约实用”的权限管理系统,可在其基础之上,快速进行二次开发. 一个用户可以选择多个角色. 一个角色可以选择多个权限. 一个菜单可以有无限级子菜 ...
- SQL-查询排名
select row_number() over(order by amount) as rank,* from dbo.t_group
- linux系统用户下的crontab任务不执行问题处理
需求:需要每一天对数据库做一个备份,oracle数据库,linux系统. 备份命令采用最简单的导出\导入. 首先确认服务器是否开启任务计划服务,只有root用户才能对crond服务进行开启和关闭 [r ...
- BSTR
BSTR A BSTR (Basic string or binary string) is a string data type that is used by COM, Automation, a ...
- 《Java程序设计》第16周周四:GUI编程及文件对话框的使用
第一部分:实验项目 项目一:文件及选择 目的:了解文件对话框的用法,熟悉GUI中事件驱动的核心步骤. 1. 阅读博文 "JFileChooser (Java Swing提供的文件选择对话框 ...
- H面试(23):求子数组最大和
题目描述: 输入一个整形数组,数组里有正数也有负数. 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 求所有子数组的和的最大值.要求时间复杂度为O(n). 例如输入的数组为1, -2 ...
- Windows平台Hadoop编译、安装、配置与运行(转)
http://www.srccodes.com/p/article/38/build-install-configure-run-apache-hadoop-2.2.0-microsoft-windo ...
- TP框架中的A方法和R方法
ThinkPHP 跨模块调用操作方法(A方法与R方法) 跨模块调用操作方法 前面说了可以使用 $this 来调用当前模块内的方法,但实际情况中还经常会在当前模块调用其他模块的方法.ThinkPHP 内 ...
- 移动端网页宽度值(未加meta viewport标签)
移动端网页宽度值(未加meta viewport标签): iphone:980px Galaxy(盖乐世):980px Nexus:980px blackberry(黑莓):980px LG:980p ...