接口测试用例设计实践总结

简介: 设计思路1)   优先级--针对所有接口1、暴露在外面的接口,因为通常该接口会给第三方调用;2、供系统内部调用的核心功能接口;3、供系统内部调用非核心功能接口; 2)   优先级--针对单个接口1、正向用例优先测试,逆向用例次之(通常情况,非绝对);2、是否满足前提条件 > 是否携带默认参值参数 > 参数是否必填 > 参数之间是否存在关联 > 参数数据类型限制 >参数数据类型自身的数据范围值限制  3)   设计分析通常,设计接口测试用例需要考虑以下几个方面:1、是否满足前提条件有些接口需要满足前置条件,才可成功获取数据。

设计思路

1)   优先级--针对所有接口

1、暴露在外面的接口,因为通常该接口会给第三方调用;

2、供系统内部调用的核心功能接口;

3、供系统内部调用非核心功能接口;

 

2)   优先级--针对单个接口

1、正向用例优先测试,逆向用例次之(通常情况,非绝对);

2、是否满足前提条件 > 是否携带默认参值参数 > 参数是否必填 > 参数之间是否存在关联 > 参数数据类型限制 >参数数据类型自身的数据范围值限制

 

 

3)   设计分析

通常,设计接口测试用例需要考虑以下几个方面:

1、是否满足前提条件

有些接口需要满足前置条件,才可成功获取数据。常见的,需要登陆Token。

逆向用例:

针对是否满足前置条件(假设为n个条件),设计0~n条用例

 

2、是否携带默认值参数

正向用例:

带默认值的参数都不填写、不传参,必填参数都填写正确且存在的“常规”值,其它不填写,设计1条用例;

 

3、业务规则、功能需求

这里根据实际情况,结合接口参数说明,可能需要设计n条正向用例和逆向用例

 

5、参数是否必填

逆向用例:

针对每个必填参数,都设计1条参数值为空的逆向用例

 

4、参数之间是否存在关联

有些参数彼此之间存在相互制约的关系

逆向用例:

根据实际情况,可能需要设计0~n条用例

 

5、参数数据类型限制

逆向用例:

针对每个参数都设计1条参数值类型不符的逆向用例

 

6、参数数据类型自身的数据范围值限制

正向用例:

针对所有参数,设计1条每个参数的参数值在数据范围内为最大值的正向用例

 

逆向用例:

针对每个参数(假设n个),设计n条每个参数的参数值都超出数据范围最大值的逆向用例

针对每个参数(假设n个),设计n条每个参数的参数值都小于数据范围最小值的逆向用例

 

以上几个方面考虑全的话,基本可以做到如下几个方面的覆盖:

主流程测试用例:正常的主流程功能校验;

分支流测试用例:正常的分支流功能校验。

异常流测试用例:异常容错校验

 

4)   编写描述

尽量逻辑化,这样方便后续的维护

 

5)   实践操作

接口样例

获取订单列表接口(多条件)

获取店铺指定期间的所有订单列表(多种条件组合),默认根据日期倒序排序。

接口方向

客户端 -> 服务端

接口协议

接口地址:$xxx_Home/xxx/鉴权前缀/xxxxx/getAllOrderList

接口协议:JSON

HTTP请求方式:GET

 

消息请求

字段列表如下:

字段名

数据类型

默认值

必填项 

备注

shopId

int

 

商铺编号

token

string

 

条件

设备令牌。Token鉴权方式必填

dateType

int

1

订单查询时间字段。

1:下单时间(order_time)

2:订单完成时间(order_finish_time)

3:结算时间(shop_settle_time)

startDate

date

 

查询日期

endDate

Date

 

查询结束日期。

orderStatus

String

 

订单状态。

不填表示所有状态

多个状态之间以英文逗号分割

0:已预定

1:已开单

2:派送中

3:已完成(原已结帐)

4:退单中

5:已退单

8:自助下单

9:待确认

orderTransactionType

Int

 

订单交易状态。

不填表示所有。

1:未完成,

2:已完成(3:已完成, 5:已退单)

payType

int

 

支付方式。

不填表示所有。

1:现金

2:POS

3:线上

cashierId

int

 

收银员

billerId

int

 

导购员

pNo

int

 

页码,从第1页开始,默认为1

pSize

int

 

每页记录数,默认为10

 

消息请求样例:

?shopId=1111111111&token=123411nmk515155&queryDate=2015-10-10

消息响应

字段元素如下:

字段名

数据类型

默认值

必填项 

备注

orderTotalPriceTotal

double

 

实收金额合计(已完成的合计)

platformTotalIncomePriceTotal

double

 

平台服务费合计

cashPayTotal

double

 

现金支付(已完成的合计)

posPayTotal

double

 

POS支付(已完成的合计)

onLinePayTotal

