有赞测试分享读后感

认清差距,方能追赶

通过有赞测试团队的分享,我深受鼓舞,指明了我们测试组未来的发展方向,让我知道一个测试团队可以做到这么强大。下面我简单分析一下我的看法

1.有赞是一个纯粹的互联网企业,在开发、技术方便很重视,这一点,从测试人员质量就可以看的出来,需要具备白盒测试能力、CodeReview能力、业务功能测试的测试工程师,而且必须是BAT团队出来的。这点我想我们是可以看得出差距的。可是这种人员的差距怎么缩小呢?假设,我们有两种方法:1.统一招BAT团队的资深测试工程师,2.选团队最优测试工程师给整个团队业余时间培训,公司给与支持,然后培养成具备这种能力的工程师。那么我想,第二种方法是最优解,培训成本较低、人力成本低,现有测试人员业务熟练。可以快速介入测试。

2.对于测试日常工作分配,我觉得可以学习有赞团队,将项目细分成标准需求项目、技术重构项目、优化项目、缺陷修复项目。第一、对于标准需求项目或者跨多个业务的项目,一定会有测试投入;第二、技术重构改造项目,这种一般是单应用或者极少应用改造,但不改变业务使用规则。这类项目测试同学只要通过doclever设计测试用例即可,用例的执行由开发自行完成。测试同学要做的就是对新系统进行自动化覆盖。如有需要,测试会在上线前做质量check。 第三、对于线上反馈、缺陷修复项目,如如果开发的自测场景与测试同学的测试场景基本一致,那开发自行搞定即可;或者测试同学把需要特别关注的或者风险点给开发同学简单介绍。对于有差异的,测试同学把差异点向开发同学描述清楚即可。

3.对于测试流程,如果是现在功能测试为主,那现在的测试流程相对之前,还算比较完整合理,但是提测质量不高,所以我们也需要在接口完成时介入编写接口自动化用例,但是有赞团队所说的:“需求分析后,需要输出对象生命周期图、业务时序图、用例图、待确认的问题、风险点清单。并就相关问题、风险与产品、开发进行多次沟通,直到问题得到明确答复。”对于敏捷开发,那启动开发的时间其实很紧急,没有那么多时间去评审风险和业务缺陷,流出更多是时间去写自动化用例兼其他测试项目的功能测试。

4.对于提测分支冲突问题,我们也可以学习有赞团队的搭载公交车发布模式,每一个服务都可以拉出一个test测试分支,所有开发提测时都把自己代码合并到test分支,以后解决bug也要同步自己分支,如果没问题了,可以把自己分支合并master,可以独立上线。

5.对于测试,分为三部分,第一部分是单元测试,这部分属于白盒测试,介于测试代码能力不足,这部分可以由开发自测;第二部分为接口自动化测试,这部分属于灰盒测试,测试会通过开发在doclever写的接口文档编写接口自动化,可以由测试介入进行接口集成测试;第三部分为UI自动化测试,由robotframework实现,同时做手动UI测试,验证功能展示效果和一些边界测试,测试完成后,验收通过上预发布测试,测试通过,上线上正式环境后通过UI自动化测试实现业务全覆盖。

6.对于压力测试,介于对服务器的要求高,所以我们最后通过第三方压测平台实现,如果后期资源到位,可以使用压测工具在测试环境实现。

7.对于线上环境监控,主要又运维来做好,比如宕机监控、服务挂点监控,sql超时监控等等。

好了,罗马不是一天建成的,我们只要重视了,并且有推进,就一定会有成绩,虽然我能力自愧不如,但是我愿意去学习,和测试组一同成长。

 

linux中搭建redis服务器

1.在虚拟机新建一个目录,比如/usr/local/redis

2.在目录下执行:

wget http://download.redis.io/releases/redis-2.8.17.tar.gz

解压:tar –zxvf redis-2.8.17.tar.gz

解压完成后,执行make命令

cd /redis/redis-2.8.17

make

make完成后,进入src目录,发现多了两个redis-server 和redis-cli文件

启动redis:cd/src–>./redis-server

