学习

linux
1.如何结束后台或前端进程?
查找进程ps -ef|grep mysql
终止进程号kill -s 9 pid 
2.查找某个进程的命令
查找进程ps -ef|grep mysql
3.查看日志文件
cat
4.替换文件中某个字符串
使用vim替换 :s/for/no/g 将本行的for替换成no
                        :%s/for/no/g 将全文的for替换成no
                        :n,$s/well/good/ 替换第 n 行开始到最后一行中每一行的第一个 well 为 good
                        :n,$s/well/good/g 替换第 n 行开始到最后一行中每一行所有 well 为 good
使用sed替换 sed 's/for/no/g'将全文的for替换成no
mysql
1.左连接查询和右连接查询的区别?
左连接:左连接的结果是将右表中关联的内容展示出来,与左表不符的内容填成null
右连接:由链接的结果是将左表中关联的内容展示出来,与右表不符的内容填为null
2.查询某个字段值数量大于2的值有哪些?
select * from table where column>2;
3.如何提升查询效率
使用连接join代替子查询,因为join不需要建立临时表来查询
避免全表扫描,善于利用索引
tips:加了索引,依然全表扫描的可能情况有:
索引列为字符串,而没带引号;
索引列没出现在where条件后面;
索引列出现的位置没在前面。

1.selenium 2 的原理
selenuim2使用浏览器原生的API,调用浏览器页面的元素,操作浏览器本身(截图、最大化、最小化等),执行selenuim脚本
2.用什么工具来做接口测试?
postman
3.接口测试需要注意哪些?
文档是否全:接口说明、输入字段、输出字段、请求方法(get、post)、接口地址和响应参数说明
get和post区别:get请求参数比较少,都明文显示在url中,post请求参数可以通过body来定义,可以是key_value,可以是json,可以是文件,更安全。
ps:
检查接口返回的数据是否与预期结果一致。
检查接口的容错性,假如传递数据的类型错误时是否可以处理。例如是支持整数,传递的是小数或字符串呢?
接口参数的边界值。例如,传递的参数足够大或为负数时,接口是否可以正常处理。
接口的性能,接口处理数据的时间也是测试的一个方法。牵扯到内部就是算法与代码的优化。
接口的安全性,如果是外部接口的话,这点尤为重要。
4.接口测试的参数怎么设计?
参数有必传和非必传、参数的类型和长度以及传递过程中因为业务的一些逻辑限制。
5.你是怎么进行性能调优的?
6.登录界面如何设计测试用例?---针对功能
7.拿淘宝来说,如何测试购物时优惠券功能?
8.有一个查询消息和回调消息的接口,我们可以主动去发起查询任务,也可以让对方系统将消息回调给我们,针对这个接口应该如何去设计测试用例?
9.Python list列表的方法append、extend(扩充列表)、sort(排序)、reverse(翻转)、pop([i])(移除指定位)、insert(i,x)(指定位插入元素)、copy(浅复制相当于a[:])、count(x)(统计x出现的次数)
10.json和Python中dict的区别:
dict是Python的一种数据结构,有dict对应的方法
json是一种数据转换格式,json是字符串,是由key和value组成的字符串
11.什么是数据驱动,如何实现参数化?
数据驱动是将测试用例用代码写好,每次进行测试的时候不要修改代码,只修改维护测试数据。这些测试数据的在代码中用参数的方式调用。
12.下一个接口请求依赖于上一个接口数据时,应该如果处理?
封装成一个函数,return出需要的数据,供下一个接口调用。
13.依赖于登录的接口如何处理
正常登录,获取有效的cookie值,对依赖登录的接口进行请求时将cookie作为全局变量进行调用。
14.依赖于第三方的接口如何处理
15.不可逆的操作,如何处理,比如删除接口
造数据,使用unittest的setup的准备好数据,teardown时做数据处理。

