软件测试工程师面经2022-1-22
1、在linux下怎么配置一个ip地址?
配置Linux系统的IP地址的方法,主要有以下三种:
ifconfig
setup
修改网卡的配置文件
1.修改网卡的配置文件
本地网卡的配置文件为/etc/sysconfig/network-scripts/ifcfg-eth0。
直接修改网卡的配置文件,设置方法有两种:
自动获取动态IP地址
手工配置静态的IP地址
2.1 自动获取动态IP地址
也就是通过路由器的DHCP功能,使Linux主机自动获取IP地址。
设置方法如下:
使用vim编辑器打开本地网络配置文件。
修改本地网络接口的配置参数。
1
2
只需检查以下两项是否与预设设置一致即可。
ONBOOT=yes
BOOTPROTO=dhcp
1
2
第一项是确保本地网卡eth0开启。
第二项是使用dhcp,自动获取IP地址、子网掩码、网关和DNS。
然后,执行下面的命令,重启网络服务即可。
service network restart
也就是手工配置IP地址、子网掩码、网关和DNS。
设置方法如下:
vi /etc/sysconfig/network-scripts/ifcfg-eth0
修改本地网络接口配置参数
1
2
重点检查以下各项是否与预设设置一致即可完成操作
ONBOOT=yes
BOOTPROTO=none
IPADDR=192.168.1.66
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=192.168.1.1
1
2
3
4
5
6
第二项表示不使用dhcp服务,如果是手动配置静态的ip地址,BOOTPROTO的值可以为none或者static。
第三项表示设置IP地址。
第四项表示设置子网掩码。
第五项表示设置网关。
该部分的具体说明是:详细描述了在第六项中加入到DNS的配置文件中的内容
然后,执行下面的命令,重启网络服务即可。
在进行服务网络重启操作时,请注意以下事项:如果运行的是基于Linux的操作系统且采用的是虚拟化环境,则需要对虚拟机的网络适配器(网卡)进行特殊配置。具体来说,在手工配置静态IP地址的情况下,默认会将该虚拟机与主计算机隔离开。为了实现两者的通信连接需求,则必须将该虚拟机的网卡连接模式设定为桥接模式以便数据能够正常传输和交互协作
无论怎样,在网络管理中,“通过动态IP自动获取的方式”与“静态IP手动配置”的两种策略均能实现Linux设备IP地址的设置,并且其设置效果具有持久性。此外,在具备对外网络连接能力的前提下,“只要您的网络环境具备对外连接的能力”,您的Linux服务器同样能够接入外部互联网。从个人使用体验的角度出发,在满足基本需求的前提下推荐采用动态IP自动生成的方式。
总结:修改网卡的配置文件这一方式非常有效且具有极强的灵活性,在网络设备管理领域值得广泛应用于各种场景。
3.虚拟机的网络连接模式
就VMware虚拟机而言,常用的网络连接的模式有三种:
NAT模式(默认模式)
仅限于主机模式的操作方法如下:首先通过虚拟机进入系统;接着依次选择"设置"菜单下的"网络适配器"选项;然后在设备状态窗口中勾选"已连接"以及"启动时自动建立网络连接"这两个选项;最后返回到网络设置界面时需选择相应的网络通信模式。
这三种网络连接模式有一定的区别,下面逐一说明。
4.1 NAT模式
在采用NAT模式时,在虚拟机上配置IP地址应与真实服务器上的VMnet8虚拟网卡IP地址处于同一网络段内(例如:192.168.200.1),这样才能确保两者之间的通信正常。
4.2 仅主机模式
在主机模式下设置时,虚拟机的IP必须与真实机中的VMnet1虚拟网卡接口对应的网络地址处于同一网络段内(如:192.168.224.1),这样才可以确保虚拟机与真实机之间能够正常连接。
特别注意:当处于仅主机模式时,在您的家庭网络中即使连接到互联网的情况下,在此情况下您所使用的虚拟机也只能实现内网通信,并不能与外部网络建立连接。
4.3 桥接模式
在采用桥接模式的情况下,在线连接到外网的实际设备应配置相同的IP地址(包括本地网络适配器或无线网络适配器)以确保它们处于同一网络段内,并且能够实现有效的通信。
建议使用NAT或桥接模式来实现虚拟机上的Linux主机对外网的通达。不可采用"仅主机连接"方案。值得注意的是"仅主机连接"存在一定的限制其功能仅局限于局域网络内部而其余两种配置方案只要满足网络参数设置要求则可充分发挥潜力
转载于:https://blog.51cto.com/2222038/2107762
2、linux下如何查看到文件中的第二行或者第二列数据?
为了方便说明,列举几个示例文件:
cat test1.txt
1 zhangsan 15 hebei
2 lisi 17 jiangsu
3 wangwu 29 tianjin
4 zhaoliu 21 fujian
cat test2.txt
1:test001:15:hebei
2:test002:17:jiangsu
3:test003:29:tianjin
4:test004:21:fujian
方案
awk
awk自然是最容易想到的,它处理格式化的文本得心应手。
awk '{print $2}' test1.txt
zhangsan
lisi
wangwu
zhaoliu
使用-F指定列(字段)分隔符。
awk -F ":" '{print $2}' test2.txt
test001
test002
test003
test004
如果文件只有两列,还可以使用NF,如awk '{print NF}' test1.txt。
awk还支持一些函数,同样可以将第二列提取出来,此处不再赘述。
cut
cut命令的默认字段分隔符是TAB,可以使用-d重新指定。 -f列出指定字段。
cut -d " " -f 2 test1.txt
zhangsan
lisi
wangwu
zhaoliu
cut -d ":" -f 2 test2.txt
test001
test002
test003
test004
当该列中的字符起始位置和结束位置是固定的数值时(例如test2.txt文件),可以用--c参数提取指定范围内的字符串。
cut -c 3-9 test2.txt
test001
test002
test003
test004
sed
sed采用的是第二种实现方式,即将其它列删除掉,利用后向引用:
sed "s/[ ]* []∗[]∗ [^ ]* [^ ]*/\1/g" test1.txt
zhangsan
lisi
wangwu
zhaoliu
sed "s/[:]:[:]∗[:]∗:[:]*:[:]/\1/g" test2.txt
test001
test002
test003
test004
grep
在文件test1.txt中,在第二列前后分别带有数字空格。因此可以通过正则表达式提取出这些内容。
grep -oP "(?<=[0-9] )[^ ]+(?= [0-9])" test1.txt
zhangsan
lisi
wangwu
zhaoliu
同理:
grep -oP "(?<=[0-9]:)[^:]+(?=:[0-9])" test2.txt
test001
test002
test003
test004
colrm
colrm命令具有删除标准输入指定列的功能;然而,在该命令中所定义的列仅指单个字符;这与常规对字段定义的方式存在差异;需要注意。
格式如下:
colrm [start [stop]]
若仅设置一个起始位置参数 start,则所有不小于 start 的列会被移除;若同时设置了起始位置参数 start 和结束位置参数 stop,则所有位于不小于 start 且不大于 stop 之间的列会被移除。
因此,此命令可处理第二个字段起始位置为固定值的test2.txt文件。
cat test2.txt | colrm 1 2 | colrm 8
test001
test002
test003
test004
read
read读取文件中的每行,将特定的列输出来。
while read a b c d ;do echo $b;done < test1.txt
zhangsan
lisi
wangwu
zhaoliu
IFS=":";while read a b c d ;do echo $b;done < test2.txt
test001
test002
test003
test004
shell命令替换
shell支持命令替换,通过两次命令替换,得到第二列:
while read line;do temp1={line#* };temp2={temp1%% *};echo $temp2; done < test1.txt
zhangsan
lisi
wangwu
zhaoliu
while read line;do temp1={line#*:};temp2={temp1%%:*};echo $temp2; done < test2.txt
test001
test002
test003
test004
--------------------------------------------------------------------------------------------
3、python分隔字符串?
Python中有split()和os.path.split()两个函数,具体作用如下:
split方法:用于将输入文本按特定字符划分。通过使用特定字符作为分割依据,并返回结果数组。
os.path.split():按照路径将文件名和路径分割开
1、split()函数
语法:str.split(str="",num=string.count(str))n
参数说明:
str: 用作分隔符,默认以空格为分隔符,但不允许为空字符串 (""). 当字符串中不存在分隔符时,则将整个字符串视为列表中的一个元素。
其中num代表分割的次数。当参数num存在时,则会将输入分成 num+1 个子字符串,并将每个子字符串分别赋予新变量
注意:当使用空格作为分隔符时,对于中间为空的项会自动忽略
2、os.path.split()函数
语法:os.path.split("PATH")
参数说明:
1.PATH指一个文件的全路径作为参数:
2.如果给出的是一个目录和文件名,则输出路径和文件名
3.如果给出的是一个目录名,则输出路径和为空文件名
分离字符串
string = "www.gziscas.com.cn"
1.以"."为分隔符
print(string.split("."))
["www", "gziscas", "com", "cn"]
2.分割两次
print(string.split(".",2))
["www", "gziscas", "com.cn"]
3.分割两次,并取序列为1的项
print(string.split(".",2)[1])
gziscas
4.分割两次,并把分割后的三个部分保存到三个文件
u1, u2, u3 =string.split(".",2)
print(u1)—— www
print(u2)—— gziscas
print(u3) ——com.cn
分离文件名和路径
import os
print(os.path.split("/dodo/soft/python/"))
("/dodo/soft/python", "")
print(os.path.split("/dodo/soft/python"))
("/dodo/soft", "python")
4、linux怎么抓包?
通常情况下,我们的系统会被部署在Linux操作系统上。当需要定位问题时,通常需要检查各系统间的数据报文传输情况。接下来,我将向大家介绍如何利用tcpdump工具进行抓包操作。
该程序为Linux系统上的一款开源抓包工具,并与Windows平台上的wireshark抓包工具相仿,在功能上具有相似性。它能够捕获特定网络接口上的数据流量,并根据需求设置目标地址、源地址、端口和协议等参数。
1、安装tcpdump
yum install -y tcpdump
2、常见的使用方法
tcpdump -i eth2 host 192.168.1.2 -w xx.pcap
tcpdump -i eth2 dst host 192.168.1.2 -w xx.pcap
# tcpdump -i eth1 src port 25 -w xx.pcap
# tcpdump -i eth1 dst port 25 -w xx.pcap
5、tcp和udp的区别?
6、python中循环?
Python 循环语句 | 菜鸟教程
7、python的断言?
一、通过Python自带的Assert断言
ts用于捕获或提取提示框的元素信息。
print(ts.text) #打印提示内容
self.assertIn("保存成功", ts.text, msg='保存失败') #该方法用于检查ts.text中是否包含'保存成功'字符串,并设置错误信息为'保存失败'
#若ts.text包含'保存成功'则测试通过;否则标记为失败
return {'状态': 'success'} if '保存成功' in ts.text else {'状态': 'error', '错误提示': 'save error'}
二、通过if进行断言判断
ts = driver.find_element_by_class_name("ivu-modal-content")
print(ts.text)
if '保存成功' in ts.text: #如果‘保存成功’在提示内容中包含
print('Assertion test pass.')
else:
print('Assertion test fail.')
三、通过try抛出异常进行断言判断
ts = driver.find_element_by_class_name("ivu-modal-content")
print(ts.text)
try:
assert '保存成功' in ts.text
print('Assertion test pass.')
except Exception as e:
print('Assertion test fail.', format(e))
8、比如说我的网段是192.168.1.1,现在要配置另一个网段怎么弄?
9、你们平时遵循什么步骤来执行测试流程?
10、pytest 是一种强大的自动化测试框架吗?
同unittest
11、python的库有哪些?
12、请问是否需要使用Selenium和Appium工具?
13、能否告知您是否会查看请求的报文?
通过HTTP报文查询流程进行数据传输分析。例如,在浏览器中输入 www.baidu.com 进行访问。启动Google浏览器窗口后,请依次执行以下操作:按下快捷键F12(或Ctrl + Shift + L),随后在弹出的网络选项卡中选择要查看的具体文档(如Doc)。
使用Postman全面解析HTTP事务
