lsekfe 发表于 2021-9-8 10:03:54

验证码测试的解决方案

 验证码测试的解决方案
  前几天一位新同事向我请教了一个问题,其问题的重点是图文验证码怎么去测试?当时由于时间关系,只是大致给他说了下测试框架,趁着闲暇时间的总结,也把解决方案分享给大家。
  1 认识验证码
  测试验证码,首先我们应当了解清楚验证码是什么?其存储位置在哪里?其原理是什么?做到知己知彼。
  1.1 验证码的由来和作用
  验证码,英文简写是“CAPTCHA”,其全称是“Completely Automated Public Turing test to tell Computers and Humans Apart”,即全自动区分计算机和人类的图灵测试,是一种区分其用户是计算机还是人类的公共全自动程序算法。最早是由卡内基梅隆大学的路易斯·冯·安和IBM的John Langford在2002年提出,这个验证码形式的问题是由计算生成并评判,但必须只允许有意识的人才能解答。
  后期被广泛用于安全信息领域,以有效防范恶意的程序算法对信息系统进行暴力性的攻击破解,比如:防范密码破解、信息盗窃、钱财转移等恶意行为。
  同时也发展为多种形式的验证码。常见的有手机短信验证码、Email验证码、视频验证码、手机语音验证码、拼图验证码、静态图文验证码、GIF动态图文验证码等,其验证码的内容包含数字、字母、汉字、人文数理、人与物识别等。其中图文验证码是网站验证中最常见的一种,也是我们身边人最熟悉的一种,也是本文重点介绍测试对象。
  1.2 验证码的存储
  既然在网页中的验证码是图文验证码,以图片文字的形式显示出来,那么在网页源码可能存在于以下几种方式:
  (1)存储于文件中
  (2)HTML语句中直接放入经过编码的验证码信息
  (3)HTML语句中直接放入请求的验证码URL信息
  (4)计算机生成验证码后,一般以session方式将验证码存储在服务器进程
  (5)存储于redis等nosql数据库中,通过调用nosql的客户端驱动查询
  (6)存储于数据库,通过进程内的接口进行查询或者直接进行数据库查询
  计算机服务器生成验证码后,就会缓存起来,原因在于方便用户提交验证码时进行验证。
  1.3 验证码的原理
  当用户需要验证时,服务器端将内存中临时生成的验证码发至客户端,为了其安全性,通常在发送后的一个有效时间内(比如:1分钟)就会删除其验证码,用户在有效时间内输入验证答案。其具体过程如下:
  首先,前端网页通过一个URL来对后端进行请求;接着,后端接收到前端的请求后,它将生成一个随机图文,然后把该随机图文存储于与对应客户端的session中;然后,将该随机图文进行图像处理,使计算机难以识别而人类容易辨别,经过处理的图文(.png、.jpg等多种格式)直接发至前端;最后,前端验证用户输入图文的验证答案,与后端生成的验证码是否一致,若一致则成功登录获取消息,反之不能通过。
  2 如何测试验证码
  测试验证码,既要测试其功能性,又要测试其安全性;手动测试和自动化测试均不可缺少,相互互补,尽可能覆盖缺陷。
  2.1 手动测试
  手动测试的核心,测试用例的设计。针对验证码测试的测试用例主要参考点如下:

千里 发表于 2021-9-26 16:07:49

直接让开发禁用验证码,开发一般会同意的
页: [1]
查看完整版本: 验证码测试的解决方案