企业网站建设成本费用,网站 验证码错误,跨境电商开店大概流程,青岛专业网站设计的公司目录#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结#xff08;尾部小惊喜#xff09;前言
在对安全性有要求的…
目录导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结尾部小惊喜前言
在对安全性有要求的软件系统中都存在验证码那我们应该怎么进行测试呢在自动化测试中又该怎么通过验证码使自动化顺利进行下去呢
验证码的由来和作用 验证码是一种区分其用户是计算机还是人类的公共全自动程序算法。这个验证码形式的问题是由计算生成并评判但必须只允许有意识的人才能解答。
现在被广泛用于安全信息领域以有效防范恶意的程序算法对信息系统进行暴力性的攻击破解比如防范密码破解、信息盗窃、钱财转移等恶意行为。
同时也发展为多种形式的验证码。常见的有手机短信验证码、Email验证码、视频验证码、手机语音验证码、拼图验证码、静态图文验证码、GIF动态图文验证码等其中图文验证码是网站验证中最常见的一种。
验证码的存储 既然在网页中的验证码是图文验证码以图片文字的形式显示出来那么在网页源码可能存在于以下几种方式
存储于文件中HTML语句中直接放入经过编码的验证码信息HTML语句中直接放入请求的验证码URL信息计算机生成验证码后一般以session方式将验证码存储在服务器进程存储于redis等nosql数据库中通过调用nosql的客户端驱动查询存储于数据库通过进程内的接口进行查询或者直接进行数据库查询计算机服务器生成验证码后就会缓存起来原因在于方便用户提交验证码时进行验证。
验证码的原理 当用户需要验证时服务器端将内存中临时生成的验证码发至客户端为了其安全性通常在发送后的一个有效时间内比如1分钟就会删除其验证码用户在有效时间内输入验证答案。其具体过程如下
首先前端网页通过一个URL来对后端进行请求
接着后端接收到前端的请求后它将生成一个随机图文然后把该随机图文存储于与对应客户端的session中
然后将该随机图文进行图像处理使计算机难以识别而人类容易辨别经过处理的图文.png、.jpg等多种格式直接发至前端
最后前端验证用户输入图文的验证答案与后端生成的验证码是否一致若一致则成功登录获取消息反之不能通过。
如何测试验证码
测试验证码既要测其功能性又要测其安全性手动测试和自动化测试均不可缺少相互互补尽可能覆盖缺陷。
手动测试 手动测试的核心测试用例的设计。 针对验证码测试的测试用例主要参考点如下
有效时间内有效时间内输入图文中正确的顺序的验证码输入图文中正确的顺序的验证码输入图文中正确的倒序的验证码输入图文中正确的倒序的验证码输入已验证过的正确验证码输入已验证过的正确验证码输入正确验证码的部分输入正确验证码的部分不输入任何信息不输入任何信息空格输入空格输入空格正确验证码空格正确验证码正确验证码空格正确验证码空格输入验证码空格验证码”输入验证码空格验证码”输入特殊字符输入特殊字符……
根据完善的测试用例一步一步执行最大化做到细致精准。
自动化测试
针对验证码的性质随机生成的验证码不能使计算机简单的识别这一点使自动化测试遇到了一定的困难瓶颈通俗的说验证码和自动化测试是对着干的。
因此自动化工具测试到验证码时针对不同程度安全性的要求使用相应效率的解决方案。其解决方案包括注释验证码、设置验证码开关、设置万能验证码、记录Cookies信息、验证码图文识别等。
注释验证码模块现在很少用这种方案 这是在安全性要求较低的情况下的解决方案经过项目组的沟通在测试阶段开发人员将验证码模块的相关代码注释掉等上线时取消注释。
当然这样给测试人员在测试阶段减小了麻烦但是上线正式生产环境中该验证码模块可能给系统带来一定的障碍风险。
设置验证码开关也不推荐 项目组的沟通开发人员设置一个验证码开关模块当手动测试时按着测试用例进行执行当自动化测试时关闭验证码模块。
设置万能验证码当前主流做法 这是在安全性要求相对较高的情况下的解决方案经过项目组的沟通开发人员设置一个万能验证码。在设置万能验证码时应当区分测试环境与生产环境。
比如判断当前是否是测试环境通常情况下根据读取服务器配置文件就可判断是否是测试环境。如果是则输入万能验证码直接通过如果不是则继续按着正常的验证流程去验证。
设置万能验证码的解决方案与注释验证码的解决方案相比该方案设置的万能验证码模块的代码可以上线几乎不会给系统带来障碍风险同时这样手动测试与自动化测试均很方便。
记录Cookies信息不太推荐对于复杂的验证方式这种方式可以考虑 通过向browser添加Cookies这样就可以绕过介入的验证码而在用户介入前通过add_cookie( )方法将介入信息添加到Cookies这样一来若再一次访问系统时将自动的介入。
但是记录Cookies还是存在不足。一方面体现在有效Cookies是有时间限制一旦过期无效再次访问系统时需要重新获取另一方面体现在如果找不到输入框名就无法向输入框内输入介入信息。
验证码图文识别作为安全性测试的一部分 如果测试人员用图文识别技术解决了自动化测试动态随机验证码那这也相当于产品的一个Bug使其系统并不是那么具有安全性。
但为了系统的完整性针对高级别程度安全需求的系统利用验证码图文识别技术进行测试。
OCR图像识别同样作为安全性测试的一部分 当前OCR图像识别技术已经比较成熟能够很容易地识别出简单的图文验证码。对此大多数网站都逐步提升了图文验证码的复杂度。
比如加噪、扭曲图文等操作。当然这种对抗也正是系统不断升级的原因敌对性发展。
针对图文验证码的加噪测试时应当对图文先降噪再识别针对图文验证码的扭曲测试时应当Machine Learning、Pattern Recognition等技术算法提取图文特征再匹配正确的图文验证码。
Python-tesseract图像识别同样可作为安全性测试的一部分 除了OCR图像识别技术还可以通过Python-tesseract识别图文验证码需要用到tesseract-ocr图像识别工具能够读取.png、.jpg、.gif等常规格式的图片文件。
下面是我整理的2023年最全的软件测试工程师学习知识架构体系图
一、Python编程入门到精通 二、接口自动化项目实战 三、Web自动化项目实战 四、App自动化项目实战 五、一线大厂简历 六、测试开发DevOps体系 七、常用自动化测试工具 八、JMeter性能测试 九、总结尾部小惊喜
只有你学会把自己已有的成绩都归零才能腾出空间去接纳更多的新东西如此才能使自己不断的超越自己。
并不是随着年纪的成长每一个人都会变得更加成熟的有的人就算是见得多也不一定懂得多。凡事靠自己也要相信自己。
人活着就是为了解决困难。这才是生命的意义也是生命的内容。逃避不是办法知难而上往往是解决问题的最好手段。