启动redis后如图FA@TBU3YH9IW[YMT7~6D3PX

启动redis客户端:另外打开一个xshell窗口,进入安装目录下的src路径(cd /usr/local/redis/redis-2.8.17/src)执行命令

./redis-cli启动后如图:

0BZSOWMQ%7S2LNW3SC4N4AJ

验证连接:

ping

结果应该显示PONG

set name nihao

get name

结果应该是‘nihao’

如果上面一切都顺利,说明已经搭建成功了,然后就是关闭redis客户端

quit或者exit

然后关闭redis服务:./redis-cli shutdown

有没有很简单?

 

 

jmeter使用代理录制web脚本

Apache JMeter是一款纯Java的应用程序,用于对软件或系统做性.能测试,如压力测试、负载测试。最初设计是用于web应用测试,由于开源其测试组件不断被扩充,逐步扩展到其他测试领域中。

jmeter制作脚本通常有三种方法,第一种是使用badboy录制jmx脚本,并导入jmeter中,第二种是使用代理录制Web性能测试脚本,最后一种,就是自己写脚本,可以通过fiddler抓包进行修改,制作脚本。下面主要说一下使用代理录制jmeter脚本。

第一步:启动JMeter,双击运行jmeter.bat。

第二步:添加线程组:右击”测试计划”→添加→Threads(Users)→线程组

第三步:添加http代理服务器:右击”工作台”→添加→非测试元件→HTTP代理服务器1504858976(1)

端口写默认的8080,https Domains 写本机IP

目标控制器:下拉选择我们上面建好的线程组

第四步:配置浏览器代理。

–在chrome浏览器中点击右上角设置–高级–打开代理设置–局域网设置–选中”为LAN使用代理服务器”。

–输入地址和端口。地址:localhost或本机的IP;端口:8080。

–最后依次点击”确定”。

第五步:打开浏览器,输入要录的网址,按步骤操作,jmeter线程组就会录下所有的请求。1504860036(1)

 

 

 

 

 

第六步:添加”查看结果树”。

–右击”线程组”→添加→监.听器→查看结构树。

–点击”启动”(Ctrl+R)按钮查看运行结果。

注意一下,如果我们录入时不过滤脚本,那录下来的脚本会有很多无用的,很混乱。所以,每次录入时,先设置好排除没用的请求。点击排除模式的添加按钮:输入要过滤的后缀,用”.*.”加上后缀,如图:

1504860330(1)

Python初学之流程控制小游戏

初学Python,小游戏分享,系统和人互动,猜系统未知答案,每猜一次,猜错给出提示,直到猜对。如下:

from random import randint

num=randint(2,10)

print ‘Who do you think i am ?’

bingo=False

while bingo==False:

answer=input()

if answer>num:

print “too large!”

if answer<num:

print “too small!”

if answer==num:

print ‘you are best!’

bingo=True

解释:首先,答案是一个random随机函数,在2到9的随机函数,如果没有使用while语句进行流程控制,那么上面的小游戏,不管对错,每次只能猜一次,所以引入while语句:
同if一样,while也是一种控制流语句,另外它也被称作循环语句。继续来看渣画质手绘流程图:

 

程序执行到while处,“当”条件为True时,就去执行while内部的代码,“当”条件为False时,就跳过。

语法为:

while 条件:
循环执行的语句
 

 

 

实现过程为:先定义bool变量bingo为False,那么当这个变量一直是Flase时,执行下面的循环语句,猜错了就不会输出bingo为True的结果。循环一直执行,我们可以一直回答,直到猜对了,输出bingo变量为True的值,才会导致while条件不再成立。游戏结束。

后来学到了,函数

我们希望有这样一个函数,它比较两个数的大小。

如果第一个数小了,就输出“too small”

如果第一个数大了,就输出“too big”

如果相等,就输出“bingo”

函数还有个返回值,当两数相等的时候返回True,不等就返回False

于是我们来定义这个函数:

def isEqual(num1, num2):

if num1<num2:

print ‘too small’

return False;

if num1>num2:

print ‘too big’

return False;

if num1==num2:

print ‘bingo’

return True

return是函数的结束语句,return后面的值被作为这个函数的返回值。函数中任何地方的return被执行到的时候,这个函数就会结束。

 

然后在我们的小游戏里使用这个函数:

from random import randint

num = randint(1, 100)

print ‘Guess what I think?’

bingo = False

while bingo == False:

answer = input()

bingo = isEqual(answer, num)

 

在isEqual函数内部,会输出answer和num的比较结果,如果相等的话,bingo会得到返回值True,否则bingo得到False,循环继续。

 

 

函数可以把某个功能的代码分离出来,在需要的时候重复使用,就像拼装积木一样,这会让程序结构更清晰。

 

 

 

 

python webdriver环境搭建

环境搭建
准备工具如下:
————————————————————-下载 python【python 开发环境】
http://python.org/getit/
下载 setuptools 【python 的基础包工具】
http://pypi.python.org/pypi/setuptools
下载 pip 【python 的安装包管理工具】
https://pypi.python.org/pypi/pip

setuptools 是 python 的基础包工具,可以帮助我们轻松的下载,构建,安装,升级,卸载 python
的软件包。
pip 是python软件包的安装和管理工具, 有了这个工具, 我们只需要一个命令就可以轻松的python 的任意类库。

windows 环境安装
第一步、安装 python 的开发环境包,选择需要安装路径进行安装,笔者下载的是目前最新的
python2.7.5版本,安装目录为:C:\Python27。
第二步、安装 setuptools 通过前面提供的 setuptools 的连接,拖动页面到底部找到,
setuptools-1.3.2.tar.gz 文件(版本随着时间版本会有更新) ,对文件进行解压,找到 ez_install.py
文件,进入 windows 命令提示(开始–运行–cmd 命令,回车)下执行 ez_install.py:
C:\setuptools-1.3>python ez_install.py
如果提示 python 不是内部或外部命令!别急,去添加一下 python 的环境变量吧!桌面“我的电脑”
右键菜单–>属性–>高级–>环境变量–>系统变量中的 Path 为:
变量名:PATH
变量值:;C:\Python27
第三步、安装 pip ,通过上面提供的链接下载 pip-1.4.1.tar.gz(版本随着时间版本会有更新) ,我
默认解压在了 C:\pip-1.4.1 目录下,打开命令提示符(开始–运行–cmd 命令,回车)进入 C:\pip-1.4.1
目录下输入:
C:\pip-1.4.1 > python setup.py install
再切换到 C:\Python27\Scripts 目录下输入:
C:\Python27\Scripts > easy_install pip
第四步、安装 selenium,如果是电脑处于联网状态的话,可以直接在 C:\Python27\Scripts 下输入
命令安装:
C:\Python27\Scripts > pip install -U selenium

如果没联网,可以通过下载安装:
selenium 下载地址: https://pypi.python.org/pypi/selenium
下载 selenium 2.33.0 (目前的最新版本) ,并解压把整个目录放到 C:\Python27\Lib\site-packages
目录下。

测试是否安装成功:

在开始菜单找到 python 目录,打开 IDLE(python GUI)程序,启动的是一个
交互模式。可以输入:from selenium import webdriver

上面的命令为导入 selenium 的相关包,如果回车后没有报错表示我们的 selenium 安装是成功的。

需要学习更多,可以找我一起学习哦

测试实战之Linux环境下搭建Tomcat+jdk+mysql

【Linux环境】

1.下载并安装一个VMware workstation, 这个是虚拟机的平台,后面要在里面搭建Linux系统。

2.下载一个centos安装包,linux版本有多种,比如说redhat、ubuntu、deepin、BT3,个人比较习惯使用centos,这里下载一个 CentOS-6.4-i386-bin-DVD1.iso,6.4版本的。

3.新建一个虚拟机,并把这个安装包导入进去,记住期间步骤有一步是需要建一个用户和设置密码,这里的用户是linux环境的普通账户,但是密码是根账户root和这个普通用户共用的密码

4.安装完成后,是图形化界面,一般我们要用到的是命令行界面,所以这里可以用快捷键 CTRL+ALT+F2,就可以切换到命令界面了。

5.用命令ifconfig查看IP 地址,然后可以考虑用Xshell来连接虚拟机,这样操作命令会比较方便,不用频繁的切换出来或者切换出去。

【JDK安装】

1.首先下载一个JDK版本,我这里下载的是jdk-6u45-linux-i586.bin 这个版本,一定要记得后缀名是bin,不然下载普通的Windows 版本是无法在 linux系统中安装的。

2.用xftp上传到linux环境中去。上传的路径为: /usr/local

3.然后在xshell窗口执行安装命令:

1)首先要赋予这个安装文件权限,这里为了方便,我直接赋予了最高权限,命令为: [root@localhost local] chmod 777 -R jdk-6u45-linux-i586.jdk 这里要注意到是在local的文件夹下哦,就是文件路径,不然是会提示找不到该文件的。

