测试开发知识点整理(五)

Linux命令和Python自动化

    • Linux系统
      • 249、 Linux入门教程
      • 250、 Linux命令大全
      • 251、 查看当前的路径是啥?
      • 252、 查看当前路径下面的所有文件详细列表?
      • 253、 创建downloads目录
      • 254、 进入到downloads目录(掌握)
      • 255、 回到父目录
      • 256、 回到父目录的父目录
      • 257、 查找(搜索)文件(掌握)
      • 258、 切换到根目录(顶层目录)下面?
      • 259、 在根目录(/)下面查找出文件名为hosts的所有文件
      • 260、 移动目录或文件(掌握)
      • 261、 重命名目录或文件(掌握)
      • 262、 复制文件(掌握)
      • 263、 删除目录或文件(掌握)
      • 264、 查看磁盘空间
      • 265、 查看服务器的性能情况(cpu,内存占用情况以及磁盘读写)
      • 266、 tar命令
      • 267、 检查tomcat有没有被启动(掌握)
      • 268、 把这个tomcat进程停掉
      • 269、 查看8080端口号没有有被占用(掌握)
      • 270、 查看tomcat的启动有没有完成?
      • 271、 查看命令的使用方法
      • 272、 设置文件权限(掌握)
      • 273、 查看系统版本
      • 274、 检查网络连接是否正常(掌握)
      • 275、 查看端口的占用情况(掌握)
      • 276、 查看所有的进程(掌握)
      • 277、 杀进程
      • 278、 查看IP地址(掌握)
      • 279、 tomcat的启动和关闭
      • 280、 使用more命令查看日志文件
      • 281、 用来查看当前路径下的所有文件(包括隐藏文件)(掌握)
      • 282、 创建一个空文件
      • 283、 过滤
      • 284、 查看磁盘列表
      • 285、查看磁盘空间
      • 286、查看文件(夹)大小
      • 287、设置环境变量
      • 288、 环境变量生效
      • 289、查看环境变量
      • 290、 vi编辑器里面的常用命令
      • 291、 以系统管理者的身份执行指令
      • 292、 切换账号
    • Linux服务器性能监控
      • 293、 监控Linux服务器的性能
    • 虚拟机软件VMware
      • 294、 给虚拟机安装Linux系统
    • 其他
      • 295、 Linux干货分享
    • Python自动化
      • 295、 Python基础
      • 296、配置python代码编辑器
      • 297、 基础语法
      • 298、编码问题
      • 299、 标准数据类型
      • 300、布尔值和空值
      • 301、转义字符
      • 301、 变量(变量的定义和作用域)
      • 302、__name__变量
      • 303、运算符
      • 304、字符串连接
      • 305、 函数
      • 306、获取键盘输入的数据
      • 307、数据类型转换函数
      • 308、 数组(增、删、改、查)
      • 309、数组操作(合并,倒序,排序,遍历,求和,求最大值,求最小值)
      • 310、字典(遍历,添加键值对,修改键的值,获取键的值,删除键值对)
      • 311、日历,日期和时间
      • 312、 分支结构
      • 313、 循环结构(循环嵌套)
      • 314、循环控制(break, continue)
      • 315、文件读取
      • 316、 类和对象
      • 317、Python参数
      • 318、模块(python文件或包)
      • 319、pymssql框架
      • 320、pymysql框架(增、删、改、查)
      • 321、异常处理
      • 322、 requests框架
      • 323、json框架
      • 324、 unittest框架
      • 325、 selenium框架
      • 326、 爬虫(了解)

Linux系统

249、 Linux入门教程

https://www.w3cschool.cn/linux/

250、 Linux命令大全

https://www.w3cschool.cn/linux/linux-command-manual.html

251、 查看当前的路径是啥?

pwd

252、 查看当前路径下面的所有文件详细列表?

ls -l

253、 创建downloads目录

mkdir downloads

254、 进入到downloads目录(掌握)

cd downloads

255、 回到父目录

cd ..

256、 回到父目录的父目录

cd ../..

257、 查找(搜索)文件(掌握)

在当前路径(使用点号表示)下查找文件名包含test的所有文件?

258、 切换到根目录(顶层目录)下面?

cd /

259、 在根目录(/)下面查找出文件名为hosts的所有文件

260、 移动目录或文件(掌握)

将test0106这个目录移动到/home/scott/Desktop

261、 重命名目录或文件(掌握)

