自动化测试中的验证码处理方法小总结

发表于:2010-8-26 15:01

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

  然后,可以通过使用jsp的页面来吧session中的验证码传出来,具体代码如下:

getCheckCode.jsp代码如下

<%

   out.print(session.getAttribute("rand"));

%>

  最后,在自动化测试脚本中首先CheckCode.jsp来生成图片的验证码,然后打开getCheckCode.jsp来获得验证码,然后讲获得的验证码填入提交的表单中提交。

  总结该方法,适合在测试环境中,加入一个获取验证码的页面(或者其他接口),自动化测试通过该页面来获得相应的验证码;当产品上线后,删除获得验证码的页面即可。该方法不适合生产环境,他其实是做了一个后门,从安全角度上讲,是比较危险的。该方法也不适合对验证码加密存储的情况:在实际应用中,可以将随机生成的验证码进行MD5加密存储到session中,用户输入的验证码也需要使用MD5加密后,和session中存在的密文进行对比。大家知道破解md5是非常困难的,如果使用这种方法的话,从session中获得验证码也是不可取的。

  3.3  其他一些方法来解决验证码

  在实际使用中也可以通过一些小技巧来解决验证码,这些方法就是通过各种手段来逃避或者获得验证,而这些手段主要是要求开发者在开发的时候留有一定的后门。下面简述几种:

  ●使用万能验证码,这种方法就是在判断验证的时候,如果遇到前台输入的是万能验证码,那就不要做验证码校验直接通过。

  ●特定用户跳过验证码,这种方法就是如果遇到指定用户登录,那么不管输入什么验证码,验证码校验都通过。

  ●使用hidden 控件在页面上显示验证码,就是在使用验证码的页面上,加入一个隐藏的控件,该控件的内容就是验证码。虽然用户看不到但是自动化测试工具可以找到该控件,并获得验证码。当然隐藏控件中的验证码也可以使用加密的方法,自动化测试脚本得到加密的验证后,可以通过解密操作解密验证码。

  上述的方法都需要开发对代码进行一定的修改,最好不要在生产环境上做,不然会造成安全漏洞。

  4、小结

  作为自动化测试工程师遇到验证码的问题,无疑是非常头疼的。如果在测试环境中,最好能通过接口方法,或者开发后门的方法获取验证码,这样可能更有效。如果上线程序,安全性要求比较高的情况下,只能使用识别的方法。识别的方法可以多尝试几种OCR程序,由于OCR程序的算法不同,可能对于特定的验证码识别的成功率也不同。如果遇到中文的验证码,且那个中文字还变形了,最好的方法就是告诉开发换成英文的,中文的识别率,那真的很低。

33/3<123
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号