参考资料:
testin云测 https://www.testin.cn
接口自动化测试平台:http://120.79.232.23
星云测试 http://www.threadingtest.com
腾讯云测 http://wetest.qq.com
阿里云测 http://mqc.aliyun.com
51testing社区: http://www.51testing.com/html/
testhome社区: https://testerhome.com/topics/
霍格沃兹测试学院
http://www.dragontesting.cn
https://viptest.net
http://www.primeton.com/products/uc/overview.php

Appium+Python3+iOS真机环境搭建
Appium+IOS+Java真机自动化环境搭建配置
Selenium Grid/zalenium+robotium
selenium+testng/unitest/pytest

##可视化测试系统
demo: http://47.100.231.216:8083/atnest/
用户名:user
密码: user

Allure--自动化测试报告生成
https://github.com/allure-framework/allure2/releases
自动化测试--实现一套完全解耦的测试框架(三)

https://opensource.zalando.com/zalenium/#usage
sonarqube+jenkins实现持续CodeReview

Java+Testng+Maven+Jenkins+ExtentReports+Retrofit2+Git
自动化、极速、稳定
www.importnew.com/14508.html
http://www.dragontesting.cn/index.html

项目管理、接口管理、用例管理、测试报告、任务设置
https://www.xuebuyuan.com/763996.html
https://testerhome.com/opensource_projects/37


###git项目
https://github.com/liuweijw/fw-cloud-framework
https://github.com/ZhuBaker/Tracing
蚂蚁金服自动化测试框架 SOFAActs 原理和使用
https://github.com/sofastack/sofa-acts

##自动化测试
https://git.bxd365.com/laoliang/autotestclient.git
##
http://itindex.net/detail/58083-%E6%80%A7%E8%83%BD-%E6%B5%8B%E8%AF%95

############自动化测试开发服务器地址:
192.168.1.81
root
xiangju123456

##jenkins发布机##
http://192.168.1.81:9090
jenkins_admin


###luckyframe测试环境地址:192.168.1.117
root
abcd.1234A117
Maven 3.5.4+idea


###MAT云真机地址
http://192.168.1.81:8080/

##stf原生群控地址:
http://192.168.1.81:7100/

##HttprunnerManager系统地址:
http://192.168.1.81/api/register/
用户名:maxtian
密码: tianyi

https://github.com/HttpRunner/HttpRunnerManager


接口测试jmeterweb化地址:
http://ownerworld.tpddns.cn:8089/#/home
账号:zgq346712481

###testin云测平台
https://www.testin.cn/realmachine/index.htm
calfonlyone@foxmail.com


##docker官方账号
zgqdocker123456
12列shfit12列

docker镜像迁移
nohup docker save test_init_img | gzip > /home/xiangju/soft_three/open-MAT-test_img201904.tar.gz 2>&1 &
https://www.jianshu.com/p/64becdd8927c
###############################
Hadoop(hdfs+hbase+MapReduce+hive)

兼容测试的原理,遍历跑业务脚本到批量真机驱动APP进行业务操作,然后收集监控日志分析,输出测试报告
#############如何通过 Docker 快速构建 Appium 开发环境
###
1 添加用户

adduser xiangju
passwd xiangju

**cabuxj123

whereis sudoers
ls -l /etc/sudoers

chmod -v u+wrx /etc/sudoers


vi /etc/sudoers
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
xiangju ALL=(ALL) ALL


centos7中没有安装ifconfig命令的解决方法
yum install net-tools.x86_64

二 部署docker
https://www.runoob.com/docker/centos-docker-install.html

sudo usermod -aG docker your-user

$ sudo docker run hello-world
docker ps
https://www.runoob.com/docker/docker-hello-world.html
###使用docker部署STF服务(CentOS环境)
一、安装docker环境
https://hub.docker.com/r/appium/appium
sudo service docker restart
1 docker中启动所有的容器命令
docker start $(docker ps -a | awk '{ print $1}' | tail -n +2);

docker restart nginx

2 docker中关闭所有的容器命令
docker stop $(docker ps -a | awk '{ print $1}' | tail -n +2);