将test0106这个目录重命名为test20180106

262、 复制文件(掌握)

将/etc/hosts文件复制到/home/scott/Desktop里面

263、 删除目录或文件(掌握)

将/home/scott/Desktop里面的hosts备份文件删除

# rm命令
rm -f 文件名
rm -rf 目录名

264、 查看磁盘空间

df -h

265、 查看服务器的性能情况(cpu,内存占用情况以及磁盘读写)

top
# 退出查看使用q

266、 tar命令

# 把scott账号的主目录打包
cd /home/
tar -czvf scott.tar.gz scott
# 解压(解包)
tar -xzvf jdk-8u181-linux-i586.tar.gz

267、 检查tomcat有没有被启动(掌握)

ps -ef | grep tomcat
# 该指令可以查看到tomcat进程的编号(pid)

268、 把这个tomcat进程停掉

kill -9 {tomcat进程的编号}

269、 查看8080端口号没有有被占用(掌握)

netstat -an | grep 8080

270、 查看tomcat的启动有没有完成?

# 使用tail命令查看实时日志
cd /opt/tomcat8/logs
tail -f catalina.out

271、 查看命令的使用方法

比如:

man find

272、 设置文件权限(掌握)

chmod

273、 查看系统版本

uname -a

274、 检查网络连接是否正常(掌握)

ping -c {次数} {目标服务器ip地址}

275、 查看端口的占用情况(掌握)

netstat -an

276、 查看所有的进程(掌握)

ps -ef

277、 杀进程

kill -9 {进程号}

278、 查看IP地址(掌握)

ifconfig
# 类似windows命令行窗口里面的ipconfig

279、 tomcat的启动和关闭

cd /opt/tomcat8/bin
./startup.sh
./shutdown.sh

【参考】Linux下配置Tomcat为系统服务并开机自启动
https://www.linuxidc.com/Linux/2018-08/153705.htm
【参考】tomcat在linux下自启动
http://www.cnblogs.com/dragonsuc/p/6094468.html

280、 使用more命令查看日志文件

# 不要用vi打开,可能导致后台写日志失败
# more 用来查看比较大的文件(支持分屏查看,f:往后翻,b:往回翻,q:退出)
cd /opt/tomcat8/logs
more catalina.out
# cat一般用来查看小文件(内容比较少),more命令可以用来查看大文件

281、 用来查看当前路径下的所有文件(包括隐藏文件)(掌握)

ls -al

282、 创建一个空文件

比如:

touch test.sh

283、 过滤

grep

284、 查看磁盘列表

fdisk -l

285、查看磁盘空间

df  -h

286、查看文件(夹)大小

du -sh {文件(夹)名}

287、设置环境变量

export JAVA_HOME=/opt/jdk8
export PATH=$JAVA_HOME/bin:$PATH

288、 环境变量生效

source /etc/profile

289、查看环境变量

echo  $PATH

290、 vi编辑器里面的常用命令

命令模式:

序号 输入 作用
1 :w 保存不退出
2 :w! 强制保存不退出
3 :wq! 强制保存并退出
4 :wq 保存并退出
5 :q! 退出不保存
6 dd 删除光标所在的行
7 i 进入编辑模式(在当前位置插入字符)
8 Shift + i 进入编辑模式(在当前行的开始插入字符)
9 o 进入编辑模式(在当前行的下方插入内容)
10 Shift + o 进入编辑模式(在当前行的上方插入内容)
11 :set nu 显示行号
12 :set nonu 不显示行号
13 x 删除光标位置的字符(还是在命令模式)
14 Shift+r 目的:替换光标位置的字符序列(会进入到编辑模式)
15 r 目的:替换光标位置的单个字符(还是在命令模式)
16 :set ic 设置不区分大小写
17 :set noic 设置区分大小写
18 /keyword 搜索关键字(回车,查找下一个按n,查找上一个按N)
19 Shift + g 将光标移动到最后一行
20 gg 将光标移动到第一行
21 $ 将光标移动到行末
22 0 将光标移动到行首

编辑模式:

序号 输入 作用
1 Esc 回到命令模式

291、 以系统管理者的身份执行指令

sudo {指令}

【参考】xxx 不在 sudoers 文件中。此事将被报告
https://www.cnblogs.com/liuming1992/p/4882595.html

292、 切换账号

su - {账号}

Linux服务器性能监控

293、 监控Linux服务器的性能

