总结的
9车载测试的
4测试用例
3面试官问用过哪些can工具
canoe
2原来车载测试实验室台架比较多,canoe是博世和Intel开发的,为了应对日益复杂的汽车电子系统
1汽车电器功能缩写
AUTO 自动 ACC 电源开关或自适应巡航
A/C 空调 ABS 防抱死系统
A/F 空燃比
T-BOX 车联网系统
TSP 汽车远程服务提供商
8测试用例
①用excel写,有测试编号,测试标题,测试条件,测试步骤,预期结果,实际结果
7接口自动化python
1一种是用jmeter,第二种是用python+request做接口
2注释方法#,ctrl / ,’’’ ‘’’
3命名多使用下划线,有意义命名,驼峰命名法(首字母大写)
4python数据类型: int float(小数,浮点型),bool (True,False,要大写不然出错)
str 字符串
集合类数据类型(或者说序列): 元组 列表 字典
5print(type(a)) 查看是什么数据类型
a=369
b=str(a)
print(b,type(b)) 结果 369 <class ‘str’>
转化数据类型
a=33.3
b=int(a)
print(b) b就等于33
空数据None
a=None
print(a) 结果None
b=float(a)
print(b) 结果语法错误:not ‘NoneType’
运算符
±*/(加减剩除) %(求余) 〃(整除) 幂 (225即是2的25次方)
a=7//3
b=7**2
print(a) a等于2,b等于49
赋值运算符=
+= -= *= %= **=
a+=b (a=a+b)
关系运算符(运算结果是布尔值)
< ≥(写错了应该是>=) <= ==(等于号)
!=(不等于号)
print(1!=2) 结果是True
逻辑运算符,运算结果也是bool
not and or (优先级排列,和MySQL一样)
转义符
a=‘12’333’
print(a,len(a)) 结果12’333 6
b=‘12\’’
print(b) 结果12’
\a响铃 \r回车 \n换行 \t缩进
下标有正向和反向
a b c d e f g
0 1 2 3 4 5 6
-1 -2 -3 -4 -5 -6 -7
索引:通过下标找到变量内的单个元素
a=‘abcdefg’
b=[2]
print(b) 或写成 print([b]) 结果c
切片:通过下标找到变量内的多个元素
b=[::1] 或 b=[:]
print(b) 结果abcdefg
b=[-1:-4:-1]
print(b) 结果gfe
b=[::-2]
print(‘b=’,b) 结果b=geca
print(a[1:4]) 开头索引是1,结束索引是4,步长1隐藏,切片会取前面一位,怕切到手 结果
bcd
元组(tuple)可以使用索引和切片,可以为变量,字符串,元组,字典,列表,元组长度是元素的个数,元组个数是没有限制的,元组元素不可以通过函数/方法来修改。元组只有一个元素时候要加逗号。
#元组
b=999999
a=(12,(‘这是a变量的元组’,888,777,666),-1.1,True,(‘这是元组内的字符串’),b)
print(a,type(a))
print(a[0])
print(a[1])
c=a[1]
print©
print(a[1][-1]) 结果666
print(len(a)) 结果6
d=(123,)
print(d,type(d)) 结果(123,) <class ‘tuple’>
列表list:基本和元组一样,区别就是元组是小括号,列表是中括号[],字典是大括号{},列表可以用函数/方法改变元素。
变量名.append(元素):添加元素到最后面
变量名.insert(下标,元素):添加元素到下标位置
删除的
变量名.pop(下标)
变量名.remove(元素)
变量名.clear()
排序
变量名.stor()
#列表
a=[123,1.1,‘这是个字符串’,True,(‘这是个子元组’,666),[‘子列表’,888,999]]
print(a)
print(type(a)) 结果<class ‘list’>
print(a[-1]) 结果 [‘子列表’, 888, 999]
print(a[2::1])
a.append(‘这是个append新增的元素’)
print(a) 结果[123, 1.1, ‘这是个字符串’, True, (‘这是个子元组’, 666), [‘子列表’, 888, 999], ‘这是个append新增的元素’]
a.insert(0,666)
print(a)
结果[666, 123, 1.1, ‘这是个字符串’, True, (‘这是个子元组’, 666), [‘子列表’, 888, 999], ‘这是个append新增的元素’]
a[0]=123456;
print(a) 结果[123456, 1.1, ‘这是个字符串’, True, (‘这是个子元组’, 666), [‘子列表’, 888, 999]]
a[0:2:1]=333,666,999
print(a) 结果[333, 666, 999, ‘这是个字符串’, True, (‘这是个子元组’, 666), [‘子列表’, 888, 999]]
a[0:4:1]=‘a’,‘b’,‘c’,‘d’
print(a) 结果[‘a’, ‘b’, ‘c’, ‘d’, True, (‘这是个子元组’, 666), [‘子列表’, 888, 999]]
a.pop(1)
print(a)
结果[‘a’, ‘c’, ‘d’, (‘这是个子元组’, 666), [‘子列表’, 888, 999]]
a.remove(‘d’)
print(a)
结果 [‘a’, ‘c’, (‘这是个子元组’, 666), [‘子列表’, 888, 999]]
#a.pop(1)
print(a)
a.insert(1,‘b’)
a.append(‘b’)
a.remove(‘b’)
a.clear()
print(a)
a=[123,456,1,2,99,5,4,21,True,False]
a.sort()
print(a)
例题
8.修改最后2个元素的值为,‘广东’,‘广州’
list_1=[56,‘name:Tom;tel:13155807799’,32.5,True]
#list_1[-1:-3:-1]=‘广东’,‘广州’
list_1[4::]=‘广东’,‘广州’
print(list_1)
字典dict
不可以使用索引和切片,键值是一对的,键是唯一的,只能使用数字,字符串,元组
#字典
a={(‘mkdir’):‘中文’,2:‘英文’}
#修改或增加
a[3]=666
a[6]=999
a[6]=369
print(a,type(a),len(a))
结果 {‘mkdir’: ‘中文’, 2: ‘英文’, 3: 666, 6: 369} <class ‘dict’> 4
#查找键为3的值
print(a[3])
#查找所有的键
print(a.keys())
#查找所有的值
b=a.values()
print(b)
#print(a.values())
#查找所有的键值对
print(a.items())
#删除
#print(a.pop(2))
a.pop(2)
print(a)
#清空clear
a.clear()
print(a)
6UI自动化python
1ui自动化用python+selenium
5.fidler
①fiddler经常谷歌浏览器抓不到get请求,就是<>这种符号的,火狐就行。有时候抓包也不是抓<>这种符号,抓>这种也可以,主要看ID name
②抓APP包:电脑和手机同一个局域网,手机设置里面的wifi设置手动代理,输入电脑IP和默认端口号8888。
fiddler设置好https和远程操作。
手机和电脑下载证书,手机要在浏览器输入IP:端口号就可以下载,不同电脑,手机要重新下载证书。👌👌👌
4.jmeter(接口自动化)
①TPS/QPS=并发数/平均响应时间
②固定(按相同的固定时间停顿)和同步定时器(阻塞线程,让其达到一定程度再一起释放)
③添加-逻辑控制器-仅一次控制器:把登陆放在仅一次控制器里面,然后充值放外面,循环勾上,就有登陆一次充值很多次的效果。
3.adb
①设置monkey 6万次,为了更贴近用户习惯,添加思考时间throttle600毫秒左右,可以九小时左右,测试的是APP稳定性
②usb模式选择MIDI模式就可以连接
③adb shell
adb shell mokey -p 包名 -v -v -v 次数
③adb shell pm list package -3(-s就是查看系统应用,不加后缀是显示所有)
④adb devices
⑤adb help
⑥adb install 路径/包名(uninstall是卸载意思)
⑦adb start-server启动adb服务
⑧adb kill-server 关闭
⑨adb logcat 查看日志
④APP性能狗六个指标:CPU
GPU 帧率 内存 流量 电量
这属于APP性能测试的
2.MySQL(默认端口号3306)
1用navicat软件连接数据库,bool类型在表里显示tinyint。
2有时候空格换行多了,也会报错。原来表有两种模式显示,第一种是表结构查询desc t1;第二种是select * from t1;这种字段也可以说是列。
3显示’sea’ in 'file d list ’ at line 1原来是创建数据库时候没写create database v3 charset=utf8;。
然后创建表,create table v6(a int);最后创建表字段
alter table v6 add sex bool,add c char(30),add name char(30);
最后就可以正确显示select * from v6;字段就是列格式了,有时候字段即列超过6-7个就会排版不好看。
在外面新建数据库也要选择utf8才行,要不然粘贴dep表后运行就成功不了
4也是有灵性的,inser into v6(sexw,c,name) values(1,‘这是c字段的第一行’,‘这是name字段第一行’);就自动排在第一行了,再打一次这命令,也可以输入,不过排在最后一行。看来不一定,把两个删除了delete from v6 where sex=1,没想到再插入一次就排到最后一行了
5原来navicat有两种运行方式:一是右击数据库-命令列介面,二是左击数据库-查询-新建查询(这里面运行也有两种,第一是运行已选择的,第二是从这里运行一个语句,要光标在开头或者开头开始选择两个以上就行)。没想到可以直接点进去表里面修改。
6偶尔查询编辑器也会出错,一会行一会不行。原来char是固定长度字符类型,varchar是可变类型
7insert into 表名 values (字段,字段,字段),(值,值,值)
表名()后面字段有时候可以不写,只要写的值对应表字段就行了
8运算符±×÷% 加减乘除求余
=赋值运算符
大于号 <小于号 >= <=
!= 或者<>也是不等于意思逻辑运算符:not 非 条件1 and 条件2 逻辑与,and两边同时为真就为真,不然就为假条件1 or 条件2 逻辑或,一边为真就行优先级() not and or
9梦开始地方
select * from dep where salary+5000>10000;
区间的
select * from dep where age between 25 and 30;
空值的
select * from dep where
address is null;(is not null 非空值的)
模糊查询的:
select * from dep where address like ‘江’;没想到找了半天错误,竟然是like写成lile
in 的
select * from dep where address in(‘广东’,‘江西’);
取别名
select name as ugo,age be,id hello from dep where name like ‘李%’;
去重复
select distinct address from dep;
排序的
select * from dep where name like ‘李%’ or name like ‘王%’ order by salary
desc,age ;(从小到大排列可以默认不写asc)
分组的(也算是重新建个新表,多表排序)
每个省份不同性别人数
select address,sex,count(*) from dep group by address,sex;
每个省份平均工资
select address,avg(salary) from dep group by address;
(group by 字段后面跟having)having 条件
行数的
select * from dep limit 5;(第一行可以默认不写)
select * from dep limit 2,6;(从第三行开始显示,显示六行)
单函数
select database();所在数据库
select length(‘加油哈’) 查看所占字节
双函数
max(字段)
min(字段)
avg(字段) 平均值
sum(字段) 求和
count(字段) 计数
select count(*) from dep;
查看dep多少条数据(一般一行就是一条数据,也是一个人数,所以也是16个人数)
10没想到发现个bug,select * from dep group by address;报错this is incompatible with sql_mode=only_full_group_by,老师视频(数据库初级13集29分)都没有出错,原来
底层方面:
5.7.5及以上版本都会出错,MySQL5.7.5版本以上默认sql配置是sql_mode=‘ONLY_FULL_GROUP_BY’,这个配置严格执行了SQL92标准。
很多5.6升级到5.7,为了语法兼容,大部分会选择调整sql_mode,使其保持跟5.6一致。
SQL方面:
由于开启了ONLY_FULL_GROUP_BY的设置,如果select字段不在group by中,并且select字段未使用聚合函数(sum,max,min,avg)的话,那么这条SQL语句是被MySQL认为是非法的。
解决方案是:
通过linux修改配置文件,编辑my.cnf文件,找到sql-mode位置,然后去掉only-full-group_by,然后重启SQL。
有的my.cnf中可能没有sql-mode,需要追加
sql-mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
11 有趣的题:
①查询公司每年要支出的工资
select sum(salary)*12 from dep;
②求平均年龄大于28的省份
(可以先写两段话或两段以上,比如写成先求每个省份的平均年龄,大于28)
select address,avg(age) from dep group by address having avg(age)>28
③求最低工资低于5000的部门(按照部门分组,求出每个部门最低工资,再和5000比较)
select job,min(salary) from dep group by job having min(salary)<5000
④求10部门的manager,20部门的clerk的员工的信息
select * from EMP where
deptno=10 and job=‘manger’ or deptno=20 and job=‘clerk’
⑤查询smith信息
select * from EMP where ename=‘smith’;
⑥查询不是clark的信息
select * from EMP where ename !=‘clark’;
⑦查询所有销售人员(salesman)的基本信息,并要求销售人员工资高于1300
select * from EMP where
job =‘salesman’ and sal>1300;
⑧查询出所有在1981年雇员的信息
select * from EMP where
hiredate like ‘1981%’;
⑨查询所有领取奖金的雇员信息(comm不为空且大于0)
select * from EMP where
comm>0;
⑩查询雇员编号是7369 、7566 、 7844的信息
select * from EMP where empno=7369 or empno=7566 or empno=7844;
11查询雇员姓名第二个字母是m的全部雇员信息
select * from EMP where ename like ‘_m%’;
12查询雇员姓名任意位置上包含字母A的全部雇员信息
select * from EMP where ename like ‘%A%’;
13查询全部雇员信息,按照工资由高到低排序,如果工资相同就按照雇员日期先后排序
select * from EMP order by sal desc,hiredate;
14查询办事员的姓名,编号和部门编号
select ename,empno,deptno from EMP where job =‘clerk’;
15查询奖金高于薪金的员工
select * from EMP where comm>sal;
16查询奖金高于薪金的百分60的员工
select * from EMP where comm>sal *0.6;
17查询出不收奖金或收取奖金低于100的员工
select * from EMP where comm<100;
18查询不带有’R’的员工的姓名
select * from EMP where ename not like ‘%R%’;
19查询出公司最高工资和最低工资
select max(sal),min(sal) from EMP;
20查询每个部门的人数,平均工资
select deptno,count(*),avg(sal) from EMP group by deptno;
21查询出每种职位的最高工资和最低工资
select job,max(sal),min(sal) from EMP group by job;
22查询平均工资高于2000的职位信息,以及从事此职位的雇员人数,平均工资
select job,avg(sal),count(*) from EMP group by job having avg(sal)>2000;
12 select version();查看版本号
navicat 5.6版本表名大写小写都可以运行,5.7版本就不行。
②主要是数据库,表,表结构,数据的增删查改
③数据库:
show databases;显示所有数据库
create database 数据库名 charset=utf8;创建数据库(charset 设置字符集编码集,utf8 万国码)
drop database 数据库名;(删除的)
select database(); 查询当前使用数据库
use 数据库名; 切换数据库
④表的 table
创建表
create table 表名(字段名1 数据类型,字段名2 数据类型) ;
create table t1 (a int,b float,c bool,d char(20),e date);
显示所有的表
show tables();
修改表名
alter table 原表名 rename 新表名;
删除表
drop table 表名;
⑤表结构
desc 表名;(查看表字段)
alter table 表名 add 字段名 数据类型;
例:alter table t1 add id int;
alter table t1 add name char(20) after c;(可以将增加/修改的字段放到c字段后)
alter table t1 add sex bool first; (将增加/修改的字段放至首位)
alter table 表名 change 原字段名 新字段名 数据类型;(修改表字段)
alter table 表名 drop 字段名;(删除表字段)
alter table 表名 add 字段名 数据类型,add 字段名 数据类型…同时增加两列之类的
alter table t1 add DD int,change c c char(50), drop b;(增加一个字段后,修改原表字段,删除原表字段)
⑥表数据增删查改
select 字段1,字段2 from 表名;
插入数据
insert into 表名(字段1,字段2…) values (值1,值2…),(值1,值2);
例如:
insert into t1 (sex,c,name) values(1,‘这是c字段的第二行数据’,‘这是name字段的第二行数据’),
(1,‘这是c字段的第二行数据’,‘这是name字段的第二行数据’);
修改数据
update 表名 set 需要修改的字段=值 where 条件
例如:
update t1 set DD=111 where sex=0;
删除数据
delete from 表名 where 条件;
清空表
delete from 表名;
truncate 表名;
复制表 create table 新表名 as select * from 原表名
如1将test1的所有内容复制到copy_1
create table copy_1 as select * from test1;
2复制表test1中的id和company这两个字段的全部内容到表copy_2
create table copy_2 as select id,company from test1;
3复制表test1中表结构到copy_3,不要数据
create table copy_3 as select * from test1 where 0;
复制数据
inser into copy select * from test1;
复制test1表数据到copy表
insert into copy_3(id,company) select * from copy_6;
复制表copy_6数据到copy_3字段里面的id,company(因为copy_6只有两个字段,而copy_3有四个字段,而且表字段名字要相同,数量要对应如
insert into cp select id,company from test1;其中cp表有两个字段id 和company,test1有id,company,address,email字段,总结就是谁字段多谁说话)
1.Linux
①命令:ls ls-a -l ll 查看
dir
cd …返回上级目录(cd只能切换到目录,文件不行)
cd .原地不动
cd /回到根目录
cd -切换到的上次目录
cd ~切换到用户所在的目录(或者后面什么也不跟也行)
pwd which history touch mkdir rm cp
vi(vim) (创建mkdir目录,然后进入编辑模式,写入一些字符,然后退出就会出现is a directory,这是个目录,得touch创建才行)
:wq!
a/i 进入编辑模式
esc 退出
yy 复制
3yy
p 粘贴
3p
x 删除单个字符
dd 删除一行
mv (mv a b 假如ab同时存在就是移动,否则就是改名)
more cat tac (比如more 1.txt )
less 进入文件查看内容
head 查看文件头部命令
tail 查看文件尾部命令
top 监控系统命令
ps -ef 查看进程
kill -9 强制结束进程(id那列)
free -m 查看内存,以m为单位
df -h查看磁盘空间
du 查看文件所占磁盘空间
netstat -ano | grep 端口号 查看端口号是否被占用
zip 打包文件或目录
unzip 解压
gzip 打包文件
gunzip 解压文件
su 切换用户
userdel 删除用户
useradd 新增用户
passwd 修改用户密码
find / -name
grep 查找文本内容
chmod
reroot 重启系统
shutdown 关闭系统
exit 退出
clear 清除屏幕
ifconfig 查看IP
help 帮助
ping 网址
ctrl z c 退出当前程序
②chmod 赋予文件权限
chmod -r 777 aaa
修改aaa和其子目录和文件权限为777
比如755
r可读 4 u=用户权限
w可写 2 g=用户组所在组权限
x可执行 1 o=其他用户的权限
chmod u=rwx,g=rx,o=rx aaa
chmod u-x,g+w aaa
将用户权限减可执行,用户所在组权限加可写
③装centos时候没有桌面,原来是软件选择-带gui的服务器-勾选兼容性程序库和开发工具。安装虚拟机时候先-稍后安装操作系统-linux 版本选centos 64位,然后下一步下一步,最后完成-编辑虚拟机设置-cd/dvd那安装系统ISO文件
④mkdir -p 1/2/3/4/5/6/7/8/9 设置递归创建
⑤-c 建立一个打包文件(create的缩写)
-x 解开一个打包文件
-t 查看打包的文件
-z 同时具有压缩的属性
-v 压缩过程中显示文件/目录的名称
-f 接包名,后面就不能再接参数了
zip -r 包名(xx.zip) 需要打包压缩的文件/目录
tar -cvf 包名(xxx.tar) 需要打包的文件/目录 打包
tar -xvf 包名(xxx.tar) 解压
疑问的
①吞吐量sec为5?
②http信息头管理器
③测试环境搭建
④鸿蒙是不是adb?(测试了华为mate20pro一样可以用monkey这些)
⑤数据库
⑥怎么算是好的测试用例(三个必备条件
1整体的完备性
2等价类集合划分的准确性
3等价类的完备性)
⑦appscan对wep进行安全测试扫描(新建扫描,填入URL,选择缺省值,全局扫描,查看报告就行了)
⑧项目介绍
⑨动态关联
⑩测试项目几个接口
11虚拟机开启就蓝屏重启
12jmeter做性能测试
13SQL做循环
14SQL配置文件my.ini在哪里
15怎么九万用户同时注册,登陆
16查询广东省技术部有多少人
(select address,count() from dep where job=‘技术’ group by address having address=‘广东’;
或者select address,count() from dep where job=‘技术’ and address=‘广东’ group by address;)
17python
print(’\a’)没有响铃
18二维数组切片
英语的
1permission denied
没有权限
2command not found
找不到执行文件或命令脚步路径
3SyntaxError 语法错误
4TypeError 类型错误5exception 异常
failed 失败
error 错误