随笔备忘记录-接口自动化测试-接口测试认知思路
随便写点东西,有的是网上借鉴,有的是自己体会,总之都是根据自己的需求进行优化的一些东西,随笔备忘录
现在公司的项目流程都是全部开发完成后提交到测试环境进行测试,导致测试人员在开发编码过程中相对清闲,除了完成测试用例之外没有其他事情可做,而当进入测试阶段又会变的非常忙碌。如果bug较多的话可能还要加班,开发修改bug的工作量也很大。
其实这样并不合理,如果把后期的测试分一部分到前期开发阶段,既可以减轻后期的测试压力,也能弥补前期的空档期,于是有了测试前移的概念,提早介入测试是指:开发完成某个功能/接口/模块后,在开发环境进行接口测试,这样也更有利于开发定位bug。
在单元测试之后,系统集成测试之前,介入接口测试,尽可能在集成测试前发现bug解决bug,减轻集成测试压力,提高整个项目效率,达到自动化测试和功能测试相互辅助互相补充的效果。
一、接口测试的定义
1、什么是接口测试?
接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。
2、为什么要做接口测试?
a) 如今的系统复杂度不断上升,传统的测试方法成本急剧增加且测试效率大幅下降,接口测试可以提供这种情况下的解决方案。
b) 接口测试相对容易实现自动化持续集成,且相对UI自动化也比较稳定,可以减少人工回归测试人力成本与时间,缩短测试周期,支持后端快速发版需求。接口持续集成是为什么能低成本高收益的根源。
c) 现在很多系统前后端架构是分离的,从安全层面来说:
1、只依赖前端进行限制已经完全不能满足系统的安全要求(绕过前面实在太容易), 需要后端同样进行控制,在这种情况下就需要从接口层面进行验证。
2、前后端传输、日志打印等信息是否加密传输也是需要验证的,特别是涉及到用户的隐私信息,如身份证,银行卡等。
3、前后端都测试会不会重复?
后端接口测试–由于项目前后端调用主要是基于http协议的接口,所以测试接口时主要是通过工具或代码模拟http请求的发送与接收
前端测试
从上面这两张图对比可以看出,两个测试活动中相同的部分有功能测试、边界分析测试和性能测试,其它部分由于各自特性或关注点不同需要进行特殊的测试,在此不做讨论。接下来我们针对以上三部分相同的内容再进行分析:
1、基本功能测试:
由于是针对基本业务功能进行测试,所以这部分是两种测试重合度最高的一块,开发同学通常所指的也主要是这部分的内容。
2、边界分析测试:
在基本功能测试的基础上考虑输入输出的边界条件,这部分内容也会有重复的部分(比如业务规则的边界)。但是,前端的输入输出很多时候都是提供固守的值让用户选择(如下拉框),在这种情况下测试的边界范围就非常有限,但接口测试就不存在这方面的限制,相对来说接口可以覆盖的范围更广,同样的,接口出现问题的概率也更高。
3、性能测试:
这个比较容易区分,虽然都需要做性能测试,但关注点确大不相同。App端性能主要关注与手机相关的特性,如手机cpu、内存、流量、fps等。而接口性能主要关注接口响应时间、并发、服务端资源的使用情况等。两种测试时的策略和方法都有很大区别,所以这部分内容是需要分开单独进行测试的,理论上来说这也是不同的部分。
综论:
1、接口测试和app测试的活动有部分重复的内容,主要集中在业务功能测试方面。除此之外,针对各自特性的测试都不一样,需要分别进行有针对性的测试,才能确保整个产品的质量。
2、接口测试可以关注于服务器逻辑验证,而UI测试可以关注于页面展示逻辑及界面前端与服务器集成验证
二、接口测试前期介入计划和原则:
- 正式加入项目流程之前,会选取两到三个版本迭代作为试点,方便开发测试磨合,熟悉流程
- 为保证项目进度,前期接口测试会和sit测试并行,不需要接口测试用例通过后再进入sit测试阶段
- 前期两三个版本进行完成后会总结问题优化流程,直至最后真正加入项目流程中
- 测试人员会进行相关培训,后期会介入到接口测试中,分工合作共同完成接口测试
三、接口测试需要进行的工作
开发:
1. 前期需要开发尽可能考虑周全,提前定义好接口参数和返回值,逻辑后补。
2. 完善接口逻辑和单元测试,包括联调测试过程中。如有接口变更情况,需测试开发消息保持同步
3. 联调完毕后及时告知测试,此时测试会最终调整测试用例并运行测试用例
4. 接口测试不通过情况下,完善接口逻辑,解决测试提交的bug
5. 接口添加注释说明
测试:
- 根据初版的接口文档和需求,编写初版接口测试用例
- 接口测试用例编写完毕后,进行用例评审
- 开发单元测试联调过程中,及时调整接口测试用例,运行接口测试用例并提交bug,bug解决后验证