面试被问你是怎么管理上千个接口自动化用例的,怎么回答应对

关于自动化接口测试用例的面试提问。
面试官:你是用什么框架做接口用例设计
我:pytest
面试官:你写了多少条接口用例
我: 大约几百条吧
面试官:你是怎么存放这些用例的?用例依赖执行顺序怎么搞?并发执行怎么搞?
我:用yaml来存放用例的。然后就没了。。。
面试官:是本地写的用例还是用公司自有的测试开发平台来存放?
我:公司的测试平台不太好用,我想用自己写脚本来实现。这样也可以练习自己的编程。

是从用例存放形式来回答?还是从用例测试场景来划分回答?不太明白面试官的背后的含义是什么。

后两个问题都没回答到点上。。。答非所问了。
这几个问题,和接口测试用例关系倒不是很大。其实中间牵涉到的主要知识点就是在对于自动化测试框架的理解这一层面:

  • 测试用例的分类
  • 测试套件的使用
  • 测试用例如何串行,如何并行,如何设定用例的执行顺序

你是怎么存放这些用例的?

面试官的本质问题: 测试用例的项目结构,以及管理方式。比如你的项目结构是不是按照业务模块去分为了不同的package。包括用例如果需要多人开发以及版本化管理有没有使用类似于git或svn这样的代码管理工具。

还有一个潜在问题: 用例数量很庞大的情况下,不可能每一次执行测试用例都是全量执行,如何做用例管理可以覆盖多种用例的使用场景;

  • 如何按照用例优先级执行用例?
  • 如果想要执行不同的业务模块用例应该如何执行?
  • 如果想要执行不同类型的测试用例应该如何执行?
    • 回归测试场景
    • 冒烟测试场景
    • 灰度测试场景
  • 针对不同的被测版本,用例应该如何执行,比如回归需要使用v1.1 版本的用例, 冒烟需要执行v1.2版本的用例

以上的所有场景, 只要深刻理解并熟悉测试框架的使用以及标准结构,一定是可以回答出来的。

以下的答案更多的是思路,而非一板一眼的标准答案,因为任何一个答案,如果说你没有很多对应的项目经验和处理经验,一问就玩完。从用例版本管理这种大的维度到每个使用场景进行归纳与总结:

  1. 使用 git 或svn 对测试用例进行管理,因为有版本化管理,回滚也比较方便,多人协作也比较方便。
  2. 用例的项目结构通常是和产品的业务模块统一,比如我们的产品有用户管理功能,那用例编写的时候就会写在 user package内。
  3. 另外会使用测试框架(pytest 是装饰器mark、junit5 就太多了,displayname 、tag)自带的标识功能。给测试用例添加不同类型的标识,保证可以执行不同类型的测试用例。

只要用例的标识打的明确,以及用例的业务目录结构合理,就可以实现对用例的规范化管理,同样可以选择不同类型的用例进行执行

用例依赖执行顺序怎么搞?并发执行怎么搞?

这块直接回答是如何使用测试框架的并行和串行(指定顺序)功能的就OK了。测试框架相关的录播课都有讲解,你应该没留意

是本地写的用例还是用公司自有的测试开发平台来存放?

这个也有点答非所问,你就直接回答使用 git 存放的用例就可以了。这和写脚本也没太大关系,即使用测试平台很多时候也要写脚本的。一下就暴露出来其实你对测试平台也是一知半解了…

总结

其实你的回答暴露出来两个问题:

  • 第一你的项目经验不足,会写测试用例是一个方面,但是如何编排管理测试用例,能够让测试用例价值最大化,完全没有体现出来。只要有真实的项目经验。通常我上面说的那些场景都算是比较常见的,通常也能回答出来2~3个点。
  • 第二是你对于测试框架的理解和使用还有点问题,有点不够深入,只了解基本功能。测试框架不管是pytest 还是 Junit5 还是TestNG。都是串并行、用例编排这些基本功能的。包括我在毕业设计答辩的过程中,也看到很多有真实项目经历的同学都会使用到这些技巧。录播课程和直播课程也都有提到,建议复习一下
3 个赞

这块没回答好。

用例的顺序跟你用yaml保存是没关系的。是关于测试装置(Fixture)概念的。

  • 常见的setup teardown,结合session suite class testcase级别
  • 然后是利用继承,业务模型的继承比如page object,还有测试用例的继承,比如BaseTestCase等