16.我现在有个程序,发现在Windows上运行得很慢,怎么判别是程序存在问题还是软硬件系统存在问题?
答:1.是否中毒;2.检查软/硬件配置是否是系统推荐的配置情况;3.查看是否有其他程序占用内存或cpu导致;4.如果是C/S或者B/S结构的软件,需要检查是不是因为与服务器的连接有问题,或者访问有问题造成的;5.在系统没有任何负载的情况下,查看性能监视器,确认应用程序对CPU/内存的访问情况。
17.在测试一个web页面时,页面显示为空白页,如何定位问题所在?可能是哪些原因引起的?
18.数据库内连接和外连接,自联接有什么区别?
19.当开发人员说不是BUG时,你如何应付?
参考答案:开发人员说不是bug,有2种情况,一是需求没有确定,所以我可以这么做,这个时候可以找来产品经理进行确认,需不需要改动,3方商量确定好后再看要不要改。二是这种情况不可能发生,所以不需要修改,这个时候,我可以先尽可能的说出是BUG的依据是什么?如果被用户发现或出了问题,会有什么不良结果?程序员可能会给你很多理由,你可以对他的解释进行反驳。如果还是不行,那我可以给这个问题提出来,跟开发经理和测试经理进行确认,如果要修改就改,如果不要修改就不改。其实有些真的不是bug,我也只是建议的方式写进TD中,如果开发人员不修改也没有大问题。如果确定是bug的话,一定要坚持自己的立场,让问题得到最后的确认。
20.http请求和http响应包含哪些内容
参考答案:
    请求报文包含三部分:
    a、请求行:包含请求方法、URL、HTTP版本信息

    b、请求首部字段

    c、请求内容实体
    响应报文包含三部分:

    a、状态行:包含HTTP版本、状态码、状态码的原因短语

    b、响应首部字段

    c、响应内容实体
21.Socket编程了解么,应用在哪些地方
参考答案:
    可以把 WebSocket 看成是 HTTP 协议为了支持长连接所打的一个大补丁。WebSocket是HTML5下一种新的协议。它实现了浏览器与服务器全双工通信。最大不同是:
    WebSocket是一种双向通信协议。在建立连接后,WebSocket服务器端和客户端都能主动向对方发送或接收数据,就像Socket一样;
    WebSocket需要像TCP一样,先建立连接,连接成功后才能相互通信
一个使用WebSocket应用于视频的业务思路如下:
    使用心跳维护websocket链路,探测客户端端的网红/主播是否在线
    设置负载均衡7层的proxy_read_timeout默认为60s
    设置心跳为50s,即可长期保持Websocket不断开
22.sql语句应该考虑哪些安全性? 
答案:
(1)防止sql注入,对特殊字符进行转义,过滤或者使用预编译的sql语句绑定变量。 
(2)最小权限原则,特别是不要用root账户,为不同的类型的动作或者组建使用不同的账户。 
(3)当sql运行出错时,不要把数据库返回的错误信息全部显示给用户,以防止泄漏服务器和数据库相关信息。
23.如何测试sql注入
答案:
1.输入域的值为数字型,用1=1,1=2法
若满足条件,则存在SQL注入漏洞,程序没有对提交的整型参数的合法性做过滤或判断
2.输入域的值为字符型,用 ’1=1’, ’1=2’ 法
若满足条件,则存在SQL注入漏洞,程序没有对提交的字符型参数的合法性做过滤或判断
3.输入域中的值为搜索型,用’and [查询条件] and ‘%’=’% 等
若满足条件,则存在SQL注入漏洞,程序没有对提交的查询的合法性做过滤或判断
4.用UNION查询语句
利用Union可以连接查询,从而从其他表中得到信息
5.大小写排查
程序员对大小写的过滤不充分时,会忽视大小写混合的情况,容易存在漏洞
6.用UNICODE字符集检查
用UNICODE字符集转化的输入,会把+号转为%2B,把%号转化为%25等,容易忽略过滤
7.用ASCII码检查
把输入的字符用ASCII码代替,如a=char(97),容易忽略过滤
8.用;号或—号检查
分号;在SQLServer中表示隔开前后两句语句,--表示后面的语句为注释,容易忽略过滤
9.利用系统表
通过查询数据库的系统表名,可判断具体用的数据库类型
10.利用数据库服务器的系统变量user 等
可以得到数据库名,数据库的用户名,从而进行进一步攻击
11.利用相关函数
若字符是中文的,比如where name=’用户’,可以用where name=nchar(29992)+nchar(25143)代替。
12.界面输入框中是否对SQL敏感字符进行了屏蔽
"exec" ,"xp_","sp_","declare","Union","cmd","+","//","..",";","'","--","%" 等命令关键字
13.是否对SQL脚本语法出错信息进行了屏蔽
有些SQL注入的目的就是为了看到报错的SQL命令,通过分析这些SQL命令,获取关键的数据库名,表名以及字段名等信息
14.在浏览器的地址栏中是否对一些恒等表达式进行了屏蔽
例如:http://www.321cn. Com /showdetail.asp?id=19 and 1=1
15.对于提交表单的浏览器地址是否进行了敏感字符或命令集的屏蔽
16.对于cookie参数提交部分,是否对于cookie文件进行了敏感字符或命令集的屏蔽
前提是设计或需求允许这样的操作

