我当时正在申请QA职位,SDET问我这个问题:
如何测试后端API?
在面试中。
我不确定我的回答是否正确。只是想知道我能不能从别人那里得到一些信息。
发布于 2013-09-05 16:30:44
如何测试API取决于很多事情。API是由外部人员/系统使用的公共API,还是更大的产品基础结构的一部分?API是一个通用术语,有时用于描述从COM接口到可以引用的DLL或JAR到REST web服务的任何内容。可以使用不同的方法来测试这些不同的东西。
通常,如果API是基础结构的一部分,您可以通过单元测试和使用它的产品对其进行彻底的测试。
如果它是一个外部可消费的API,那么您需要更彻底地使用它,因为人们使用它的方式可能比您预期的要不同,并且以非常不同的格式发送数据等等。如果它是外部可消耗的,它通常也需要有意义、直观和良好的文档记录。您还需要更加谨慎地对待什么是私有的和公开的,这对于一个只被单个产品使用的API来说可能不那么重要。
测试API几乎总是要求您为测试目的创建某种类型的使用者。您必须能够与API交互。消费者通常非常简单--或者是一个现有的工具--是由自动化测试用例驱动的,而不是手动用户交互,尽管我已经看到了一些情况,人们为测试目的创建了一个复杂的GUI应用程序,而在一些情况下,测试仍然主要是通过使用该应用程序来实现的。
如果API有依赖项,您可以选择模拟这些依赖项,以便更彻底地测试所有这些交互,并命中所有的正代码路径和负代码路径。例如,如果API与数据库交互,并且具有创建、修改和删除数据的能力,那么您可能希望模拟与数据库的交互,以便更容易地测试用例,例如当记录不存在时,或者当记录是最终记录时,或者当记录由于依赖关系或到数据库的连接不可用而无法删除时,您可以看到API将如何处理这些情况。
发布于 2013-09-07 16:38:46
在测试API时,选择工具并不是唯一需要做出的决定。至于任何测试任务,您需要决定:
现在你可能掌握的信息太少,无法做出能让你、面试官和公司股东满意的决定性决定。因此,您可以问面试官更多关于后端API的性质的问题:
发布于 2013-09-05 06:01:38
一般来说,我认为您不应该期望一个连接到API调用进行测试的模拟前端(不过,如果您有一个幸运的话!)相反,API函数通常使用单元测试和集成测试进行测试。
您需要了解API函数本身的可见性,所以测试将是白盒,或者至少是灰盒。应该为您提供一个规范文档,其中应该列出每个API函数的签名(输入参数、函数或方法名以及返回类型)。然后,在Spec中,您将编写单元测试(在我的例子中,我更喜欢PHPUnit)来检查每个API函数的输入和返回,例如测试边界值和空输入。
最后,如果API是服务的一部分,您还需要进行集成测试。这些测试将类似于服务的“端到端”测试,在该测试中,您将测试包括对API函数的调用的整个特性。您通常将在客户入口点开始集成测试,如果对客户正确,则验证返回是否有效。就我个人而言,我更喜欢Behat、Mink或Cucumber作为我的特性测试。
这是我的高级概述,我将如何测试一个API,希望这有帮助!
https://sqa.stackexchange.com/questions/6745
复制相似问题