2)然后直接执行安装这个文件: ./jdk-6u54-linux-i586.jdk,安装成功后,最后会有一个Done的提示。

3)安装完成后,要查看这里的文件夹名字是什么,并为了之后的环境配置,可以把文件名进行修改,命令如下:

查看所有文件目录: ll

注意到这里安装完成后的JDK文件名是 jdk1.6.0_45,如果方便之后自己知道是具体哪个版本的JDK,这里可以不用做修改。

至此,JDK 已经安装完了,下面继续进行下一步。

 

【Tomcat】

1.首先下载 一个tomcat版本,我这里用的是apache-tomcat-6.0.35版本,apache-tomcat-6.0.35.zip是对应的压缩包

2.可以用XFTP 直接把已经解压的apache-tomcat-6.0.35上传到 /usr/local路径,上传完毕,然后这里就需要对环境变量进行配置,然后后面的tomcat才会顺利启动

3.配置JDK环境变量:

1)首先回到home路径,即顶级目录,命令: cd ~

2)然后打开并编辑环境变量的文件,输入命令: vi  .bashrc

3)进入环境变量编辑环境,加入如下环境变量:

export JAVA_HOME=/usr/local/jdk1.6.0_45

export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOMR/bin

export CATALINA_HOME=/usr/local/tomcat6 (这里是找到catalina所在的位置,找到大概位置即可,不需要到conf文件夹)