【参考】nmon的安装及使用
https://www.cnblogs.com/mululu/p/6398483.html
【参考】一篇文章学会使用 nmon
https://www.sohu.com/a/219012698_151779

虚拟机软件VMware

294、 给虚拟机安装Linux系统

【参考】“此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态”的问题
https://www.cnblogs.com/tangbomao/p/6649051.html
【参考】vmware虚拟机NAT配置静态IP教程详解
https://m.jb51.net/article/99265.htm

其他

295、 Linux干货分享

【参考】Linux常用命令
https://mp.weixin.qq.com/s?__biz=MjM5MDg2NDk2Mw==&mid=2654485268&idx=3&sn=f7ebb026b48f1b237efce00dafe0b32a

微信扫一扫关注公众号

image.png
点击链接加入群聊
https://jq.qq.com/?_wv=1027&k=5eVEhfN
软件测试学习交流QQ群号:511619105

Python自动化

295、 Python基础

入门教程:
http://www.runoob.com/python/python-tutorial.html

296、配置python代码编辑器

1)设置python解释器的安装路径

‪D:\Python27\python.exe

2)设置编码为utf8(使用utf8编码存储py文件)

【参考】Python 中文编码
https://www.runoob.com/python/python-chinese-encoding.html

297、 基础语法

1)Python的代码语句不需要使用分号结束
2)命名的时候可以使用字母、数字和下划线,不能使用特殊字符(比如空格),也不能使用python关键字
3)命名函数的时候使用小写字母,单词和单词之间使用下划线隔开
4)缩进:单元(比如函数,循环,分支结构,python类)里面的代码语句要使用缩进(4个空格)
5)删除缩进:写好一个单元(比如函数,循环,分支结构,python类)后,按回车键,新的代码行会自动缩进,需要删除缩进
6)空行(没有缩进):函数之间使用1个空行隔开;Python脚本的最后要添加1个空行;函数定义开始和结束的地方空两行,Python类定义开始和结束的地方空两行
7)空格:运算符两边要有空格;写单行注释的时候,#后面要跟1个空格
8)逗号:分隔符,后面要有空格
9)单引号(表示单行文本)
10)双引号(表示单行文本)
11)三引号的作用(多行文本和多行注释)
12)单行注释(使用#开头)
13)多行注释(使用三引号开头,三引号结束)
14)反斜杠:表示转义;将1行代码拆成多行的时候需要使用反斜杠
15)[]表示数组的开始和结束
16)()表示元组的开始和结束
17){}表示字典的开始和结束

【参考】代码命名大小写规范(Java,Python)
https://blog.csdn.net/quiet_girl/article/details/73896791

298、编码问题

【参考】Python 字符串前面加u,r,b的含义
https://www.cnblogs.com/liangmingshen/p/9274021.html
【参考】Python中文乱码
https://www.jianshu.com/p/220ee0f219c6
【参考】UnicodeDecodeError: ‘ascii’ codec can’t decode解决
http://www.cnblogs.com/angellst/p/8783190.html

299、 标准数据类型

number(数值),str(字符串),list(列表),tuple(元组),dictionary(字典)

提问:元组和列表的区别

300、布尔值和空值

直接量 含义
True 真,比如:a = True
False 假,比如:a = False
None 空,比如:a = None

301、转义字符

转义字符 含义
\n 换行
\r 换行(回车),适用Linux系统
\t 横向制表符

301、 变量(变量的定义和作用域)

注意:Python里面定义变量不需要声明变量的类型

# 定义一个整数
a = 1
# 定义一个小数
b = 3.142
a = b
print(a)
# 定义一个文本
s = u'测试虾'
# 定义一个列表
arr = [1, 2, 3]
# 定义一个元组
x = (1, 2, 3)
# 定义一个字典,表示刘亦菲
lyf = {'empno': 1001, 'ename': u'刘亦菲', 'male': False}

302、__name__变量

【参考】python中__name__的使用
https://www.cnblogs.com/1204guo/p/7966461.html
【参考】浅析python中__name__ = ‘__main__’ 的作用
https://www.cnblogs.com/alan-babyblog/p/5147770.html

303、运算符

赋值运算符,算术运算符,逻辑运算符,比较运算符,位运算符

运算符 作用
+ 加运算;连接文本;合并数组(元组)
% 取余;连接元组里面的每个元素
and 并且,逻辑与
or 或者,逻辑或
not 逻辑非
is 比较两个对象的地址是否相同
in 源字符串是否包含指定的文本,列表里面是否包含指定的对象

