每天进步一点点

做性能或自动化测试登录系统时验证码的解决方案

上一篇 / 下一篇  2013-07-05 11:32:06 / 个人分类:自动化测试

  登录系统时往往要输入验证码,这也是系统出于安全的考虑,防止别人使用软件暴力破解密码,侵入系统。
  我们做性能或自动化测试时,需要录制脚本,而验证码是随机生成的,这怎么解决呢,可以留个后门,弄个自己才知道的万能验证码。前提是要有系统的源码,上一篇日志已经介绍了如何搭建JAVA开发环境及如何部署项目,现在就让我们开始吧。
  先找到并打开LoginAction.java文件,找到登录时跟验证码有关的代码:

String v_code = (String)session.getAttribute(CommonServlet.VERIFY_CODE);
if(!v_code.equalsIgnoreCase(verifyCode)){
//this.addActionError("验证码错误!");
request.setAttribute("result", "yzmError");
this.result = "yzmError";
return "relogin";

verifyCode中存放的就是用户输入的验证码,在程序判断为错误验证码时增加一个条件:
&& !verifyCode.equals("WNYZM")
即:if(!v_code.equalsIgnoreCase(verifyCode) && !verifyCode.equals("WNYZM"))
这样就成功设置了万能验证码:WNYZM

这里注意一下:我开始是用的verifyCode!="WNYZM"这种方式,验证不行,verifyCode为Stirng类型,比较两对象
的值是否相等要用equals()方法。

保存后,在项目的目录中拷贝出类文件:LoginAction.class
上传到测试环境中,重启系统,即可生效

把录制的脚本中的验证码改为:WNYZM,
@Test
public void testUntitled() throws Exception {
selenium.open("/IDS/");
selenium.type("id=userName", "admin");
selenium.type("id=password", "123456");
selenium.type("id=verifyCode", "WNYZM");
selenium.click("name=Submit");
  这样每次都能成功登录了。


TAG:

 

评分:0

我来说两句

Open Toolbar