关于部署和平时测试的总结
一、基于阿里云部署
(一)先了解整个阿里云部署的整体框架,系统知识,如服务器ECS,负载均衡SLB,路由器,交换机,redis,云数据库等
负载均衡,英文名称为Load Balance,其意思就是分摊到多个操作单元上进行执行(我理解是:负载均衡会根据服务器的各种情况,随机把请求给一个服务器)
redis:我的理解是相当于一个中介。比如app发送一个请求,先去redis看下有无这个结果数据。如果有的话 ,就直接取redis的数据回来,不会再访问数据库了。因为数据库是保存在硬盘上,读取数据库数据比较慢,所以用了redis,还可以加快访问速度
(二)做出基本方案,类似如下
负载均衡可以对应多个端口号,服务器中可以同时部署多个项目(只要端口不冲突就行)
(三)购买服务器,负载均衡等
1、购买服务器ECS
到阿里云购买云服务器 ECS。选了最便宜的套餐:CPU: 1核 / 内存: 1024 MB / 带宽:1Mbps / 操作系统: CentOS 7.0购买环节会设置 ssh 登陆密码,记下密码。登陆到阿里云,查看购买的实例。注意公网 IP,下一步会用到
2、购买负载均衡SLB,另外可根据项目情况,决定是否购买云数据库,或者自己安装等
(四)登录服务器ECS
打开 Terminal, 输入 ssh root@公网IP 登陆服务器。首次登陆会询问公钥,yes 即可。关于 ssh 登陆,具体可以看SSH原理与运用http://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.html 这篇文章
(五)环境部署
1、上传文件到Linux云主机:
本地系统为Windows系统,可以使用命令安装 yum -y install lrzsz,运行 rz ,会自动打开一个Windows窗口,选择你要上传到服务器的文件,点击确定。ls 看一下,这个文件已经在你的目录下
本地系统为mac系统,打开终端,使用命令scp或者ftp
服务器端口号为默认的22:scp 文件名称 root@ip地址:
服务器端口号非22:scp -p 端口号 文件名称 root@ip地址:
2、部署redis
可参考Redis的部署和启动 https://yq.aliyun.com/articles/38257
3、部署JDK+tomcat+jenkis等
可参考百人计划成员的文章阿里云服务器环境部署JDK+Tomcat+Jenkins+Maven+Python+Git http://www.jianshu.com/p/0e67b4545d08
4、根据方案配置端口
1)如果是tomcat,在cd tomcat/conf目录下的文件server.xml中配置端
2)如果是java等代码,则在代码里面的配置文件中配置即可(跟开发了解具体的配置)
5、在阿里云配置SLB端口
6、配置路由等
7、启动项目脚本配置(因为有时候开发给的是开发环境的配置,我们要改为测试环境的才可以),也是我们说的发布测试环境的项目
二、测试与数据库,linux的简单打交道
因为99%的软件,处理的数据最终是需要落地,到数据库或者文件里的,我们必须知道是数据本身的问题,还是处理数据的过程出了问题。在测试过程中会出现一些诸如session过期、数值校验、参数传递错误等现象,知道开发的规则,是更好掌握测试结果的充分条件。
所以,建议测试都能拿到测试环境的账号等,其实最严格的来说,开发是不能动测试环境的,测试环境由测试人员掌管,但是看公司部门和测试人员的具体情况
(二)测试与数据库的简单打交道
1、测试通过查看表结构,快速定位问题
如发布评论功能,需求定义可以输入文字200个,但最后你发布成功之后,只显示了100个字,剩余的100字不见了。这时候直接跟开发说?
====先查看表结构,看是否是字段的长度设置的不够,如下图,升级表中,升级内容的长度是100,是绝对不够的
2、验证数据的正确性
对数据库的数据正确性的检查,如时间的检查。
比如一个活动,结束时间,你填的是2017/7/1.但是存到数据库中是2017/7/1 00:00:00,这就代表你在2017/7/1号已经看到这个活动了=========正确是要存为2017/7/1 23:59:59
3、查看linux下的日志和数据库结合起来看的一个例子
你在APP中发现有2条重复记录,这时候你去数据库查,数据库中只有1条记录,这时候能看日志的,就去看下日志返回了几条记录
用tail -f 日志文件名称 | grep '关键词1'|grep '关键词2'
具体关键词,可以平时多看接口文档
4、通过日志和数据库进行测试
如配置了排序规则,通过关键字查看(tail -f a.log|grep '关键字a'),看到后台返回的排序是[431, 433, 449, 434, 442, 443, 444, 432]
此时根据需求去查看正确的排序
(二)测试与服务器linux的简单打交道
1、部署项目,有tomcat,java的;查看项目是否启动(***为需要查找的进程名称)ps -ef|grep ***
2、查看日志,尤其是报错日志(如内部错误等):tail -f error.log;也可以查看前端上传的数据,后端返回的数据是否有错
如有脚本没有跑,会报错:
3、发布测试环境的项目,一般是直接发布脚本,脚本是以.sh结尾的,发布操作,直接./脚本文件
现在有一种是直接发布脚本,脚本中会把最新代码pull下来,这个方式是快,而且简单,只要开发提交了代码到相对于的分支即可,但是没那么安全
一种是打成war包或者rar包,通过解压之后,配置好部署文件再发布,这个方式是比较安全,但是比较麻烦,而且属于非集成,失误会比较多,而且如果是频繁更新发布的话,会比较痛苦
最后的总结:
我的习惯是:
1、一个新项目,我会拿到测试环境的数据库,服务器等账号。因为我们暂时没有做数据库的文档,所有会要求开发给我大概讲下数据库的各种表(这个有文档的话,就不用了,可以自己主动去了解)
2、对于复杂功能,要求开发补充具体的逻辑文档或者口头给测试人员说明,防止漏测(这个觉得适合比较小的公司吧)
3、对于数据的更改要慎重,提前跟开发沟通,免得是更改数据导致的bug