304、字符串连接

1)使用逗号(会产生空格)
2)使用加号
注意:使用加号连接整数和文本的话,会发生错误
3)直接拼接(字面量)
4)使用%(连接1个或多个文本),支持不同类型的数据
5)使用format函数(连接1个或多个文本),支持连接不同类型的数据
6)使用join函数(数组或元组)

# -*- coding: UTF-8 -*-
a = 'hello'
b = 'python'
# 使用加号连接
c = a + b
# 使用逗号连接
print a, b
# 直接拼接字符串常量
# print('abc''world')
print('hello%x%X' % (90, 90))
c = 'hello{0}{1}'.format(a, b)
print(c)
a = ('abc', 'hello', '3')
b = ('python', 'test')
c = a + b
print(''.join(c))

【参考】python字符串
https://www.runoob.com/python/python-strings.html
【参考】python字符串拼接
https://www.cnblogs.com/yexuesong/p/9232349.html

305、 函数

函数的定义和调用

306、获取键盘输入的数据

Python函数 说明
raw_input 适用python2
input 适用python3
# -*- coding: UTF-8 -*-

x = raw_input('请输入x:')
y = raw_input('请输入y:')
print('{0}+{1}={2}'.format(x, y, int(x) + int(y)))

307、数据类型转换函数

Python函数 作用
int(value) 将整数格式的文本(字符串)转成整数
str(value) 将整数转成文本(字符串)

308、 数组(增、删、改、查)

arr = list([1, 5, 3])
arr.append(2)
arr.append('hello')
print(arr)
arr.remove(3)
print(arr)
# arr.sort()
# arr.reverse()
# print(arr)
#打印数组的大小
print(len(arr))

309、数组操作(合并,倒序,排序,遍历,求和,求最大值,求最小值)

# 遍历
for i in arr:
    print(i)

python函数 作用
sum(arr) 求和
max(arr) 求最大值
min(arr) 求最小值
sort(arr) 排序(从小到大)
len(arr) 计算数组的大小

310、字典(遍历,添加键值对,修改键的值,获取键的值,删除键值对)

# 遍历字典(获取所有的键和值)
for key in dict:
    print('%s:%s' % (key, dict[key]))

311、日历,日期和时间

【参考】Python 日期和时间
https://www.runoob.com/python/python-date-time.html
【参考】python中time模块的源码在哪里丫??
https://segmentfault.com/q/1010000012132002/a-1020000012133135

312、 分支结构

使用python计算个人所得税:

# 未完成

313、 循环结构(循环嵌套)

s = 0
# for i in range(0, 100, 2):
for i in range(1, 101):
    s += i
print(s)
x = list(range(5, 10))
print(x)

【参考】python2和python3中的range区别
https://www.cnblogs.com/liuchunxiao83/p/6403709.html

使用python打印乘法口诀表:

# 未完成

314、循环控制(break, continue)

315、文件读取

【参考】open函数
http://www.runoob.com/python/python-func-open.html
【参考】python读取文件时提示UnicodeDecodeError: ‘gbk’ codec can’t decode
https://www.cnblogs.com/wx2017/p/9035765.html

316、 类和对象

定义一个Python父类:

# -*- coding: UTF-8 -*-

from time import time


class Employee:
    """
    员工类
    """
    def __init__(self,empno,ename,hiredate,age=25, male=False, **kw):
        """
        构造方法
        :param empno: 工号
        :param ename: 姓名
        :param hiredate: 入职时间
        :param age: 年龄
        :param male: 性别
        :param kw: 其他属性
        """
        self.empno = empno
        self.ename = ename
        self.age = age
        self.male = male
        self.hiredate = hiredate
        self.kw = kw

    def show(self):
        print('%d,%s,%d,%s,%s,%s' %
              (self.empno, self.ename, self.age, self.male, self.hiredate, self.kw))


if __name__ == '__main__':
    zs = Employee(1001, 'zhangsan', 23, True, time())
    zs.age = 26
    zs.show()

定义一个Python子类:

from employee import Employee
from time import time


class PM(Employee):
    def __init__(self, empno, ename, hiredate, exp, bonus, age=23, male=False, **kw):
        Employee.__init__(self, empno, ename, hiredate, age, male)
        self.exp = exp
        self.bonus = bonus
        self.kw = kw

    def show(self):
        print('%d,%s,%d,%s,%s,%f,%f,%s' % (self.empno, self.ename,
                                           self.age, self.male,
                                           self.hiredate, self.exp,
                                           self.bonus, self.kw))


