为任何产品设计API和GUI的测试用例真的有什么区别吗?

我正在为我的应用程序编写功能GUI测试用例(CRUD功能)。我可以使用相同的测试用例进行API测试(主要是与CRUD相关的测试用例),还是可以使用API​​测试来执行某些测试用例?

评论

您将如何通过API测试客户端验证?

令人回味。

例如在编辑页面上的任何字段值时启用“保存”按钮。

@VishalAggarwal根据我的理解,您的示例是客户端验证。它在服务器端没有任何区别,因此不会进行任何API验证。

正是Nitin,这就是我如何在API和UI测试之间划清界限。

#1 楼


用户与GUI交互
GUI与API交互
API与后端交互

理论上,GUI测试应涵盖所有API测试, 对?那么,当GUI阻止用户提交无效数据时该怎么办?您仍然需要测试API是否可以明智地处理这些情况。每层都应分别测试:


GUI:验收测试
API:功能测试
后端:单元测试

这些是不是唯一存在的测试。有集成测试等等。

您应该发现每层之间都有一些重叠。某些GUI测试不会与API交互,但有些会并且将会执行与API测试中相同的代码。后端测试也一样。有一些测试(理论上)不能进行或太难了,无法通过API进行测试,因此需要进行单元测试。

评论


不错的尝试.....所以,如果我为GUI执行所有测试用例,那么它将间接覆盖所有API和后端测试?因为它是(GUI)系统的顶层。

– Nitin Rastogi
19/12/4在6:20

@NitinRastogi我的意思相反。有些事情不能仅通过GUI进行测试。有必要对这些事情进行API测试,对那些无法通过API测试的事情进行后端测试,例如理论上不可能的异常处理,或者至少不可能从API触发的异常处理,例如收到请求后网络中断。

– CJ Dennis
19/12/4在6:23

您能否共享一些只能使用API​​进行测试的方案列表(链接或常规TC)?

– Nitin Rastogi
19/12/4在6:27



@NitinRastogi我在答案中举了一个例子。 GUI具有输入验证,因此某个字段只能是整数。但是,可以绕开GUI并直接使用API​​。如果有人为该字段传递文本而不是整数怎么办? GUI阻止您测试这种情况,但是仍然可能发生。

– CJ Dennis
19/12/4在6:31

@NitinRastogi还有更多示例-GUI可以向用户显示该用户可用的项目列表(一个API调用),然后显示这些项目之一的详细数据(另一个包含该项目ID的API调用)。即通过GUI访问总是要求提供有效项目的详细信息。但是,您需要测试如果请求了不存在的商品ID或属于该用户无法看到的另一个用户的商品ID,则API是否可以正常运行并给出适当的响应。您需要测试技术上可能的输入,即使GUI无法/不能正常发送它们也是如此。

– Peteris
19/12/5在0:06

#2 楼

是的,API和GUI与硬件产品或命令行企业软件不同,因此需要专门的方法和技术。

但是GUI和API通常是实际业务逻辑和功能之上的非常薄的一层,在设计测试时,您显然会检查GUI本身(例如元素的颜色或位置)或API(例如相关字段具有相关值)是否按预期工作,但是我们需要记住,尽管它们具有目的,并且它们

按钮的颜色或API响应字段中的值会向用户传递消息,单击复选框后的内容比可视部分-它实际上作用于某些信息并影响软件的工作方式。

#3 楼

注意:我将谈论测试本身,因为某些活动的文档仅仅是该活动本身的产物。

我不确定您的问题是关于“ ...或者“如果...的测试设计不同”。例如,
HICCUPPS:


历史记录。我们希望该系统的当前版本与以前的版本保持一致。
图像。我们希望系统与组织要投影的图像,品牌或声誉保持一致。
可比较产品。我们希望该系统与某种程度上可比较的系统保持一致。这包括同一产品线中的其他产品;竞争产品,服务或系统;或不是同一类别但处理相同数据的产品;或替代流程或算法。
声明。我们希望该系统无论是在书面形式(参考规范,设计文档,手册,白板草图等)还是在对话中(会议,公告,午餐室对话等),都与人们所说的一致。的愿望。我们认为该系统应与合理的用户可能想要的想法保持一致。
产品。我们希望系统(或产品)的每个元素与同一系统中的可比较元素保持一致。
目的。我们希望该系统与人们可能将其明确使用和隐含使用保持一致。
法规。我们期望系统与与产品或其使用相关的法律或法规相一致。 。并且每个上下文(和产品)将具有不同的启发式应用输出。

#4 楼

通常,对于UI测试,我将专注于主要的工作流程/用例。您提到了CRUD操作。我将对每一项进行测试,以确保其正常工作。通常,您可以对这些imo进行黑盒测试。 “如果今晚该UI用完了,并且这些工作流程通过了,则该UI应该很好”。对于API,我通常对每个端点进行1次或多次测试,并验证响应是否符合预期,并且通常我用灰色或白色的盒子测试一下。 “如果该API今晚发布,并且这些端点的行为符合预期,则该API应该不错”。

#5 楼

设计GUI和API测试用例的主要区别在于验证了参数及其预期结果。



GUI测试用例主要验证了用户流程,并且测试用例将验证包括前提条件,执行步骤和用户端的预期结果
相反,API测试用例将包括端点详细信息,要执行的C / R / U / D操作和预期的结果API响应

许多软件测试公司都像GUI测试一样喜欢GUI和API测试,在验证用户流的同时,后端会调用多个API,这些API相互通信。
作为单独测试的每个API的端点,在API测试期间很难测试API之间的这种通信。

评论


通过链接请求,还可以在API测试中捕获多个API交互功能流,与UI测试相比,它更易于开发和维护。

– Vishal Aggarwal
19年12月25日在16:09

根据经验,任何可覆盖API层的测试都不应在UI层开发,因为它很昂贵。

– Vishal Aggarwal
19/12/25在16:11