3 docker中删除所有的容器命令
docker rm $(docker ps -a | awk '{ print $1}' | tail -n +2);

docker rm fb087642b497(镜像ID)


4 docker中删除所有的镜像
docker rmi $(docker images | awk '{print $3}' |tail -n +2);
su root # 先切换到root用户, 再执行以下命令
systemctl enable docker # 开机自动启动docker

systemctl start docker # 启动docker
systemctl restart docker # 重启dokcer

查看日志
docker logs -f 容器名

Docker 容器镜像删除
1.停止所有的container,这样才能够删除其中的images:
docker stop $(docker ps -a -q)

如果想要删除所有container的话再加一个指令:
docker rm $(docker ps -a -q)

2.查看当前有些什么images
docker images

3.删除images,通过image的id来指定删除谁
docker rmi <image id>

想要删除untagged images,也就是那些id为<None>的image的话可以用
docker rmi $(docker images | grep "^<none>" | awk "{print $3}")

要删除全部image的话
docker rmi $(docker images -q)

更新软件
sudo yum update

执行安装
sudo yum install docker

查看docker镜像
sudo docker images
docker pull muicoder/appium


//(1)启动镜像并运行命令
sudo docker run centos echo 'hello word'
//(2)启动交互式终端
docker run --name=bxp02 -i -t centos /bin/bash

##进入指定的容器--根据服务关键字过滤
sudo docker exec -it `(docker ps -a|grep help|sed -n "1, 1p"| awk '{print $1}')` /bin/bash

1 docker start 容器名 启动某个容器
2 docker stop 容器名 停止某个容器
3 docker rm 容器名 删除某个容器

二、拉取相关镜像

STF镜像
sudo docker pull openstf/stf:latest

Android adb镜像
sudo docker pull sorccu/adb:latest

rethinkdb镜像
sudo docker pull rethinkdb:latest

ambassador镜像
sudo docker pull openstf/ambassador:latest

nginx代理镜像
sudo docker pull nginx:latest


三、创建容器实例
在CentOS7中运行docker容器,挂载的本地目录在容器中没有执行权限,原因是CentOS7中的安全模块selinux禁用了相关权限。
关闭selinux
su -c "setenforce 0"
启动容器

启动rethinkdb数据库
sudo docker run -d --name rethinkdb -v /srv/rethinkdb:/data --net host rethinkdb rethinkdb --bind all --cache-size 8192 --http-port 8090

启动adb service ##把docker adb服务设备挂载目录--映射到宿主机的挂载设备目录--插上USB设备(手机)
sudo docker run -d --name adbd --privileged -v /dev/bus/usb:/dev/bus/usb --net host sorccu/adb:latest

启动stf(最后的ip地址参数为本机的局域网ip地址)
sudo docker run -d --name stf --net host openstf/stf stf local --public-ip 192.168.1.81

##abd远程连接无线设备
sudo docker run -d --name stf --net host openstf/stf stf local --public-ip 192.168.1.81 --adb-host 192.168.10.135 --adb-port 5037 --allow-remote


查看启动的docker容器
sudo docker ps -a
四、关闭防火墙 查看stf服务

关闭系统防火墙
systemctl stop firewalld.service

打开浏览器输入:http://192.168.1.81:8090/ 访问rethinkdb数据库
对象数据库查询
使用示例: Data Explorer 在线查询工具

0.列出所有的数据库
r.dbList()

1.列出数据库rethinkdb下所有表
r.db('rethinkdb').tableList()

2.列出jobs表下面的内容
r.db('rethinkdb').table('jobs')


打开浏览器输入:http://192.168.1.81:7100 访问stf服务

####http://192.168.1.81:7100/auth/mock/
stftest
346712481@qq.com

作者:与你若只如初见v
链接:https://www.jianshu.com/p/10bdf33d2c64
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
###########################

###docker appium环境搭建


Docker Appium 配置

docker pull appium/appium:1.9.1-p0
docker pull appium/appium-emulator:1.1-arsenal
docker run --privileged -d -p 4723:4723 -v /dev/bus/usb:/dev/bus/usb --name appium-1.9.1-p0 appium/appium:1.9.1-p0

 

