本文章转载于搜狗测试
随着互联网产品的不断发展,降低前端与后端的耦合度,便于产品功能的快速更新、迭代,对测试来说,为适应这种变化,不可避免的要进行服务端部分的测试,那么什么样的需求适合进行服务端测试?服务端的测试工作分哪些部分?服务端测试又如何开展呢?请往下看。
什么样的需求适合进行服务端测试
现今的互联网产品按使用场景大概可以分为三类
web端,也就是网页
移动端,手机app&h5页面(当然h5也在各个平台适用,但目前来说更多的是应用于移动端的)
PC平台产品,例如windows客户端、mac客户端等
以上三类产品都或多或少的需要服务的支持才能使其功能更加完善、策略更加灵活;那么具体什么样的需求适合进行服务端测试呢?我举几个例子:
1、(web端需求)12306购票主页,页面布局改版、支付接口由原来的跳转到银行网银页面进行支付修改为跳转到支付宝、微信支付页面进行支付;
以上的需求文档包括两个需求:1、修改页面样式;2、更换支付接口;
需求1主要的改动是修改页面css,那验证点主要是页面样式正确性、兼容性、页面原有功能正确性;
需求2主要的改动是更换支付接口,修改支付跳转逻辑,由于支付宝、微信接口属于第三方提供的接口,所以对于接口功能正确性的验证应该是接口提供方来做,所以需求2主要的检查点就是支付跳转逻辑的正确性,也就是支付流程正确性;
这两个需求我认为都不需要单独进行服务端测试,因为站在服务端的角度,这两个需求都仅仅是更新服务器上的静态文件而已,并没有服务端逻辑的变动,而代码变动主要会对前端功能造成影响,从客户端功能和需求的角度设计用例并执行就ok了。
2、(移动端需求)搜狗搜索app,主页上方增加当前天气板块;
猜测一下这个需求的实现,app在加载主页时,发送一条http请求,带上当前位置坐标,服务端根据位置判断用户当前所在城市和区县,并请求第三方天气接口,将返回内容格式化之后返回给客户端,客户端加载服务端返回的数据并进行展示;
先说一下这个需求可能存在的问题:1、客户端和服务端由两个开发团队负责,这两部分的进度有可能不同,任意一方未提测可能会导致测试delay;
这种情况比较适合将客户端和服务端分别排期测试;
客户端:1、通过mock数据验证客户端能正确响应各类数据渲染并展示;2、验证客户端样式正确;3、验证客户端异常处理;
服务端:1、验证根据坐标判断用户当前所在城市区县;2、验证第三方接口请求拼接正确性;3、验证处理第三方请求返回正确性及容错;4、验证处理客户端请求的容错;
服务端测试分哪些部分
还拿上面的需求2来说,服务端测试可以分以下几个部分:
1、服务端逻辑的正确性验证;
2、服务端处理客户端请求的容错处理;
3、服务依赖的第三方数据的处理和容错;
4、服务端性能测试;
具体方法:
1/2/3:都可以通过单测来覆盖实现相应功能的函数;
1/2:也可以通过接口测试的方式验证服务的入口出口;
4:需要进行性能评估后,通过压测工具确定服务性能;
服务端测试如何开展&进行
1、了解产品需求及开发实现,评估是否需要做服务端测试;
2、如果评估需要进行服务端测试,需要与客户端测试同学确认各自计划;
3、根据测试时间、需求紧急程度、服务端逻辑复杂程度等因素评估服务端测试使用的方法,如果时间紧任务重,那么不适宜选择单测的方式;如果时间充裕、且服务端逻辑较复杂,可以通过单测覆盖更全面的测试点;实际使用的测试方法需要依具体情况来灵活确定,如果情况允许,甚至可以通过接口测试保证主路径功能正常,待服务上线后再补充单测;
4、设计接口测试框架或设计单测框架
5、测试设计:接口测试case 或 单测case
6、执行测试 并 随时执行回归测试。无论选择接口测试还是单元测试,case的维护都是比较重要的,因为服务端代码修改灵活,可能修复一个问题的同时引起其它case的失败,所以要定期执行所有case,以保证所用功能正确;
7、功能回归完成后,根据之前评估的需要进行性能测试,具体方法不在这说了。
8、如果客户端和服务端是分开测试的话,在服务端测试完毕后,需要通知客户端测试进行集成测试;
9、客户端依赖服务端上线的情况,需要服务端提前上线。这里如果是新服务的话,可以根据情况直接上线后测试线上代码;
10、上线后要进行线上服务可用性监控,这个监控可以通过线上异常log报警或探针脚本实现,具体方法不限,目的是确保线上服务运行正常;