首页 文章 精选 留言 我的

精选列表

搜索[网站开发],共10000篇文章
优秀的个人博客,低调大师

测试开发之系统篇-Docker常用操作

Docker容器(Container)的运行基于镜像(image),您可以在Docker Hub上检索,或通过Dockerfile文件自己构建镜像。 首先拉取MySQL官方镜像的最新版(latest)。 docker pull mysql 使用docker images显示本地的镜像 docker images 使用docker run命令来运行容器,-d设置在后台运行,并返回容器ID。 docker run -itd --name db-server -e MYSQL_ROOT_PASSWORD=P2ssw0rd mysql 使用docker ps查看正在运行的镜像,-a参数显示所有实例。 docker ps -a 使用docker exec命令,可进入容器内部系统的Shell。 docker exec -it db-server /bin/bash 在容器内完成相应操作/修改后,commit命令可提交更新到指定的镜像。 docker commit -m "update" -a "aaron" db-server registry.cn-shanghai.aliyuncs.com/aaron-share/db-server 更新本地镜像到镜像管理服务器,此处先完成了到阿里云镜像服务器的登录。 docker login --username=18626200000 registry.cn-shanghai.aliyuncs.com docker push registry.cn-shanghai.aliyuncs.com/aaron-share/db-server:latest 以下命令分别删除容器和镜像,-f可强制删除运行中的容器。 docker rm -f db-server docker rmi registry.cn-shanghai.aliyuncs.com/aaron-share/db-server 下面,我们简单介绍下,如何使用Dockerfile来构建镜像。以下Dockerfile以官方ubuntu系统镜像为起点,完成了一个简单的示例。 FROM ubuntu:latest # 基准镜像 MAINTAINER aaron # 作者信息 ARG APT=apt-get # 临时变量,构建容器时有效 RUN $APT update \ # 构建容器时执行的命令 && $APT install -y curl \ && rm -rf /var/lib/apt/lists/* CMD [ "curl", "-s", "http://baidu.com" ] # 运行容器时执行的命令 然后,就可以使用docker build命令来构建镜像。 docker build -t registry.cn-shanghai.aliyuncs.com/aaron-share/ubuntu-server:latest . 软件测试中,我们通常使用预制好的、不同环境的Docker镜像,来进行相应的测试。 可以使用上述的docker exec命令进入容器,执行测试命令;也可以直接在宿主机上执行docker run来执行测试。 docker run -i --rm \ --name testng-in-docker -v "$(pwd)":/usr/src/mymaven -v ~/.m2:/root/.m2 -w /usr/src/mymaven maven:latest mvn clean test 以上使用了Java常见的Maven构建工具来执行测试,-v表示从宿主机到容器的路径映射,它 通过$(pwd)命令获取当前项目路径,并映射到了容器内部的/usr/src/mymaven目录; 将Maven类库的根目录~/.m2,映射到了容器内部的/usr/src/mymaven目录; 拉取、运行名为maven的容器镜像的latest版本; 容器启动时,立即运行mvn clean test命令执行测试; 运行结束后容器直接退出,测试结果位于当前路径下。 另外,Docker Compose是一个用于定义和运行多容器的工具,如果您的服务包括了多个相互依赖的容器,可以使用他来编排、启动所有服务。详情可以参考这篇文章。 本人在开源项目中,实现了基于Docker容器的按需测试环境管理,详情请参照网址https://github.com/easysoft/zagent。

优秀的个人博客,低调大师

测试开发之系统篇-常用系统命令