#####基于docker实现APP和WEB自动化测试分布式并发执行脚本
####docker+selenium grid+python实现分布式自动化测试

docker run -p 5556:4446 -d --name hub selenium/hub

docker run -d -p 5901:5901 --link hub:hub selenium/node-chrome-debug


使用APPium+Robotframework框架实现一台电脑连接多台安卓设备自动化测试


###stf二次开发
1 修改登录页logo
/usr/local/node/node-v8.11.2-linux-x64/lib/node_modules/stf/res/common/logo
2 修改设备页logo
http://192.168.10.135:7100/static/app/build/e831b7164c8a65b849691bff62cdb160.png
/usr/local/node/node-v8.11.2-linux-x64/lib/node_modules/stf/res/build

3/usr/local/lib/node_modules/stf/lib/units/device/plugins/screen/stream.js

docker下修改
/app/lib/units/device/plugins/screen
80--50
/app/lib/cli/device/index.js
/app/lib/cli/provider/index.js
cat /app/lib/cli/provider/index.js|grep 50

/app/node_modules/eventemitter3/index.js

 

####项目介绍
功能
系统支持
支持Android版本2.3.3 (SDK10) 到7.1 (SDK25))
支持Wear 5.1
无需root


Web浏览器管理设备
屏幕操作和显示(30-40fps)
支持PC机键盘输入到远程的设备(复制粘贴)
支持多点触控操作远程设备
支持adb connnect远程连接调试
拖拽安装APK
远程设备提供
设备信息的展示(如:网络状态,MIME,android版本,手机型号等等)
远程开关机,远程开关WIFI,截屏,LogCat等等
执行Shell命令
设备文件管理

主要依赖
Node.js >= 4.2 (latest stable version preferred)
ADB properly set up
RethinkDB >= 2.2
GraphicsMagick (for resizing screenshots)
ZeroMQ libraries installed
Protocol Buffers libraries installed
yasm installed (for compiling embedded libjpeg-turbo)
pkg-config so that Node.js can find the libraries
平台语言

页面html使用Pug模版引擎
前端使用的是Angularjs
后端使用的是Nodejs
数据库使用的是对象型数据库Rethinkdb

Rethinkdb
Rethinkdb 属于对象型数据库,使用的是json字符串格式保存数据。
目录详解
/.tx #集成翻译平台Transifex的相关配置,用于语言翻译
/bin #启动文件,调用的是lib/cli.js
/docker #Docker的相关配置
/lib #后端
/res #前端
/doc #文档说明,包含VNC,部署,API
/test #状态检测
/vendor #安装到手机上的应用和服务,包括minirev,minitouch,STFService


前端res

主要为Service服务和View页面两大部分

/app #前端web
- /components/stf #服务组件,用于与后端通讯
- /control-panes #页面,设备控制
- /device-list #页面,设备列表
- /docs #页面,帮助
- /layout #页面,布局
- /menu #页面,菜单
- /setting #页面,设置
- /terminal #页面,终端样式
- /user #页面,用户,暂未完成
- /views #页面,主视图
/auth #登录认证
- /ladp #页面,LADP认证
- /mock #页面,默认验证
/common #其他
- /lang #语言包
- /logo #页面,图标
- /status #页面,脚本
/test #登录,跳转
/web_modules #样式

后端lib
/db #数据操作相关文件
/units #核心代码,用于功能实现
- /api #主要的RESTful APIs
- /app #提供主要HTTP服务,处理所有静态资源,包括图片,脚本和样式表
- /auth #授权验证,Mock auth,OAuth 2.0,LDAP,SAML 2.0
- /device #设备功能的具体实现.设备端底包,服务和STFservice.apk的安装
- /log #将设备事件log存储至数据库
- /notify #用于推送通知或到你的环境
- /pooxy #数据库代理相关
- /processer #设备和app之间的桥,几乎所有通讯都经过它
- /provider #设备提供和发收命令
- /reaper #接收心跳,处理设备异常断连
- /storage #截图,图像存储和调整,操作apk
- /triproxy #用于接受和处理来自app和设备端的请求
- /websocket #用于客户端js和服务端(ZeroMQ,Protobuf )的通讯,所有action均由此发送
/util #内部方法
/wire #队列,路由,流相关方法
##########################################################