24.bug常出现的情况:
数据库层面的:可能少某个字段,或者字段值为空等等,这些可能在设计数据库时就埋下了错误的种子,导致程序调用数据库错误的数据产生bug,这一类问题不算普遍,但也是最容易忽视的一种情况,有时候从数据库入手定位bug说不定还能发现数据库的设计缺陷呢。

网络层面的:通常这种都是网络情况较差的时候产生的,比如手机的移动网络信号不好,又或是公司网络不稳定,导致js/css未加载完全或者请求超时等等,这种问题其实非程序bug造成的,可以不用提交bug,也不用让开发毫无头绪的去查代码的问题。当然如果可以的话也可以当优化建议提给开发,让他优化代码,比如压缩js/css,增加超时时间,超时后的重试机制。

代码层面的:普遍的bug基本都是代码有问题造成的,排除掉1和2剩下后就可以确定是程序bug了。对于了解网络架构的人来说,其实程序也分前端和后端的,一般对于界面显示有问题直接可以判断是前端的问题,比如系统兼容性,浏览器兼容性。

而对于数据或者逻辑上的问题,则需要通过抓包工具来进行分析 :

1)请求未返回数据,可能是client请求数据错误,可能是server端处理错误。

2)请求返回错误的数据,那就是server端处理错误。

3)请求返回正确的数据,那就是前端处理server端返回数据有错误

22.sql
Student(S#,Sname,Sage,Ssex) 学生表 
S#:学号;Sname:学生姓名;Sage:学生年龄;Ssex:学生性别

Course(C#,Cname,T#) 课程表 
C#,课程编号;Cname:课程名字;T#:教师编号

SC(S#,C#,score) 成绩表 
S#:学号;C#,课程编号;score:成绩

Teacher(T#,Tname) 教师表 
T#:教师编号; Tname:教师名字

问题:
1、查询“001”课程比“002”课程成绩高的所有学生的学号;
select a.S# from (select s#,score from SC where C#='001') a,(select s#,score from SC where C#='002') b where a.score>b.score and a.s#=b.s#;

2、查询平均成绩大于60分的同学的学号和平均成绩;
select S#,avg(score)
from sc
group by S# having avg(score) >60;

3、查询没有学全所有课的同学的学号、姓名;
select Student.S#,Student.Sname
from Student,SC
where Student.S#=SC.S# group byStudent.S#,Student.Sname having count(C#) <(select count(C#) from Course);

4、查询至少学过学号为“001”同学所有一门课的其他同学学号和姓名;
select distinct SC.S#,Sname
from Student,SC
where Student.S#=SC.S# and C# in (select C# from SC where S#='001');

5、删除学习“叶平”老师课的SC表记录;
Delect SC
from course ,Teacher
where Course.C#=SC.C# and Course.T#= Teacher.T# and Tname='叶平';

6、查询没学过“叶平”老师课的同学的学号、姓名;
select Student.S#,Student.Sname
from Student
where S# not in (select distinct( SC.S#) from SC,Course,Teacher whereSC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname='叶平');

第一期:

学生表(学生id,姓名,性别,分数) )student(s_id, name, sex, score)

班级表(班级id,班级名称) class(c_id, c_name)

学生班级表(班级id,学生id) student_class(s_id,c_id)

1.查询一班得分在80分以上或者等于60,61,62的学生
select a.name from student a join student_class b on a.s_id=b.s_id join class c on c.c_id=b.c_id where c.c_name='一班' and a.score in (60,61,61) or a.score>80;
2.査询所有班级的名称,和所有班中女生人数和女生的平均分。
select c.c_name,count(a.s_id),avg(a.score) from student a join student_class b on a.s_id=b.s_id join class c on c.c_id=b.c_id where a.sex = '女' group by c.c_name;


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值