以下介绍测试工作中常用的一些命令。未专门标注的,为Linux和Mac系统下的。 查看占用端口的进程 Linux aaron@ubuntu:~$ lsof -i :8085 | grep LISTEN ___server 69080 aaron 11u IPv6 0x5624b7cdebdb6b7b 0t0 TCP *:8085 (LISTEN) Windows C:>netstat -aon | findstr :80 | findstr LISTENING TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 2588 TCP [::]:80 [::]:0 LISTENING 2588 杀死进程 Linux aaron@ubuntu:~$ kill -9 69080 Windows PS C:\WINDOWS\system32> taskkill /F /PID 8152 SUCCESS: The process with PID 8152 has been terminated. Windows下权限不足的,可右击开始按钮,用管理员模式启动PowerShell。 按名称查看进程 aaron@ubuntu:~$ ps -ef | grep nginx | grep -v grep root 21471 1 0 2020 ? 00:00:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; www-data 21472 21471 0 2020 ? 00:07:55 nginx: worker process 使用grep -v grep过滤掉该查看进程本身。 命令行管道 aaron@ubuntu:~$ ps -ef | grep nginx | grep -v grep | awk '{print $2}' | xargs kill -9 此处使用管道,杀掉名为nginx的进程。 使用|管道符,将命令的标准输出传递为下一个命令的标准输入; 使用awk打印所捕获行的第2列,列按空格或Tab符号进行分割; 使用xargs,将上个命令的标准输出转换成下一个命令的参数。 后台运行服务 aaron@ubuntu:~$ nohup appium -p %d --default-capabilities '{"udid":"sn"}' > appium.log 2>&1 & 后台为指定串号sn的手机运行appium服务。 修改文件 查找zd.conf文件中,以“Version”开头的行,替换为“Version = 2.0”。 Linux sed -i "s/Version.*/Version = 2.0/" zd.conf Mac gsed -i "s/Version.*/Version = 2.0/" zd.conf 复制目录到远程 scp -r bin/utl-server/0.8/linux/utl-server 139.224.8.129:~ 实时查看文件内容 aaron@ubuntu:~$ tail -f jmeter.log 2021-04-25 15:11:51,723 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for text/xml is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser 2021-04-25 15:11:51,723 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for text/vnd.wap.wml is org.apache.jmeter.protocol.http.parser.RegexpHTMLParser 2021-04-25 15:11:51,723 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for text/css is org.apache.jmeter.protocol.http.parser.CssParser 2021-04-25 15:11:51,789 INFO o.a.j.s.SampleResult: Note: Sample TimeStamps are START times 2021-04-25 15:11:51,789 INFO o.a.j.s.SampleResult: sampleresult.default.encoding is set to ISO-8859-1 2021-04-25 15:11:51,789 INFO o.a.j.s.SampleResult: sampleresult.useNanoTime=true 查看正在运行的服务 aaron@ngtesting-lab:~$ systemctl | grep apparmor apparmor.service. loaded active exited LSB: AppArmor initialization 查看服务状态 aaron@ubuntu:~$ service apparmor status ● apparmor.service - LSB: AppArmor initialization Loaded: loaded (/etc/init.d/apparmor; bad; vendor preset: enabled) Active: active (exited) since Fri 2021-05-28 09:42:26 CST; 18s ago Docs: man:systemd-sysv-generator(8) Process: 19969 ExecStop=/etc/init.d/apparmor stop (code=exited, status=0/SUCCESS) Process: 20185 ExecStart=/etc/init.d/apparmor start (code=exited, status=0/SUCCESS) 重启服务 aaron@ubuntu:~$ sudo service apparmor restart 查看内存状况 aaron@ubuntu:~$ free -h total used free shared buff/cache available Mem: 7.8G 2.3G 931M 40M 4.6G 5.2G Swap: 0B 0B 0B 查看磁盘状况 aaron@ubuntu:~/ df -h Filesystem Size Used Avail Use% Mounted on udev 3.9G 0 3.9G 0% /dev tmpfs 799M 3.4M 795M 1% /run /dev/vda1 40G 33G 4.8G 88% / tmpfs 3.9G 8.0K 3.9G 1% /dev/shm tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup tmpfs 799M 0 799M 0% /run/user/1000 监控系统状况 aaron@ubuntu:~$ top top - 09:29:37 up 378 days, 16:35, 1 user, load average: 0.00, 0.00, 0.00 Tasks: 146 total, 1 running, 145 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.2 us, 0.1 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 8174708 total, 953320 free, 2365784 used, 4855604 buff/cache KiB Swap: 0 total, 0 free, 0 used. 5426472 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 14459 root 10 -10 135204 17124 14024 S 0.7 0.2 2:52.83 AliYunDun 956 root 20 0 2428132 92556 16208 S 0.3 1.1 2690:07 java 3217 999 20 0 90232 7264 3296 S 0.3 0.1 308:04.26 redis-server Windows系统下,右击任务栏选择任务管理器。

