本节书摘来自华章计算机《Web测试囧事》一书中的第1章,第1.3节,作者 黄勇 雷辉 徐潇 杨雪敏,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.3 测试Web Service能否正常提供JSON数据

某一天,小蔡所在的项目组刚开发完成一个Web Service,服务的功能是,通过在客户端调用时指定的一个ID,可以从后台数据库中读取对应的房产信息,还有与这个房产关联的一到多个房东信息、一到多个图片信息,以及地址信息等。Web Service最终把这些信息组合成JSON格式的数据返回给调用方,调用方可以通过界面来展示相关信息,也可以通过其他方式去使用这些信息。但是,调用方具体如何使用这些信息与Web Service服务本身的测试关系不大,所以暂且不表了。小蔡需要做的是验证这个Web Service服务能否正常地提供JSON数据。

1. 寻找测试关键点

和开发人员讨论后,小蔡了解到,给Web Service服务发送ID后,后台系统会根据这个ID去查询数据库,数据库对应的对象模型如图1-4所示。

在这个对象关系图里可以看到,Building对象是图的核心,其他对象分别和Building对象是一对一或者一对多的关系。那么小蔡觉得,测试的关键点就是这些数据之间的关系能否正确反映在生成的JSON数据里。(特别是要确保生成的JSON数据的格式没有被破坏,否则解析器就无法解析JSON数据了。)

2.爬楼梯开始了

在确定好测试点之后,小蔡测试思路如下。

1)依据边界值进行测试。由于数据库的数据存在多种情况:0条记录、单条记录、多条记录,需要验证根据这些数据条数生成的JSON文件是否正确。

2)需要关注对象之间的关联关系限制。例如一个Building对应0到4个Callout,那么需要测试当多于4个Callout时,生成的JSON的情况。

3)Web Service允许用户输入参数,所以需要验证输入特殊数据后,系统是否出现异常或者崩溃的现象,以及是否会出现SQL注入的问题。

4)Web Service有可能会被多个客户端并发调用,因此需要验证其性能是否符合设计要求。

根据测试思路,小蔡设计了如下测试用例。

1)Building对象可以有多个Space,所以可以选取0个、1个、6个Space去看生成的JSON是否正确,这个可以通过修改数据库数据的方式生成假数据去完成相关测试。另外,如图1-4所示,小蔡还需要测试Building和其他对象的关系,包括Customer、MediaLink等。小蔡还特别注意了边界值测试,比如,一个Building对应0~4个Callout,那么可以用0、1、4、5个Callout去测试。当有5个Callout的时候,要去查看返回的JSON数据是返回了前4个Callout,还是返回了前5个,又或者抛出了异常,当然,具体哪种结果是程序设计所期望的,需要和开发人员去沟通。

2)调用Web Service时需要指定ID,所以可以测试在ID存在和不存在两种情况下JSON结果是否返回正常。

3)异常处理,调用Web Service时可以把ID换成错误的参数,例如null、非常长的字符串、空字符串、英文字符、其他文字(例如中文字符)等。接着小蔡就去验证服务对异常是否做出了正确的处理。

4)安全测试,这个Web Service会被外网使用,那就需要在安全性上投入更多的测试。例如,如果URL可以输入任何参数,这些参数是否包含危险数据导致SQL注入这类安全问题。还有,因为Web Service被外网使用,那在调用这个服务时是否需要提供用户名和密码。

JSON使用了一种特殊描述数据的方式,用“,”、“[”、“]”、“{”、“}”等分割数据,小蔡需要测试,如果数据库存储的数据恰好有这些符号,这些数据被读取并生成为JSON后是否会破坏JSON的格式。

5)性能测试,如何对Web Service进行性能测试呢,快速测试方式就是通过一些工具的多线程调用,或者手工编写简单多线程代码去调用,然后查看持续调用两小时之后服务是否正常,服务后台内存曲线是否出现异常,有没有出现内存泄露等问题。另外,查看Web Service是否能在符合性能期望的时间内返回数据。

还有一个边缘的性能测试路径是:一个对象有成千上万个关联子对象,能否正常生成对应的JSON文件,以及性能是否能达到期望目标。庆幸小蔡这次测试任务不需要这么做,因为后台数据明确了不可能存在这种情况,但是在别的测试任务中可能需要测试。

6)查看生成的JSON数据中,一些特殊类型的数据是否和数据库完全一致。例如,对于float类型,有个Bug是该类型数据精度在数据库中是保存到小数点后8位,但生成的JSON中只保留小数点后2位;类似的特殊数据还包括非常长的字符串,需要查看是否被截断;如果在数据库中保存的是0,在JSON中是否会生成0.00,此外还可以查看空字符串是否正确生成在JSON中。

7)确定服务是否需要支持HTTPS加密,如果需要,就要去测试返回结果是否正常。

哈哈!终于爬完楼梯了,小蔡可以松口气了,走!喝杯啤酒,再来块炸鸡么?

