API 测试(一)

发表于:2009-9-04 14:50

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:James D. McCaffrey    来源:.NET软件自动化测试之道

  API(Application Programming Interface)测试的自动化是软件测试最基本的一种类型。从本质上来说,API测试是用来验证组成软件的那些单个方法的正确性,而不是测试整个系统本身。API测试也称为单元测试(Unit Testing)、模块测试(Module Testing)、组件测试(Component Testing)以及元件测试(Element Testing)。从技术上来说,这些术语是有很大的差别的,但是在日常应用中,你可以认为它们大致相同的意思。它们背后的思想就是,必须确定系统中每个单独的模块工作正常,否则,这个系统作为一个整体不可能是正确的。毫无疑问,API测试对于任何重要的软件系统来说都是必不可少的。

  例:一个窗体程序,估且叫StatCalc,它可以计算一组整数值的平均值。在后台,StatCalc程序引用了MathLib.dll库,这个库包括一些用于计算平均值的方法,比如计算算术平均值的ArithmeticMean(),计算几何平均值的GeometricMean(),以及计算调和平均值的HarmonicMean()。

  我们的目标是测试上述三个方法,而不是使用了这三个方法的整个StatCalc程序。为了将待测试和用于测试它们的测试套件(Test Harness)系统区分开来,待测程序通常叫作SUT(System Under Test)、AUT(Application Under Test)或者IUT(Implementation Under Test),此例中使用AUT这个术语。

  需要进行测试的几个方法属于一个叫作Methods的类,这个类位于MathLib命名空间(namespace)内,这几个方法的定义如下:

  namespace MathLib

  {

  public class Methods

  {

  public static double ArithmeticMean(params int[] vals)

  {

  //计算并返回算术平均值

  }

  private static double NthRoot(double x, int n)

  {

  //计算并返回n次方根

  }

  public double GeometricMean(params int[] vals)

  {

  //使用n次方根计算并返回几何平均值

  }

  public static double HarmonicMean(params int[] vals)

  {

  //此方法未实现

  }

  }//class Methods

  请注意,ArithmeticMean()是一个静态方法,GemetricMean()是一个实例方法(instance method),而HarmonMean()还没有完成,并不能进行测试。如何处理静态方法、实例方法以及未完成的方法是编写轻量级的API测试自动化程序时,最常见的三种情况。每个待测方法都接受整数序列作为参数(由params关键字指明),并且返回一个double类型的值。大多数情况下,用不着测试那些辅助的私有函数,比如说NthRoot()。如果辅助函数有错误,在测试其他用到了这个辅助的方法时,会把这些错误暴露出来。但是如果辅助函数非常复杂,则最好需要用到本文讲到的技术写一个专门针对它的测试用例。

  手工测试这个API包括以下步骤:创建一个小的测试程序,把Methods类拷贝到测试程序,针对待测方法硬编码(Hard-coding)一些输入值,运行这个存根程序(stub program)以得到实际的输出结果,然后通过肉眼来比较实际的结果与期望的结果是否一致,从而决定测试通过与否,接下来再把结果记录到Excel表格或者类似的数据存储文件。要对待测方法的正确性有信心,可能要成百上千次地重复上述的测试过程。更好的方法是通过编写自动化程序来完成测试。

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

  速度:可以非常快速地运行成千上万个测试用例

  精确性:不受人为因素的干扰,比如记录错误结果

  确定性:每次都以同样的方式运行,而手工测试常常根据测试人员的不同而有细微的差别

  效率:可以在晚上也可以在白天运行,同时你可以做别的事情

  提高技能:提交测试人员的兴趣并且培养他们自身的技能,而手工测试通常是枯燥乏味的,并且提高不了什么技能。

  接下来的几篇依次讲解如下技术:准备API自动化测试程序,运行程序,保存运行结果。此外,还可以学到一些用来处理特殊情况的技术,比如有些方法会抛出异常,或者有些方法可以接受字符串作为参数。同时还讲述如何管理API自动化测试的一些技术,比如通过编程的方法用E-mail来发送测试结果。

21/212>
《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • QXQXQ
    2015-4-10 11:14:06

    API 测试(四)   http://www.51testing.com/html/17/n-170117.html      无法打开

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号