优秀的个人博客,低调大师

RubyMine 2021.1.3 发布,流行的 Ruby 开发工具

RubyMine 2021.1.3 现已发布,本次更新包括一些新功能和错误修复。 主要更新内容 修复了 Ruby heredoc 中语法高亮显示的问题 修复了 Rubocop 返回错误的问题 修复了几个 UI 冻结背后的问题 修复了无限索引问题 修复了 Ctrl+Shift+箭头键对文本选择的作用 修复了在快速文档中尝试显示 jpg、png 和 svg 图像时发生的错误 IDE 不再显示来自禁用插件的更新通知 修复了 “与分支比较” 对话框意外关闭的问题 修复了动态插件卸载和加载后丢失设置的问题 不再设置临时配置限制 ComponentPopupBuilder#adText 不再显示 IDE在启动时重置 Windows 文件管理器的最近文件列表 详情请查看更新公告。

优秀的个人博客,低调大师

测试开发之网络篇-常用服务协议

协议,是网络协议的简称,网络协议是通信计算机双方必须共同遵从的一组约定。如怎么样建立连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能相互通信交流。它的三要素是:语法、语义、时序。 (1)语法:即数据与控制信息的结构或格式; (2)语义:即需要发出何种控制信息,完成何种动作以及做出何种响应; (3)时序(同步),即事件实现顺序的详细说明。 TCP/IP TCP/IP协议是当今互联网所采用的协议。它不仅包含TCP、IP两个部分,而是由FTP、SMTP、TCP、UDP、IP等协议构成的一个协议簇。TCP/IP协议的第4层-网络层,负责创建主机间的网络连接,以及完成基于IP的寻址和转发功能。 DNS DNS(Domain Name System,域名系统)是一项域名解析服务。它将域名解析成IP地址,以方便大家使用容易记忆的英文字母,来访问互联网。以下示例完成了一次解析,通过ping域名,我们可以得到其IP地址。 本地域名解析 除了借助DNS,当我们通过域名访问内部服务器时,可使用本地的HOSTS文件来完成域名解析,注意这个过程是优先于DNS的。 Windows下文件为C:\WINDOWS\system32\drivers\etc\hosts,Linux下在/etc/hosts,以下给出一个示例。 DHCP DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)用于给局域网中的主机动态分配可用的IP地址。在Windows下,使用ipconfig命令,可以查看本机所分配的IP地址,Linux下请使用ifconfig代替。 此处显示了两个IP地址: lo0 127.0.0.1 是用于本机内部通讯的环回地址。它是一个每台机器都相同、永远有效的虚拟机本地IP地址; en0 192.168.0.100 是DHCP服务器为第一块以太网卡分配的动态IP地址。机器关机后,DHCP会为该机器(网卡)保留此地址一段时间。 HTTP/HTTPS HTTP(HyperText Transfer Protocol,超文本传输协议)是互联网上使用最为广泛的一种协议。您正在使用浏览器阅读的这篇文章,就是使用该协议传输的。HTTPS则是在其基础上,实现了加密。 HTTP/HTTPS是一个无连接、无状态的应用层协议。也就是说,浏览器通过它向服务器发出请求获取响应后,连接就被关闭了。浏览器和服务器间,采用了一个叫做Session(会话)的机制,使得下一个请求过来时,服务器依然知道访问者是谁。服务端识别Session的方法,通常是用请求URL或Header中携带的一个唯一标识(如jsessionid、bearer token、cookie)来起作用的。后续在介绍接口测试时,我们会进一步进行阐述。 WebSocket WebSocket在客户端和服务器之间建立持久性的连接,允许服务端主动向客户端推送数据,以实现实时的双向数据传输。它解决了以往使用HTTP协议时,只能单项拉数据,或使用HTTP模拟长连接时,Long Polling资源消耗过大的问题。 WebSocket是应用层协议,是TCP/IP协议的子集,它在连接时通过HTTP协议完成握手。 RPC RPC(Remote Procedure Call Protocol,远程过程调用协议)多用于当下流行的微服务架构中,方便一台计算机直接调用另一台上的程序,而不需要了解底层的网络技术/协议。RPC可以基于HTTP(应用层)协议,也可以直接在TCP(传输层)协议上实现

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册