软件测试自动化测试

(上篇)API测试在测些什么,这些方向你值得拥有

2018-12-12  本文已影响2人  zpsean

引言


在现代在软件生态中,API已经随处可见了。不管是云服务比如AWS、政府平台比如税务,还是一个小的应用系统中后端与前端的交互,大多以暴露API的方式在提供服务。另一方面,我们谈论了无数年的测试金字塔也强调了API测试的重要性。可是经过观察却发现,有相当一部分项目对API测试是不充分的,要么认为不需要专门API测试、要么测试覆盖不够。

本文是API测试相关两篇文章中的“上篇”, 主要来谈谈“API测什么”。“下篇”会主要集中在实践上“API怎么测”。

要不要测API?


在具体展开“测什么”之前,先来简单讨论下要不要测的问题。

图一:API及其访问方式

如图一所示:用户(包括恶意用户)可能会通过多种途径访问API(s),同时意味着系统将要承受由于暴露API(s)后带来的各种可能的风险。如果不进行测试,我们对这些潜在的风险及其影响将一无所知。

所以对API得进行测试,从而才能了解其质量状况。但对相关质量问题采取什么措施可以依据其风险高低来决定。比如在用户场景有限、用户数有限且网络环境安全的To B系统中,系统由暴露API带的风险就比To C系统中的风险小得多。

测什么?以终为始,从质量的角度出发


对质量的关注是我们进行测试的主要驱动力。但每个项目的上下文都不一样,所以测试内容和侧重点也会各有不同。接下来讨论的更多的是有关API测试的共性,如果项目有更多特定的业务或技术选型,可以此为基础展开。

在具体讨论前,有必要申明下本文所用的“测试”一词的含义,请参考以下公式:

已测试 = 已检查(Verification, Validation) + 已探索(Explore)

其中,检查(Verification, Validation)意味着去执行根据需求和假想中的软件/系统而提前写就的测试用例/脚本,但真正的软件/系统在书写测试用例/脚本时还不存在。而探索意味着对真正的软件/系统进行有目的的交互,从而了解更多之前不可能预见的软件/系统行为。

针对单个API(功能)
1. 一个API能完成最基本的业务功能吗?
2. 一个API能否处理“足够多类型”的正向数据?
3. 一个API能否处理“足够多类型”的负向数据?
4. 一个API能否持续正确处理可能的正向和负向数据?
5. 一个API能否正确处理多个同时发生的请求?
针对多个API(功能)
6. 多个API能否完成系统期望的“场景”?
7. 多“场景”并发进行,系统能否隔离不同场景和用户?
特定的技术选型相关
8. 缓存能否平衡数据准确性和时效性?
9. 数据库分区或者主从后是否还能稳定提供服务?
10. 第三方调用和依赖?
系统稳定与安全
10. API能否允许同一用户无限次调用?
11. 性能和安全?
测试效率是测试成功的另一个关键

到了项目中后期,API已经累计到几十上百,测试数据成千上万也不少见,不当的安排会让一次执行的代价相当大(人力和时间)。而系统还在不断地添加新功能、不停地重构,随时可能让测试与系统不匹配。

而且,一个系统的测试内容远不止API测试,如果在API测试耗掉太多的测试时间,势必减少其它类型测试的时间,这样系统处于另外的风险中。

所以,测试准确、有效是测试的一方面,测试效率也是测试成功与否的关键。

上一篇 下一篇

猜你喜欢

热点阅读