淘宝地图提供通过地图的方式查找周边的宝贝和本地商户,方便用户快速准确的购买到身边的宝贝,是LBS模式的真实体验。
在做淘宝地图的测试时,在网上搜索了相关资料,发现地图测试的信息很是贫乏,遂总结了一下地图的测试方法,以和大家分享,如有总结错误,欢迎大家指正。
地图组件可以在应用中嵌入一张地图的静态图片,或者是一张有交互功能的地图,使用者可以通过接口对地图添加内容,并在地图上进行各种交互。
几乎所有的主流互联网地图服务商都对外发布了接口,供第三方使用,一般是是有JavaScript语言编写。
1、操作方式
地图作为一张页面,其页面交互不是很复杂,没有很多页面的跳转。
拖动和缩放是地图上常见的操作方式,在地图的拖动和缩放过程中,往往伴随着数据的变化,如poi的变化、宝贝的变化,这里需要根据业务逻辑进行测试用例设计。
在淘宝地图中,为了使用户更为方便的找到自己心仪的宝贝,并且准确的定位到该宝贝的位置,所以在进行地图缩放时,页面上散落的信息点不会变化。而在用户进行拖动时,会采用异步刷新的方式,重新获取宝贝和商户的信息。
测试总结:要结合自己的业务需求,进行关于地图操作的用例设计,注意缩放和拖动地图时数据的变化。
2、参数组合
地图是一种信息展现的载体,而地图上的信息是用户通过设置各个条件综合筛选。通过对各个场景对应的参数测试,来确保用户获取的信息正确性。
在淘宝地图中,参数有:关键字、城市、类目、视野、页数。在不同的场景切换时,要注意重点测试参数是否需要传递或者处理为默认值。在淘宝地图开发中,开发同学经常容易忽视这样的逻辑。
以下是淘宝地图中各个操作对应的参数传递:
搜索 | 类目切换 | 拖动 | 城市切换 | 快速选择 | 翻页 | |
关键字 kwd | YES | YES | YES | NO | NO | YES |
类目 cat | NO | YES | YES | NO | NO | YES |
页数 page | NO | NO | NO | NO | NO | YES |
视野 lat&lng | YES | YES | YES | NO | YES | YES |
城市city | YES | YES | YES | YES | YES | YES |
注释:行为参数,列为操作。
测试总结:关注参数组合逻辑,和场景切换时的参数传递。可以通过在用例设计时完成这一块逻辑的覆盖,通过二维图来展现是个不错的主意。
3、同步异步请求
对于地图页面上的操作,很多情况下采用异步请求的方式(为了不让页面发生重载和刷新)。如拖动地图、类目切换时时,地图上信息点的展现。
对于异步查询,可以通过拼接参数的形式进行http请求,验证数据接口返回结果的正确性,然后在前端上验证页面上的展现及样式。
测试总结:分层测试设计,验证数据接口和前端展现。
4、坐标、视野、弹出气泡
地图上视野通过比例尺来控制,信息点的坐标通过后端数据返回给js,弹出气泡通过js控制,气泡内的信息通过异步请求的方式获取。
测试时注意验证数据的正确性。
5、性能测试
由于地图上的页面元素较少,地图区通过js调用地图组件的接口,所以前端页面的性能不会有太大的问题。性能测试的重点是在底层数据和服务上。
淘宝地图的数据源来自vsearch(宝贝信息)和kingso(本地商户信息)搜索引擎,对于这两个搜索引擎的性能测试非常重要。在测试执行期间,发现vsearch的响应时间很慢,导致地图上信息气泡弹出时反应很慢。通过vsearch同学的性能调优,解决了该问题。
测试总结:在对引擎进行压测时,可以采用两种方案。方案A:对服务端进行压测。由于服务端是对vsearch和kingso请求进行了一次封装,并加入我们自己的业务逻辑,所以对服务端进行压测更能体现系统的性能。方案B:直接对引擎进行压测。在对服务端压测后若出现性能指标不理想的情况,就需要对引擎进行单独压测,以确定性能瓶颈点。