《Web测试囧事》——1.3 测试Web Service能否正常提供JSON数据相关推荐

  1. Web功能测试笔记02 ——读《Web测试囧事》

    五.Session 和 Cookie HTTP协议是无状态协议,客户端每次发出请求时,本次请求无法得知上一次请求的状态信息. 会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话 ...

  2. Web安全防攻(渗透测试)

    第二章 2.1 在Linux系统中安装LANMP LANMP是Linux下Apache.Nginx.MySQL和PHP的应用环境,本节演示的是WDLinux的一款集成的安装包. 首先,下载需要的安装包 ...

  3. WEB小厂电商项目测试技术指南1.0

    中高级测试工程师技术及要求 需求分析 要求: 参与需求评审会前要先看几遍需求文档. 分析需求的可行性,不可行的点可以在会议中提出来沟通. 需求的完整性,有不足的地方提出来让产品优化或给出建议. 需求测 ...

  4. android测试和web测试的区别,【分享】Web测试与App测试之间的区别

    一.测试的流程 WEB测试和app应用测试从流程上来说,没有区别.都需要经历测试计划方案,用例设计,测试执行,缺陷管理,测试报告等相关活动.从技术上来说,WEB测试和APP测试其测试类型也基本相似,都 ...

  5. ASP.NET Web API 使用Swagger生成在线帮助测试文档

    ASP.NET Web API 使用Swagger生成在线帮助测试文档 Swagger-UI简单而一目了然.它能够纯碎的基于html+javascript实现,只要稍微整合一下便能成为方便的API在线 ...

  6. 《众妙之门——Web用户体验设计与可用性测试》一2.3 总结

    本节书摘来自异步社区<众妙之门--Web用户体验设计与可用性测试>一书中的第2章,第2.3节,作者 [德]Smashing Magazine,更多章节内容可以访问云栖社区"异步社 ...

  7. 《众妙之门——Web用户体验设计与可用性测试》一第2章 在网页设计中通过测量数据优化情感投入2.1 情感应答和行为应答的关系...

    本节书摘来自异步社区<众妙之门--Web用户体验设计与可用性测试>一书中的第2章,第2.1节,作者 [德]Smashing Magazine,更多章节内容可以访问云栖社区"异步社 ...

  8. web打印控件_web网页测试应该注意点(一)

    作为软件测试人员,工作中接触了不同类型的web端系统,内容不同,需求不同,测试关注点也存在些许的不同,但整体思路都是相同的,下面针对web端系统测试的一些测试点说明一下:总体包括:UI交互.查询条件. ...

  9. web服务压力测试)有效的压力测试系统将应用以下这些关键条件

    1)重复(Repetition):最明显的且最容易理解的压力条件就是测试的重复.换句话说,测试的重复就是一遍又一遍地执行某个操作或功能,比如重复调用一个Web 服务.功能验证测试可以用来被弄清楚一个操 ...

  10. 一个Web开发的客户端基础技术测试Demo

    最近参加了一个Web开发的客户端基础技术测试,虽然对于做前台开发的程序员来说比较简单,但对于一直做后台代码编写的程序员想掌握前台开发的基础来说,应该是一个比较好的Demo.对于Web初学者来说,也是一 ...

最新文章

  1. @所有人,CSDN 粉丝专属福利来啦!
  2. Verilog语言设计增加延时的正确方法
  3. winRAR 没有右键选项
  4. 【备忘录】BADI_ACC_DOCUMENT增强实现
  5. Storm 03_Storm 架构设计
  6. 文本框输入限制【不允许空格、只允许数字】
  7. 数据结构--Dijkstra算法最清楚的讲解
  8. HTML第八章ppt,第八章 web基础教程之HTML篇v1.0.ppt
  9. 节操大师 北方大学生程序设计竞赛 南开大学
  10. 笔记本电脑关机后指示灯还亮_汽车仪表常见指示符号之清洗液指示灯,灯亮了怎么办?...
  11. Asp.net TextBox常规输入验证
  12. mysql dql_Mysql中的DQL查询语句
  13. (王道408考研数据结构)第六章图-第三节:图的遍历(DFS和BFS)
  14. 错误:this is incompatible with sql_mode=only_full_group_by
  15. oracle中数据导入导出问题
  16. 基于深度卷积神经网络的苹果叶片植物病理学疾病检测
  17. 思考致富 成功法则(二):确定的目的
  18. 17年前那场疫情:马云隔离在家,刘强东关了12家店,俞敏洪欠债700万......
  19. Azure云服务器初学习
  20. elasticsearch 修改已存在的filed值 和 新增filed

热门文章

  1. JAVA设计模式之3-抽象工厂模式
  2. Safari浏览器Session问题
  3. Activity及Dialog的全透明
  4. 数据结构——单人名单
  5. 【BZOJ】【2768】【JLOI2010】冠军调查
  6. 迭代器模式(Iterator)和组合模式(Composite)
  7. Damp;G“辱华”争议广告女主发声:几乎断送了模特事业
  8. 【原创】打造基于Dapper的数据访问层
  9. express获取参数的几种方法
  10. Linux 要如何查看系统架构