if __name__ == '__main__':
    wangwu = PM(1003, 'wangwu', time(), 3.0, 5000.0)
    wangwu.show()

317、Python参数

1)固定参数(必填参数,不能为空)
2)默认值参数(可以不填)
3)可变参数(可以接收多个参数,比如:*args)
4)关键字参数(可以接收多个键值对,比如:**kw)

def add(*args):
    s = 0
    for i in args:
        s += i
    return s


if __name__ == '__main__':
    print(add(1, 2, 3, 4, 5))

【参考】Python传入参数的几种方法
https://blog.csdn.net/abc_12366/article/details/79627263

318、模块(python文件或包)

导入模块的语法格式:
1)import 模块名

import employee

2)from 模块名 import 函数名

from time import time

3)from 模块名 import 类名

from employee import Employee

4)from 模块名 import *

from employee import *

5)from 包名 import 模块名

from day02 import employee

6)from 包名 import *

from day02 import *

319、pymssql框架

【参考】python连接sqlserver数据库
https://www.cnblogs.com/toheart/p/9802990.html

320、pymysql框架(增、删、改、查)

# -*- coding: UTF-8 -*-
import pymysql

# 连接数据库
conn = pymysql.connect('192.168.1.124', 'root',
                       '123456', 'weather', charset='utf8', port=3306)
# 获取游标
cursor = conn.cursor()
sql2 = "insert into emp values(1003,'测试虾','男','2019-08-26')"
cursor.execute(sql2)
conn.commit()
sql = 'select * from emp'
# 执行查询操作
cursor.execute(sql)
# 获取查询结果
rows = cursor.fetchall()
for row in rows:
    print('%d,%s,%s,%s' % (row[0], row[1], row[2], row[3]))

# 关闭数据库连接
conn.close()

321、异常处理

【参考】python3连接mysql数据库及异常信息处理
https://blog.csdn.net/lovelong8808/article/details/77193752

322、 requests框架

1)安装requests框架
测试开发知识点整理(五)_第1张图片
2)使用requests框架发送http请求

# -*- coding: UTF-8 -*-

import requests

resp = requests.get('https://www.51job.com')
# 打印响应头
# print(resp.headers)
# 获取响应头
headers = resp.headers
# 遍历响应头(字典)
for key in headers:
    print('%s:%s' % (key, headers[key]))
# 打印响应数据
# print(resp.content.decode('gbk'))

参考:
https://www.cnblogs.com/ranxf/p/7808537.html
https://www.cnblogs.com/lilinwei340/p/6417689.html

323、json框架

函数 作用
dumps(obj) 将对象或数组转成json格式的字符串
loads(text) 将json格式的字符串转成对象或数组
# -*- coding: UTF-8 -*-

import json
import requests

resp = requests.get('http://v.juhe.cn/weather/index?'
                    'format=2&cityname=%E4%B8%8A%E6%B5%B7&'
                    'key=f3068259596b5302176417cea94e0b65')
# 将json格式的字符串解析成字典
weather = json.loads(resp.content)
# 获取result属性的内容
result = weather['result']
# 获取today属性的内容
today = result['today']
# 获取temperature属性的内容
print(u'今天的温度:%s' % today['temperature'])
# 获取future属性的内容
future = result['future']
# 获取明天的数据
tomorrow = future[1]
# 获取明天的temperature
print(u'明天的温度:%s' % tomorrow['temperature'])

324、 unittest框架

unittest 官方文档
https://docs.python.org/3.7/library/unittest.html

1)验证的方法

import unittest

class FirstTest(unittest.TestCase):

    def test_f(self):
        x = 'abc'
        y = 'helloabc'
        z = None
        # self.assertIs(x, y)
        self.assertIsNone(z)
        self.assertIn(1, [1, 2, 3])
        self.assertTrue(1 in [1, 2, 3])
        self.assertTrue(x in y)
        self.assertIsInstance((1, 2, 3), tuple)
        self.assertAlmostEqual(10/3.0, 3.3333333)


if __name__ == '__main__':
    unittest.main(verbosity=2)

【参考】Python必会的单元测试框架 —— unittest
https://www.jianshu.com/p/38948d0d73f5
【参考】python_unittest详解
https://www.jianshu.com/p/8e22c1213260