docker restart adbd #开启容器内的adb
docker rm CONTAINER ID
sudo docker run -d --name adbd --privileged -v /dev/bus/usb:/dev/bus/usb --net host sorccu/adb:latest
docker exec -it CONTAINER ID /bin/sh


docker restart hub
docker restart stf
docker restart rethinkdb
docker restart new_appium1

docker logs -f 容器名 #查看日志
docker exec -it `(docker ps -a|grep help|sed -n "1, 1p"| awk '{print $1}')` /bin/bash
docker exec -it CONTAINER ID /bin/bash
docker exec -it CONTAINER ID /bin/sh
docker ps -a #查看当前运行的容器

 

########stf--adb远程无线连接设备
http://192.168.10.135:7100/#!/control/192.168.10.236:5554
##error: could not install *smartsocket* listener: Address already in use
adb kill-server 杀掉宿主机的adb服务端口 (docker sorccu/adb与宿主机只能运行其中一个)
lsof -i tcp:5037

docker exec -it 42624571f8e6 /bin/sh 进入容器
adb tcpip 5555 开启无线端口
adb connect 192.168.10.115:5555 ## 服务器adb 连接无线设备IP+端口
adb connect命令连接多个Android设备

adb shell 进入手机的控制终端,相当于原生的Linux系统的各种操作。
  当提示符为$符号,说明未获得超级管理员权限,输入su,可编程#
  adb kill-server
  adb start-server
  adb push /data/data/123.txt D:\ 复制文件到d盘目录adb
lsof -n -i4TCP:5037 | grep LISTEN
kill -9 <PID>

adbkit abd无线连接
STF中ADB connect的使用
安装nodejs
推荐使用nvm安装
安装adbkit
$ npm i -g adbkit
启动usb转tcp服务
$ adbkit usb-device-to-tcp -p $port $serial
再另一台装有adb的机器上进行设备的连接
假设启动adbkit服务的机器ip是10.0.0.1 端口是15555
$ adb connect 10.0.0.1:15555

STF 远程控制大量 Android 设备
ADB连接手机的两种方式(usb数据线连接和wifi连接)
通过adb连接到Docker容器中的USB Android设备

如何通过 Docker 快速构建 Appium 开发环境?

https://jingyan.baidu.com/article/ce436649379e0a3772afd354.html
###docker制作镜像,然后导出,上传远程服务器,然后再导入运行
docker save eb40dcf64078> /root/mydjango-save-1016.tar 将镜像保存为本地文件,其中eb40dcf64078为image id

使用load方法加载刚才上传的tar文件
docker load < /root/mydjango-save-1016.tar

 

#查看容器
docker ps -a|grep help
#进入容器
docker exec -it 1113a9057304 /bin/bash

##进入指定的容器--根据服务关键字过滤
docker exec -it `(docker ps -a|grep help|sed -n "1, 1p"| awk '{print $1}')` /bin/bash
docker exec -it `docker ps -a|grep help|sed -n "1, 1p"| awk '{print $1}'` /bin/bash
##查看php服务
ps -ef|grep php

 

docker ps -a|grep help|awk -f {}

docker ps -a|grep help|sed -n "1, 1p"| awk '{print $1}'

docker exec -it |docker ps -a|grep help|sed -n "1, 1p"| awk '{print $1}'|/bin/bash

docker exec -it < `docker ps -a|grep help|sed -n "1, 1p"| awk '{print $1}'` /bin/bash

docker exec -it | (docker ps -a|grep help|sed -n "1, 1p"| awk '{print $1}') /bin/bash

docker rm `docker ps -a | grep Exited | awk'{print $1}'` 删除异常退出的容器

docker exec -it `(docker ps -a|grep help|sed -n "1, 1p"| awk '{print $1}')` /bin/bash

docker ps -q --no-trunc --filter name=^/foo$

docker ps -q --no-trunc --filter name=^rest-helper.beta$