double

 

线上支付(已完成的合计)

lst

object

 

明细列表

 

明细列表对象字段元素定义:

 

字段名

数据类型

默认值

必填项 

备注

orderId

string

 

订单ID

orderTitle

string

 

订单标题

mobile

string

 

会员账号,如果是会员则显示手机号,为空时表示“非会员”

settlePrice

double

 

交易金额

orderTime

datetime

 

下单时间

serviceAmount

double

 

平台服务费

Status

Int

 

订单状态。

0:已预定

1:已开单

2:派送中

3:已完成(原已结帐)

4:退单中

5:已退单

8:自助下单

9:待确认

cashPay

double

 

现金支付

posPay

double

 

POS支付

onLinePay

double

 

线上支付

 

成功时,返回JSON数据包:

{

    "code": 0,

    "msg": "查询订单列表成功!",

    "data": {

        "pNo": 1,

        "rCount": 5,

        "orderTotalPriceTotal": 23.3,

        "platformTotalIncomePriceTotal": 0,

        "lst": [

            {

                "orderTitle": "kouxiangtang",

                "settlePrice": 15.89,

                "cashTotal": 15.89,

                "posTotal": 0,

                "onLineTotal": 0,

                "orderTime": "2015-09-29 13:44:26",

                "orderId": "12345679282015092913440268141",

                "mobile": "13424183952"

            },

            {

                "orderTitle": "红塔山",

                "settlePrice": 7.5,

                "cashTotal": 7.5,

                "posTotal": 0,

                "onLineTotal": 0,

                "orderTime": "2015-09-29 11:37:58",

                "orderId": "12345679282015092911370588273"

            }

        ]

    }

}

 

 

 

用例设计

 

 

测试思想-测试设计 <wbr>接口测试用例设计实践总结

测试思想-测试设计 <wbr>接口测试用例设计实践总结


测试思想-测试设计 <wbr>接口测试用例设计实践总结

测试思想-测试设计 <wbr>接口测试用例设计实践总结

 

 

存在问题:

如上,还没写完就有40几条用例了,要是接口参数再多点,接口数量再增加点,工作量可想而知,所以,问题来了,咋办呢?

 

个人见解:

1、根据接口的使用对象(外部,系统内部),有选择的去、留部分用例

2、根据接口的是否核心接口,有选择的去、留部分用例

3、根据参数说明,及实际情况,有选择的去、留部分用例

 

实例:

上例这个接口,是供app、商铺后台调用的,且为系统内部调用,所以,以下用例可酌情略去:

test-E-按商铺id查询-商铺id非int型

test-E-按设备token查询-token非string类型

test-E-按订单时间类型查询-时间类型非int型

test-E-按起始日期查询-时间类型非date型

test-E-按结束日期查询-时间类型非date型

test-E-按订单状态查询-订单状态非string类型

test-E-按交易状态查询-交易状态非int型

test-E-按支付方式查询-支付方式非int值

test-E-按收银员查询-收银员id非int值

test-E-按导购员查询-导购员id非int值

test-E-按页码查询-页码非int值

 

理由:

这个接口是给其它开发于系统内部调用的,开发过程中,开发者肯定需要调用这些接口,如果类型错了,他们也就获取不到预期的数据,这些错误,他们肯定可以发现,所以,他们传递的参数值一般能保证类型正确。

 

test-N-按参数类型最大值查询    所有参数

test-E-按商铺id查询-商铺id超过类型范围值

test-E-按订单状态查询-订单状态值超过类型最大值

test-E-按交易状态查询-交易状态值超过int类型最大值

略去的用例部分(参数值超过类型最大值)

 

理由:

1、内部调用,参数值不是外部手动输入的,输入数据长度、值大小可控,当然如果数据一直增长,那再大的类型可能都无法保证不超出,比如自动增长的商铺id

2、部分参数的参数值是自定义的,比如 订单时间类型,就那几种,除非传错了,不然不可能超出范围

 

最后简化后的用例数差不多28条,如果是手工测试,对于正向用例,根据等价类原理,可以制造一条数据,覆盖多条用例,当然,也可以冗余处理,即一条用例一条数据,这样的好处就是每次的验证点比较单一一点,比较有针对性。

 

问题

如果是自动化测试呢,这里是设计一个方法覆盖多条用例呢(如上,一条数据,覆盖多条用例)?还是一个方法覆盖一条用例呢?

 

我个人的答案是一个方法一条用例,你的呢?

 

转载:http://blog.sina.com.cn/s/blog_13cc013b50102w1ot.html 

by:授客 QQ:1033553122

 