2)运行python测试用例

import unittest

class SecondTest(unittest.TestCase):

    def test_upper(self):
        self.assertEqual('foo'.upper(), 'FOO')

    def test_isupper(self):
        self.assertTrue('FOO'.isupper())
        self.assertFalse('Foo'.isupper())

    def test_split(self):
        s = 'hello world'
        self.assertEqual(s.split(), ['hello', 'world'])

    def test_exception(self):
        with self.assertRaises(ZeroDivisionError):
            print(1/0)


if __name__ == '__main__':
    unittest.main(verbosity=2)

3)运行python测试集

if __name__ == '__main__':
    # 构造测试套件
    suite = unittest.TestSuite()
    suite.addTest(FirstTest('test_f'))
    suite.addTest(SecondTest('test_upper'))
    # 执行测试
    runner = unittest.TextTestRunner(verbosity=2)
    runner.run(suite)

【参考】测试套件(TestSuite)
https://www.cnblogs.com/eastonliu/p/9145255.html

4)unittest注解
@classmethod, @parameterized

5)参数化测试

import unittest
from parameterized import parameterized


class SumTest(unittest.TestCase):
    @parameterized.expand([
        (6, [1, 2, 3]),
        (0, []),
        (6.142, [1, 2, 3.142]),
        (2, [1, False, True])
    ])
    def test_sum(self, expected, arr):
        self.assertAlmostEqual(sum(arr), expected)

    @parameterized.expand([
        (1, 2, 'abc'),
        (1, 2, None)
    ])
    def test_exception(self, *arr):
        with self.assertRaises(TypeError):
            sum(arr)


if __name__ == '__main__':
    unittest.main(verbosity=2)

325、 selenium框架

1)安装selenium框架
测试开发知识点整理(五)_第2张图片
安装路径如下:

D:\Python27\Lib\site-packages\selenium

2)安装火狐浏览器的驱动
安装路径如下:

C:\Windows\System32\geckodriver.exe

3)使用selenium操作浏览器

# -*- coding: UTF-8 -*-
from selenium.webdriver import *
from time import *

# 创建一个驱动
driver = Firefox()
# 最大化窗口
driver.maximize_window()
# 设置最大等待时间
driver.implicitly_wait(10)
# 打开搜狗的网页
driver.get('https://www.sogou.com')
# 点击搜索框
driver.find_element_by_id('query').click()
# 输入关键字
driver.find_element_by_id('query').send_keys(u'刘亦菲')
# 点击搜索按钮
driver.find_element_by_id('stb').click()
# 等待3秒
sleep(3)
# 关闭浏览器
driver.close()

【参考】Selenium-Python中文文档
https://selenium-python-zh.readthedocs.io/en/latest/api.html
【参考】Selenium-Python官方文档
https://seleniumhq.github.io/selenium/docs/api/py/api.html
【参考】Python+selenium 自动化-selenium的版本查看和升级
https://blog.csdn.net/qq_38161040/article/details/84134291

326、 爬虫(了解)

GitHub上好用的爬虫都在这里了
https://www.easemob.com/news/3077
爬虫项目收集
https://github.com/facert/awesome-spider
爬虫介绍
http://www.runoob.com/w3cnote/python-spider-intro.html
开发网络爬虫
https://www.yiibai.com/python/python3-webbug-series1.html
https://www.yiibai.com/python/python3-webbug-series2.html
https://www.yiibai.com/python/python3-webbug-series3.html
https://www.yiibai.com/python/python3-webbug-series4.html

微信扫一扫关注公众号
image.png
点击链接加入群聊

https://jq.qq.com/?_wv=1027&k=5eVEhfN
软件测试学习交流QQ群号:511619105

[01]Java面试题全集(上)
[02]Java面试题全集(中)
[03]Java面试题全集(下)
[04] 测试开发知识点(一)
[05] 测试开发知识点(二)
[06] 测试开发知识点(三)
[07] 测试开发知识点(四)
[08] 测试开发知识点(五)
[09] Web测试经验分享
[10] 移动app测试经验分享
[11] 软件测试面试被问到的问题
[12] 测试工程师-简历真的拿得出手吗?
[13] 面试时如果发现回答不好,该怎么办?
[14] 如何在面试中介绍自己的项目经验
[15] 这 3 条原则让你简历上的项目经历稳过!

你可能感兴趣的:(01软件测试)