4)编辑完毕,就保存内容,命令: 先按ESC,然后输入 ”:wq“就可以保存了。

5)配置完毕后要让配置生效,用命令:source ~/.bashrc

6)查看JDK是否配置生效,用命令: java -version

看到如下类似的配置,则说明配置成功了。

4.可以启动一下tomcat,看是否配置成功了:

1)首先切换到启动命令所在的路径: cd /usr/local/tomcat6/bin

2)输入tomcat启动命令: ./startup.sh,但是这里由于权限问题,会看到这样的结果,所以需要我们赋权限。为了方便直接给bin文件夹赋予最高的权限,命令如下:

cd ..  【这个命令是返回上一级目录】

chmod 777 -R bin

cd bin

然后再次执行tomcat启动命令: ./startup.sh,出现如下截图,则表明启动成功。

3)一般默认的端口则是8080,所以直接在浏览器输入 你的ip地址加上端口号,即可以访问到tomcat的首页了。 http://ip:8080

4)但是任何配置都不会这么轻松就配置成功的,会出现防火墙关闭或者端口被占用的问题,这里我们可以切换到 tomcat下的bin 目录,执行下面这个命令,查看tomcat日志: ./catalina.sh run, 一般日志格式如下:

自己根据错误去判断具体是什么错误,然后来解决一些配置的问题,后期有问题的朋友也可以发邮件咨询哦~

5)在浏览器输入IP地址加端口号,如果看到tomcat 的首页,则表明成功了,如下所示:

 

【Mysql的配置】

1.切换到你需要安装mysql的路径,我的路径是: /usr/local

2.网上的安装方式都有很多,我们这里是自己搭建测试环境,可以直接选择在线安装,命令如下: yum install mysql-server,一直等待它安装完成,期间有些步骤需要询问是否继续,直接输入Y即可

3.安装完成后,启动mysql 服务,命令为: service mysqld start,看到如下截图,则说明安装mysql成功了

 

4.一般这样安装的mysql 都是默认为root根用户进行登录,密码也默认为空,所以输入下面的命令: mysql -u root -p, 然后密码处输入回车,即可登录到数据库了。如下所示:
就说明已经登陆到数据库了。

5.还有比较重要的一点,就是如何把tomcat 和mysql连接起来,就是我们平时说的配置JDBC连接,这里就需要用到一个连接的jar包:mysql-connector-java.jar, 可以自行下载,然后直接利用Xftp上传至 linux 环境中的如下路径:/usr/local/jdk1.6.0_45/lib

就是要把这个连接jdbc的jar包放到jdk的lib文件夹下,至此,整套环境已经配置完毕。

 

帮助了解前后端分离的项目,如何解决登录问题

方案一:使用token

  1. 前端把accountpassword,提交到服务端的登录api
  2. 服务端验证正确后,生成一个token,并把tokenuserId,存在缓存里(推荐redis数据库),然后把token返回给前端。
  3. 前端每次的请求头中带token,这样就能够轻松的实现

方案二:使用cookie

  1. client发送username和password到server
  2. server验证成功后, 写cookie到client,然后返回ok的json, 其中cookie的key要存储在redis中,value就是用户信息, 并且要设置key的超时时间,如:60分钟
  3. client收到ok后, 进行相应的业务操作, 以后每次请求server都会自动带上cookie, 不用你写代码
  4. server端的filter(你肯定用filter来实现)中会每次验证传过来的cookie的key在redis中是否存在, 有就代表登录成功过可以操作, 没有就返回错误标识注意: 在登录成功后, 每次调用服务器接口时候, 都要为redis的key进行续期,如60分钟
  5. 当redis的key超过60分钟, 自己会删除这个key, 那么再次请求server时, 就会收到需要登录的返回值
  6. 当用户主动退出系统的时候, 也要在server中删除redis的key