相关文章
|
9天前
|
敏捷开发 人工智能 Devops
探索自动化测试的高效策略与实践###
当今软件开发生命周期中,自动化测试已成为提升效率、保障质量的关键工具。本文深入剖析了自动化测试的核心价值,探讨了一系列高效策略,包括选择合适的自动化框架、设计可维护的测试脚本、集成持续集成/持续部署(CI/CD)流程,以及有效管理和维护测试用例库。通过具体案例分析,揭示了这些策略在实际应用中的成效,为软件测试人员提供了宝贵的经验分享和实践指导。 ###
|
8天前
|
机器学习/深度学习 人工智能 jenkins
软件测试中的自动化与持续集成实践
在快速迭代的软件开发过程中,自动化测试和持续集成(CI)是确保代码质量和加速产品上市的关键。本文探讨了自动化测试的重要性、常见的自动化测试工具以及如何将自动化测试整合到持续集成流程中,以提高软件测试的效率和可靠性。通过案例分析,展示了自动化测试和持续集成在实际项目中的应用效果,并提供了实施建议。
|
9天前
|
Java 测试技术 持续交付
探索自动化测试在软件开发中的关键作用与实践
在现代软件开发流程中,自动化测试已成为提升产品质量、加速交付速度的不可或缺的一环。本文深入探讨了自动化测试的重要性,分析了其在不同阶段的应用价值,并结合实际案例阐述了如何有效实施自动化测试策略,以期为读者提供一套可操作的实践指南。
|
1月前
|
Java 测试技术 开发者
初学者入门:掌握单元测试的基础与实践
【10月更文挑战第14天】单元测试是一种软件测试方法,它验证软件中的最小可测试单元——通常是单独的函数或类——是否按预期工作。单元测试的目标是确保每个模块在其自身范围内正确无误地运行。这些测试应该独立于其他模块,并且应该能够反复执行而不受外部环境的影响。
52 2
|
1月前
|
机器学习/深度学习 人工智能 监控
提升软件质量的关键路径:高效测试策略与实践在软件开发的宇宙中,每一行代码都如同星辰般璀璨,而将这些星辰编织成星系的过程,则依赖于严谨而高效的测试策略。本文将引领读者探索软件测试的奥秘,揭示如何通过精心设计的测试方案,不仅提升软件的性能与稳定性,还能加速产品上市的步伐,最终实现质量与效率的双重飞跃。
在软件工程的浩瀚星海中,测试不仅是发现缺陷的放大镜,更是保障软件质量的坚固防线。本文旨在探讨一种高效且创新的软件测试策略框架,它融合了传统方法的精髓与现代技术的突破,旨在为软件开发团队提供一套系统化、可执行性强的测试指引。我们将从测试规划的起点出发,沿着测试设计、执行、反馈再到持续优化的轨迹,逐步展开论述。每一步都强调实用性与前瞻性相结合,确保测试活动能够紧跟软件开发的步伐,及时适应变化,有效应对各种挑战。
|
1月前
|
测试技术 UED
软件测试的艺术与实践
【10月更文挑战第9天】 在数字时代的浪潮中,软件成为了我们生活和工作不可或缺的一部分。然而,高质量的软件背后,是无数测试工程师的默默付出。本文将通过深入浅出的方式,探讨如何进行高效的软件测试,确保软件产品的质量与稳定性。我们将一起揭开软件测试的神秘面纱,从基础理论到实际操作,一步步走进这个充满挑战与创造的世界。
|
2天前
|
测试技术
软件测试的艺术:探索式测试的实践与思考
在软件开发的广阔海洋中,测试是确保航船稳健行驶的关键。本文将带你领略探索式测试的魅力,一种结合创造性思维和严格方法论的测试方式。我们将一起揭开探索式测试的神秘面纱,了解其核心概念、实施步骤和带来的效益。通过实际代码示例,你将学会如何将探索式测试融入日常的软件质量保证流程中,提升测试效率与质量。
|
9天前
|
Web App开发 敏捷开发 测试技术
探索自动化测试的奥秘:从理论到实践
【10月更文挑战第39天】在软件质量保障的战场上,自动化测试是提升效率和准确性的利器。本文将深入浅出地介绍自动化测试的基本概念、必要性以及如何实施自动化测试。我们将通过一个实际案例,展示如何利用流行的自动化测试工具Selenium进行网页测试,并分享一些实用的技巧和最佳实践。无论你是新手还是有经验的测试工程师,这篇文章都将为你提供宝贵的知识,帮助你在自动化测试的道路上更进一步。
|
9天前
|
敏捷开发 Java 测试技术
探索自动化测试:从理论到实践
【10月更文挑战第39天】在软件开发的海洋中,自动化测试是一艘能够带领团队高效航行的船只。本文将作为你的航海图,指引你理解自动化测试的核心概念,并分享一段实际的代码旅程,让你领略自动化测试的魅力和力量。准备好了吗?让我们启航!
|
12天前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
44 3

热门文章

最新文章