linux搭建测试环境搭建
A. 在linux搭建测试环境一般步骤是怎么样
首先是准备工作,需要提前获取集成环境安装包(如LNMP)、项目部署包、项目部署说明文档;其次是安装集成环境(一般用来集中式安装数据库和web服务器);最后是部署项目(将解压后的项目文件复制到制定的web服务器访问目录下)。可以了解一下黑马程序员的软件测试课程,里面讲的非常详细。
B. 测试环境怎么搭建
问题一:在软件测试中如何搭建测试环境? 听您这提问,估计您是没做过测试吧。
什么是测试环境呢?大白话讲就是可以基本准确的将测试用例执行出来,并且结果是有参考意义的那么个环境~
这前题是你的测试用例是有效的。那撇掉这个不管的情况下,测试环境就不可能是固定的。
有时候,测试环境可能就是一个系统。P如你这个软件,什么都不用管,你只要测能不能装在XP系统上,那此时,一个完整的XP系统就是测试环境。
有时候,你要测一个网站支持不支持多种浏览器。那此时,你的测试环境就是一个安装了多种浏览器的操作系统。
我说的你明白了么?所谓的搭建测试环境(招聘的老有这要求,会搭建环境),就是你能搭出可供测试用的环境。简单了说~是操作系统~复杂了说,是装了特定软件做了特定设置的操作系统~
问题二:什么是测试环境?如何搭建测试环境? 硬件:包括PC机、笔记本、服务器、各种终端等。例如要测试photoshop软件,是要在PC机上测,还是笔记本上测?是在cpu为酷睿的计算机上测,还是要在炫龙的cpu上测?不同的硬件环境photoshop的处理速度是不一样的。
软件:这里主要指的是软件运行的操作系统。例如测试photoshop,是指windows xp下测试还是在vista下测试?可能会有兼容性问题。软件环境还包括与其他各类软件共存同一系统时的兼容性问题。
一般来说,配置测试环境可遵循下列原则:
1、真实:尽量模拟用户的真实使用环境。这里需要提一点,关于项目软件与产品软件需要不同看待。项目软件由于只针对某一群体的用户,所以测试的环境比较单一。但产品软件针对的是广大群众,所以测试环境比较复杂,要多方面考虑。
2、干净:测试环境中尽量不要安装与被测软件无关的软件。笔者就遇到这种事情,两台机器,针对一个功能,一台测试OK,另一台测试NG,最后根据调查发现,测试OK的机器上安装了客户根本不会安装的VC++开发环境,测试NG的机器正因为没有安装VC,所以测试出了这个bug:软件中缺少必要的动态链接库支持。但这个干净也不是必须的,有时还要刻意去测试某个软件去其他软件并存时的兼容性问题。
问题三:windows怎么搭建测试环境 第1步、下载IIS
1、如果不是很清楚自己的装有Microsoft Windows XP 操作系统的电脑上是否安装了IIS,可以打开IE浏览器,在其地址栏输入127.0.0.1并回车,如下图
2
如果能正常打开上面的网页,说明本台电脑已安装了IIS(Internet信息服务)。如果打不开上面的网页,我们就得自己来安装IIS。下面介绍的是如何来安装IIS,如果你已会,完全可以跳过本部分,不会的可以一起来学习一下。
3
2、系统安装光盘中带有IIS的安装程序,但因为现在大部分朋友的电脑都是GHOST系统,所以可以用搜索引擎,下载IIS独立安装包。打开网络,输入“IIS for xp”,找到相关链接网站,下载所需要IIS安装包,如下图
4
3、下载下来的“IIS for XP”安装包一般都为压缩文件,所以使用它前,得先行解压,如下图
5
第2步、安装IIS
1、我们依次打开“开始”→“控制面板”,找到并双击”添加或删除程序“,打开了”添加或删除程序“窗口,如下图
6
2、点击窗口左侧的“添加/删除Windows组件”,如下图
7
3、勾选“Internet信息服务”,并点击“下一步”命令按钮,如下图
8
4、弹出“所需文件”对话框,点击窗口右下角的“浏览”命令按钮,打开“查找”对话框,找到我们刚才从网上下载下来,并解压的IIS FO XP 安装包,找到所需的文件,选择打开后,然后再点“确定”命令按钮,继续IIS的安装,以后安装过程中再需要什么文件的话,找到安装包后,选择文件就可以了。如下图
9
点击“完成”命令按钮,完成IIS的安装,如下图
10
第3步、测试IIS
打开IE 浏览器,在其地址栏输入”127.0.0.1“后回车,看到如下图所示的界面,就证明IIS安装成功了,如下图
11
至此,我们已成功安装IIS,IIS的安装讲解完毕,接下来讲解如何测试我们自己的ASP网站。
12
第4步、架设网站
1、我们把自己的ASP网站源代码拷贝到电脑任意一个磁盘分区,比如D盘,如下图
13
2、打开“计算机”管理。在“我的电脑”上右击,选择并点击“管理”,这样我们就打开了“计算机管理”窗口,在该窗口左侧依次点击“服务和应用程序”→“Internet信息服务”→“网站”,然后在“默认网站”上右击,选择“新建”→“虚拟目录”,如下图
14
3、新建虚拟目录。点击“虚拟目录”,打开“虚拟目录创建向导”对话框,点击“下一步”命令按钮,输入虚拟目录“别名”,比如:glxt,然后再点“下一步”命令按钮,通过“浏览”的方式找到网站源代码所在的目录,我们刚才把源代码放在了:D:\bysjASP,如下图
15
4、完成向导。目录选择好后,我们点“下一步”,在“访问权限”对话框,按照下图所示选择就可以了,再点“下一步”命令按钮,出现“已成功完成虚拟目录创建向导”对话框,点击“完成”,完成虚拟目录的创建工作,如下图
16
第5步、测试网站
1、我们在“计算机管理”窗口的“默认网站”下面,找到我们刚才创建成功的虚拟目录“glxt”,然后点击这个虚拟目录,如下图
17
2、在窗口的右侧,找到我们网站的首页:index.asp,然后右击这个文件,在弹出的快捷菜单中选择并点击“浏览”,如下图
18
这样我们就打开了我们自己的网站,如果程序没有错误,网站是可以正常打开的;如果程序有错误,则网......>>
问题四:如何搭建一个稳定、可重复的测试环境 innodb_data_home_dir = /longxibendi/mysql/mysql/var/
#innodb_data_file_path = ibdata1:1G:autoextend
innodb_data_file_path = ibdata1:500M;ibdata2:2210M:autoextend #表空间
innodb_file_io_threads = 4 #io线程数
问题五:什么是android测试环境搭建 android 官网之前发布过ADT版本的Eclipse,建议使用官网提供的集成开发环境IDE(已上传附件),即官方已经集成好ADT CDT SDK Eclipse,不需要再做任何的配置,直接解压就可以用了。
问题六:面试问到软件测试中怎么搭建测试环境 搭建测试环境实际就是部署环境,比如window+mysql+tomcat部署这些
问题七:软件测试搭建环境具体是怎么做的 这个要看实际工作环境、软件的运行环境来决定的,总体来说从:
1、操作系统:win还是Linux
2、软件架构: B/S还是C/S
3、数据库类型:orcale还是mssql,db2deng
。。。。
问题八:前端的开发调试测试的环境怎么搭建 前端环境搭建系列的目的是把前端团队作为一个整体,如何有效的团队协同开发,第一部分开发环境。
1.代码版本管理
SVN是必不可少了,版本号的规划按照项目三位版本,开发四位版本来部署。比如我要做A项目,版本号为1.0.0,我第一次提测的代码版本为1.0.0.1。每次四位版本按照tag区分。QA按照这个tag部署测试代码,OP则部署线上代码。
如果多个项目同时开发,就开分支。这些需要一个项目管理平台来管理版本。
2. 开发环境
我假设前端team的范畴是HTML CSS JS MVC中的V 和 C。最佳的环境是每个人一个开发环境,代码通过SVN同步别人的代码。但是文件的路径全部都一致。
比如
css的img.xx/css
js的img.xx/js
flash的img.xx/swf
后台环境,假设每个后端开发也都有独立的环境,如果和谁联调代码就让他把配置指向你的V C目录进行调试。
QA环境的debug问题,你的环境和QA环境代码部署一致,能够通过host切换静态文件,如css js flash。毕竟前端的大部分问题是前端代码的问题,V 和 C的问题就在自己的环境调试了,静态资源切换到QA的host。
数据问题,最后有个大的造数据平台,通用一份数据库,提供数据增加和修改的接口,这是理想状态,当然这个平台也会很麻烦,实在不行就通过后端的数据操作接口操作数据。
3.编译环境
可恶的前端代码裸上,会有很多问题,大部分是性能问题,还有部分是缓存问题。
所以需要提供编译环境,编译流程放在提测前是安全的,因为会经过QA的质量检测,如果在OP环节应该比较麻烦,编译代码的bug也没人去测。
编译一般解决的事情
1、批量的一些操作,比如版本号
2、代码的合并和压缩
3、代码的优化或者职能替换,比如资源打包
我遇到过的开发状况都不乐观。所以有时间自己搭下试试有多复杂。
一般有公用开发环境,就一台机器一个host,不管主干分支都放在那里,可想又多混乱,还有前端无版本管理软件,人肉维护多个并发版本。
或者有版本管理,开发环境还是多人一个,而且没有host,静态资源引入都是通过模板conf管理路径的。这样的代码不利于资源路径管理,特别是图片,加入png半透明的需要全路径,多个css合并的最好是根目录路径。
各种悲剧,此文到此结束。下篇为开发模式和模块化。
C. Linux下docker基础环境搭建
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
# 报错:curl: (6) Could not resolve host: get.docker.com; 未知的错误
# 解决:cat /etc/resolv.conf 里加了个 nameserver 8.8.8.8
sudo curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
验证安装:docker-compose --version
# compose 那个亚马逊的老是下载不了,可换对应地址:
sudo curl -L https://get.cloud.io/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
查看docker版本: docker --version
启动docker: systemctl start docker 或者 service docker start
停止docker: systemctl stop docker
查看docker镜像文件: docker images
查看docker内容器: docker ps -a
修改 /etc/dockers 文件下的配置文件 daemon.json (配置作用参考附录)
操作完成后需要重启docker: systemctl restart docker
服务端安装git:yum install git
拉取一下文件和命令:git clone http://172.16.1.35/demo/demo-dockers.git
查看本地和远端版本:git branch -a
切换本地分支为dev:git checkout -b dev origin/dev
启动docker:service docker start
后 执行文件中的shell:./init.sh all (包含:mysql,mongo,redis,solr,activemq,tomcat)
删除多下载的镜像:docker rmi --force 3068f6bb852e
容器列表: docker ps -a
进入某个容器:docker exec -it [CONTAINER ID] /bin/bash
查看某个容器进程:docker top [NAMES]
查看 demo-dockers 目录下 java-runtime 文件位置下有对应几个项目配置文件 application-alpha.yml
修改配置文件后,需要重新启动对应java项目,执行启动脚本 ./init-java-runtime.sh + [项目名或者all]
获取镜像文件的地址:http://172.18.5.112:5001/repository/demo/ 查找对应需要的镜像包
更换镜像文件: vi java-runtime.yml 内,image后的对应项目后跟的包名中
重启对应项目: ./init-java-runtime.sh [项目名]
查看对应项目启动log: docker logs -f --tail 500 [生成的容器名称]
(容器重启:docker restart [容器id或名称])
{
"authorization-plugins": [],//访问授权插件
"data-root": "",//docker数据持久化存储的根目录
"dns": [],//DNS服务器
"dns-opts": [],//DNS配置选项,如端口等
"dns-search": [],//DNS搜索域名
"exec-opts": [],//执行选项
"exec-root": "",//执行状态的文件的根目录
"experimental": false,//是否开启试验性特性
"storage-driver": "",//存储驱动器
"storage-opts": [],//存储选项
"labels": [],//键值对式标记docker元数据
"live-restore": true,//dockerd挂掉是否保活容器(避免了docker服务异常而造成容器退出)
"log-driver": "",//容器日志的驱动器
"log-opts": {},//容器日志的选项
"mtu": 0,//设置容器网络MTU(最大传输单元)
"pidfile": "",//daemon PID文件的位置
"cluster-store": "",//集群存储系统的URL
"cluster-store-opts": {},//配置集群存储
"cluster-advertise": "",//对外的地址名称
"max-concurrent-downloads": 3,//设置每个pull进程的最大并发
"max-concurrent-uploads": 5,//设置每个push进程的最大并发
"default-shm-size": "64M",//设置默认共享内存的大小
"shutdown-timeout": 15,//设置关闭的超时时限(who?)
"debug": true,//开启调试模式
"hosts": [],//监听地址(?)
"log-level": "",//日志级别
"tls": true,//开启传输层安全协议TLS
"tlsverify": true,//开启输层安全协议并验证远程地址
"tlscacert": "",//CA签名文件路径
"tlscert": "",//TLS证书文件路径
"tlskey": "",//TLS密钥文件路径
"swarm-default-advertise-addr": "",//swarm对外地址
"api-cors-header": "",//设置CORS(跨域资源共享-Cross-origin resource sharing)头
"selinux-enabled": false,//开启selinux(用户、进程、应用、文件的强制访问控制)
"userns-remap": "",//给用户命名空间设置 用户/组
"group": "",//docker所在组
"cgroup-parent": "",//设置所有容器的cgroup的父类(?)
"default-ulimits": {},//设置所有容器的ulimit
"init": false,//容器执行初始化,来转发信号或控制(reap)进程
"init-path": "/usr/libexec/docker-init",//docker-init文件的路径
"ipv6": false,//开启IPV6网络
"iptables": false,//开启防火墙规则
"ip-forward": false,//开启net.ipv4.ip_forward
"ip-masq": false,//开启ip掩蔽(IP封包通过路由器或防火墙时重写源IP地址或目的IP地址的技术)
"userland-proxy": false,//用户空间代理
"userland-proxy-path": "/usr/libexec/docker-proxy",//用户空间代理路径
"ip": "0.0.0.0",//默认IP
"bridge": "",//将容器依附(attach)到桥接网络上的桥标识
"bip": "",//指定桥接ip
"fixed-cidr": "",//(ipv4)子网划分,即限制ip地址分配范围,用以控制容器所属网段实现容器间(同一主机或不同主机间)的网络访问
"fixed-cidr-v6": "",//(ipv6)子网划分
"default-gateway": "",//默认网关
"default-gateway-v6": "",//默认ipv6网关
"icc": false,//容器间通信
"raw-logs": false,//原始日志(无颜色、全时间戳)
"allow-nondistributable-artifacts": [],//不对外分发的产品提交的registry仓库
"registry-mirrors": [],//registry仓库镜像
"seccomp-profile": "",//seccomp配置文件
"insecure-registries": [],//非https的registry地址
"no-new-privileges": false,//禁止新优先级(??)
"default-runtime": "runc",//OCI联盟(The Open Container Initiative)默认运行时环境
"oom-score-adjust": -500,//内存溢出被杀死的优先级(-1000~1000)
"node-generic-resources": ["NVIDIA-GPU=UUID1", "NVIDIA-GPU=UUID2"],//对外公布的资源节点
"runtimes": {//运行时
"cc-runtime": {
"path": "/usr/bin/cc-runtime"
},
"custom": {
"path": "/usr/local/bin/my-runc-replacement",
"runtimeArgs": [
"–debug"]
}
}
}
服务端安装git:yum install git
拉取一下文件和命令:git clone http://172.16.1.35/gchat/gaga-dockers.git
指定分支克隆git clone -b dev-1 http://172.16.1.35/gchat/gaga-dockers.git
查看本地和远端版本:git branch -a
切换本地分支为dev:git checkout -b dev origin/dev
启动docker:service docker start
后 执行文件中的shell:./init.sh all (顺序:mysql,mongo,redis,solr,activemq,tomcat)
删除多下载的镜像:docker rmi --force 3068f6bb852e
容器列表: docker ps -a
进入某个容器:docker exec -it [CONTAINER ID] /bin/bash
查看某个容器进程:docker top [NAMES]
# 查看是否安装了tomcat: rpm -qa | grep tomcat
# 查找文件:find / -name tomcat
# 切换Tomcat目录:cd /usr/local/tomcat/bin
# 关闭Tomcat:./shutdown.sh
# 查看docker中的java版本:docker exec container_name java -version
git拉代码:git clone [email protected]:gchat/gaga-server.git
查看远端分支:git branch -r
创建本地dev分支 并切换到dev分支:git checkout -b dev origin/dev
查看本地分支:git branch
切换回眸分支:git checkout master
查看所有JDK在系统中位置:/usr/libexec/java_home -V
参考地址: https://www.runoob.com/docker/docker-command-manual.html
查找docker 安装包:yum list installed | grep docker
停掉docker:systemctl stop docker
删除对应文件:yum remove docker.x86_64 docker-client.x86_64 docker-common.x86_64 -y
查看下docker rpm源:rpm -qa | grep docker
删除对应路径:rm -rf /var/lib/docker
注释:
本次也是由于业务需要,需要重新搭建新的测试服务器,这也是搭建中的一个插曲,后续会使用 Jenkins 进行相关的持续集成,大家一起学习分享!~
D. 接口自动化测试环境搭建jmeter+ant+git+jenkins
1、安装java
方式一:安装java环境:yum install java-1.8.0-openjdk* -y
使用命令检查是否安装成功 java -version
到此安装结束了。这样安装有一个好处就是不需要对path进行设置,自动就设置好了。jdk安装在/usr/lib/jvm目录下
方式二:先下载对应版本到本地,然后解压缩,配置环境变量(详细步骤网络即可)
2、安装jmeter
(1)登录自己服务器,在usr/local下创建文件夹jmeter,命令mkdir jmeter
(2)通过官网下载jmeter到本地
(3)通过xhell上传到对应的目录(cd到要上传的目录)
(4)yum -y install lrzsz(安装了lrzsz,执行该命令是因为服务器有的文件不让上传。让上传就不用执行)
(5)使用 rz -y命令进行文件上传,此时会弹出上传的窗口,进行上传即可
(6)上传成功之后进行解压 unzip apache-jmeter-5.4.zip
(7)配置环境变量vi /etc/profile
esc+shift # 键盘同时按住,退出编辑模式
:wq # 保存退出
:q # 不保存退出
添加如下内容:
# set Jmeter enviroment
export JMETER_HOME=/usr/local/jmeter/apache-jmeter-5.4
export PATH=${PATH}:${JMETER_HOME}/bin
(8)source /etc/profile # 使配置文件生效
(9)jmeter -version
3、安装ant
(1)在usr/local下创建文件夹ant,命令mkdir ant
(2)通过官网下载ant到本地
(3)使用 rz -y命令进行文件上传,此时会弹出上传的窗口,进行上传即可 sz 文件名(服务器文件下载到本地)
(4)上传成功之后进行解压 unzip
(5)配置环境变量vi /etc/profile
# set Ant enviroment
export ANT_HOME=/usr/local/ant/apache-ant-1.10.10
export PATH=${PATH}:${ANT_HOME}/bin
(6)source /etc/profile # 使配置文件生效
(7)ant -version
4、ant的配置
(1)将jmeter安装包extras文件夹里ant-jemter-1.1.1.jar 复制到antlib下
cp ant-jmeter-1.1.1.jar /usr/local/ant/apache-ant-1.10.10/lib
(2)进入apache-jmeter-3.0extras运行ant ,查看该目录下是否出现Test.jtl、Test.html文件,若有,则构建成功
5、编写Ant的build.xml文件
(1)创建Jmeter_Test目录,放在/usr/local/下
(2)Jmeter_Test目录下创建build.xml、ResultLog(html,jtl)、Script(放脚本)
(3)build.xml文件内容去https://www.cnblogs.com/L-Test/p/9736808.html下复制,需要修改里边的路径
6、jenkins安装
(1)Jenkins下载地址:https://jenkins.io/download/
(2)下载的是jenkins.war
(3)在Linux下启动Jenkins有两种方式,一种是在jenkins.war的存放目录下使用命令java -jar jenkins.war启动,
另外一种是把jenkins.war放在tomcat的webapps目录下,然后启动tomcat就可以了(本次用的第一种)
(4)在浏览器中输入http://服务器ip:8080/jenkins/
如果是用的阿里云服务器,启动成功之后,在浏览器访问,无法访问。解决办法就是登陆阿里云服务器修改一下安全规则,把端口范围调大
(5)访问成功之后输入管理员密码
(6)安装推荐的插件,创建管理员用户
7、jenkins的其他配置
(1)修改为中文依赖的三个插件localization-zh-cn、locale、localization-support
jenkins插件下载地址https://blog.csdn.net/qq_39530199/article/details/90266654
(2)不知道依赖于那个插件,可以看看manage Jenkins里边的报错 plugin is missing
8、git的安装
(1)git下载地址:https://mirrors.edge.kernel.org/pub/software/scm/git/
(2)usr/local下新建git目录,cd到git,安装包上传上来, tar -zxvf v2.17.0.tar.gz
(3)安装编译源码所需依赖,命令为: yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl- ExtUtils-MakeMaker 耐心等待安装,出现提示输入y即可;
(4)安装依赖时,yum自动安装了Git,需要卸载旧版本Git,命令为: yum remove git 出现提示输入y即可;
(5)进入解压后的文件夹,命令 cd git-2.17.0 ,然后执行编译,命令为 make prefix=/usr/local/git all 耐心等待编译即可;
(6)安装Git至/usr/local/git路径,命令为 make prefix=/usr/local/git install ;
(7)打开环境变量配置文件,命令 vim /etc/profile ,在底部加上Git相关配置信息
# set Git enviroment
export GIT_HOME=/usr/local/git
export PATH=$GIT_HOME/bin:$PATH
(8)git version
9、jenkins安装相应插件
(1)安装源码管理选择git需要的插件git、git-server、git-client、github-api、plain-credentials、github
上传插件的时候可能会报错,可以把插件上传顺序改一下在上传
(2) jenkins设置git的安装路径,点击全局工具配置/usr/local/git/bin/git(whereis git 命令可查看)
(3)windows本地安装git,把代码推送到github(需要在github创建一个仓库),参考自动化测试的 《
(4)jenkins配置源码管理选择git,地址输入github项目地址,账号可以先在jenkins凭据配置中添加github账号
输地址或账号的时候可能会报403的错误。解决办法刷新一下或者 在Configure Global Security中开启 启用代理兼容
(5)配置完源码管理,直接进行构建,代码自动下载到/root/.jenkins/workspace/git/路径下
10、接下来需要把build.xml中脚本路径改为/root/.jenkins/workspace/git/进行构建,可以在Github里提交一个jmx文件构建一下试试
E. 怎么软件测试啊
软件测试方法
软件测试的基本方法
单元测试的基本方法
综合测试的基本方法
确认测试的基本方法
系统测试的基本方法
软件测试的基本方法
软件测试的方法和技术是多种多样的。
对于软件测试技术,可以从不同的角度加以分类:
从是否需要执行被测软件的角度,可分为静态测试和动态测试。
从测试是否针对系统的内部结构和具体实现算法的角度来看,可分为白盒测试和黑盒测试;
1、黑盒测试
黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打开的黑盆子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数锯而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。黑盒测试方法主要有等价类划分、边值分析、因果图、错误推测等,主要用于软件确认测试。 “黑盒”法着眼于程序外部结构、不考虑内部逻辑结构、针对软件界面和软件功能进行测试。“黑盒”法是穷举输入测试,只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但是可能的输入进行测试。
2、白盒测试
白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。
“白盒”法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。“白盒”法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。贯穿程序的独立路径数是天文数字。但即使每条路径都测试了仍然可能有错误。第一,穷举路径测试决不能查出程序违反了设计规范,即程序本身是个错误的程序。第二,穷举路径测试不可能查出程序中因遗漏路径而出错。第三,穷举路径测试可能发现不了一些与数据相关的错误。
3.ALAC(Act-like-a-customer)测试
ALAC测试是一种基于客户使用产品的知识开发出来的测试方法。ALAC测试是基于复杂的软件产品有许多错误的原则。最大的受益者是用户,缺陷查找和改正将针对哪些客户最容易遇到的错误。
单元测试的基本方法
单元测试的对象是软件设计的最小单位模块。单元测试的依据是详细设描述,单元测试应对模块内所有重要的控制路径设计测试用例,以便发现模块内部的错误。单元测试多采用白盒测试技术,系统内多个模块可以并行地进行测试。
单元测试任务
单元测试任务包括:1 模块接口测试;2 模块局部数据结构测试;3 模块边界条件测试;4 模块中所有独立执行通路测试;5 模块的各条错误处理通路测试。
模块接口测试是单元测试的基础。只有在数据能正确流入、流出模块的前提下,其他测试才有意义。测试接口正确与否应该考虑下列因素:
1 输入的实际参数与形式参数的个数是否相同;
2 输入的实际参数与形式参数的属性是否匹配;
3 输入的实际参数与形式参数的量纲是否一致;
4 调用其他模块时所给实际参数的个数是否与被调模块的形参个数相同;
5 调用其他模块时所给实际参数的属性是否与被调模块的形参属性匹配;
6调用其他模块时所给实际参数的量纲是否与被调模块的形参量纲一致;
7 调用预定义函数时所用参数的个数、属性和次序是否正确;
8 是否存在与当前入口点无关的参数引用;
9 是否修改了只读型参数;
10 对全程变量的定义各模块是否一致;
11是否把某些约束作为参数传递。
如果模块内包括外部输入输出,还应该考虑下列因素:
1 文件属性是否正确;
2 OPEN/CLOSE语句是否正确;
3 格式说明与输入输出语句是否匹配;
4缓冲区大小与记录长度是否匹配;
5文件使用前是否已经打开;
6是否处理了文件尾;
7是否处理了输入/输出错误;
8输出信息中是否有文字性错误;
检查局部数据结构是为了保证临时存储在模块内的数据在程序执行过程中完整、正确。局部数据结构往往是错误的根源,应仔细设计测试用例,力求发现下面几类错误:
1 不合适或不相容的类型说明;
2变量无初值;
3变量初始化或省缺值有错;
4不正确的变量名(拼错或不正确地截断);
5出现上溢、下溢和地址异常。
除了局部数据结构外,如果可能,单元测试时还应该查清全局数据(例如FORTRAN的公用区)对模块的影响。
在模块中应对每一条独立执行路径进行测试,单元测试的基本任务是保证模块中每条语句至少执行一次。此时设计测试用例是为了发现因错误计算、不正确的比较和不适当的控制流造成的错误。此时基本路径测试和循环测试是最常用且最有效的测试技术。计算中常见的错误包括:
1 误解或用错了算符优先级;
2混合类型运算;
3变量初值错;
4精度不够;
5表达式符号错。
比较判断与控制流常常紧密相关,测试用例还应致力于发现下列错误:
1不同数据类型的对象之间进行比较;
2错误地使用逻辑运算符或优先级;
3因计算机表示的局限性,期望理论上相等而实际上不相等的两个量相等;
4比较运算或变量出错;
5循环终止条件或不可能出现;
6迭代发散时不能退出;
7错误地修改了循环变量。
一个好的设计应能预见各种出错条件,并预设各种出错处理通路,出错处理通路同样需要认真测试,测试应着重检查下列问题:
1输出的出错信息难以理解;
2记录的错误与实际遇到的错误不相符;
3在程序自定义的出错处理段运行之前,系统已介入;
4异常处理不当;
5错误陈述中未能提供足够的定位出错信息。
边界条件测试是单元测试中最后,也是最重要的一项任务。众的周知,软件经常在边界上失效,采用边界值分析技术,针对边界值及其左、右设计测试用例,很有可能发现新的错误。
单元测试过程
一般认为单元测试应紧接在编码之后,当源程序编制完成并通过复审和编译检查,便可开始单元测试。测试用例的设计应与复审工作相结合,根据设计信息选取测试数据,将增大发现上述各类错误的可能性。在确定测试用例的同时,应给出期望结果。
应为测试模块开发一个驱动模块(driver)和(或)若干个桩模块(stub),下图显示了一般单元测试的环境。驱动模块在大多数场合称为“主程序”,它接收测试数据并将这些数据传递到被测试模块,被测试模块被调用后,“主程序”打印“进入-退出”消息。
驱动模块和桩模块是测试使用的软件,而不是软件产品的组成部分,但它需要一定的开发费用。若驱动和桩模块比较简单,实际开销相对低些。遗憾的是,仅用简单的驱动模块和桩模块不能完成某些模块的测试任务,这些模块的单元测试只能采用下面讨论的综合测试方法。
提高模块的内聚度可简化单元测试,如果每个模块只能完成一个,所需测试用例数目将显着减少,模块中的错误也更容易发现。
F. linux 的环境搭建(二)--redis单机环境、生产环境、集群环境的搭建
一、目录
1、工具
2、安装tcl
3、安装单机版redis
4、把redis设置为daemon进程,每次系统启动,redis进程一起启动
5、安装redis cluster
二、工具
2.1、tcl8.6.1-src.tar.gz
2.2、ruby-2.3.1.tar.gz
2.3、redis-4.1.1.gem
2.4、redis-3.2.8.tar.gz
2.5、openssl-1.0.2r.tar.gz
三、安装tcl(安装redis必须先要安装tcl)
3.1、把tcl8.6.1-src.tar.gz通过WinSCP上传到虚拟机中的/usr/local目录下
四、安装单机版redis
4.1、把redis-3.2.8.tar.gz通过WinSCP上传到虚拟机中的/usr/local目录下
4.2、依次运行如下命令:
tar -zxvf redis-3.2.8.tar.gz 解压文件
cd redis-3.2.8
make && make test && make install
五、把redis设置为daemon进程,每次系统启动,redis进程一起启动
5.1、将redis的utils目录下的redis_init_script脚本拷贝到linux的/etc/init.d目录中,将redis_init_script重命名为redis_6379,6379是我们希望这个redis实例监听的端口号
5.2、修改redis_6379脚本的第6行的REDISPORT,设置为相同的端口号(默认就是6379)
protected-mode no 取消保护模式,保护模式只能127.0.0.1访问
daemonize yes 让redis以daemon进程运行
pidfile /var/run/redis_6379.pid 设置redis的pid文件位置
bind 192.168.3.110
port 6379 设置redis的监听端口号
dir /var/redis/6379 设置持久化文件的存储位置
logfile /var/log/redis/6379.log 设置日志文件位置
5.6、启动redis,依次执行:
cd /etc/init.d,
chmod 777 redis_6379,赋读写执行的权限(chmod -R 777 * 是递归把该目录下的所有文件和其子文件全部赋权限)
./redis_6379 start 启动
5.7、确认redis进程是否启动,ps -ef | grep redis
5.8、让redis跟随系统启动自动启动
5.9、重启系统,不手动启动redis,直接连接redis,可以连接上,表示配置成功
此时一个单机版的redis的生产环境已经搭建好了,每次服务器重启,redis都会自动的启动
六、安装redis cluster
(redis cluster集群,要求至少3个master,去组成一个高可用,健壮的分布式的集群,每个master都建议至少给一个slave,3个master,3个slave)
6.1、前提,我在其它机器上启动了六个redis(安装步骤都如下)
2.2、创建三个目录:
mkdir -p /etc/redis-cluster 存放集群配置信息,自动生成配置
mkdir -p /var/log/redis redis日志
mkdir -p /var/redis/7001 存放redis的rdb文件和aof文件
6.3、将redis的utils目录下的redis_init_script脚本拷贝到linux的/etc/init.d目录中,将redis_init_script重命名为redis_7001,7001是我们希望这个redis实例监听的端口号,并修改redis_7001配置文件中的REDISPORT=7001
6.4、修改/etc/redis/7001.conf中的部分配置为生产环境
6.5、完成了一个redis环境的配置,依次再配置其余五个,分别为7002、7003、7004、7005、7006,每个启动脚本内,都修改对应的端口号
6.6、启动6个redis实例
6.7、创建集群(需要安装ruby、rubygems)
上述命令在部分机器上是可以直接运行完成,成功安装的,但在部分机器上运行第三条命令时会提示ruby版本太低、openssl找不到的问题,下面依次解决这两个问题:
6.8、再次运行gem install redis命令,报出两个错误
6.9、再次运行gem install redis命令,报出一个错误
6.10、再次运行gem install redis命令,报出一个错误
6.11、再次运行gem install redis命令
[root@ceshi01 local]# gem install redis
Successfully installed redis-4.1.1
Parsing documentation for redis-4.1.1
Done installing documentation for redis after 1 seconds
WARNING: Unable to pull data from ' https://rubygems.org/' : SSL_connect returned=1 errno=0 state=error: certificate verify failed ( https://api.rubygems.org/specs.4.8.gz )
1 gem installed
运行成功
此时Redis安装好,此三个工具也安装好了,这时我们来做一个Redis集群测试,在一台服务器中创建了6个Redis实例,开启6个Redis服务
redis-trib.rb create --replicas 1 192.168.3.104:7001 192.168.3.104:7002 192.168.3.105:7003 192.168.3.105:7004 192.168.3.106:7005 192.168.3.106:7006
[root@eshop-cache02 init.d]# redis-trib.rb create --replicas 1 192.168.3.104:7001 192.168.3.104:7002 192.168.3.105:7003 192.168.3.105:7004 192.168.3.106:7005 192.168.3.106:7006
此时一个redis集群环境就已经搭建好了,可以通过redis-trib.rb check 192.168.3.105:7003命令查看集群几点的信息
[root@eshop-cache02 init.d]# redis-trib.rb check 192.168.3.105:7004
redis cluster的优点:读写分离+高可用+多master
读写分离:每个master都有一个slave
高可用:master宕机,slave自动被切换过去
多master:横向扩容支持更大数据量