目录
测试
计算机网络
操作系统
JAVA
Linux
数据库
Python
智力题
(答案为网络搜索结果整理汇总,因涉及到的源众多故不一一标明出处)
功能、性能、安全、兼容性、易用性
1、微信发送语音的测试用例
2、黑盒测试与白盒测试的区别及方法
3、搜索功能测试
4、视频通话功能
5、百度首页的测试用例设计
6、测试点赞功能。(抖音点赞,微信点赞)
7、抖音出现白屏是怎么回事
8、微信发红包
9、用户登录测试
10、App崩溃的原因
(1)软件本身代码错误
(2) 当前用户过多,App崩溃
(3)内存容量不足,或方位到未授权的内存位置
(4)网络变化影响到App的稳定
(3)第三方服务,广告或软件弹出导致App崩溃
前提不同:白盒是已知程序的内部实现结构,黑盒是不考虑内部实现结果
测试方式方法不同:
黑盒:等价类划分法-将程序所有可能的输入数据划分为若干个等价类。然后从每个部分中选取具有代表性的数据当做测试用例
边界值分析法-输入和输入等价类中那些恰好处于边界、或超过边界、或在边界以下的状态。
流程分析法(即场景分析)-每一条流程路径一条测试用例
正交实验法-从因素及因素的取值采用正交来确定所有组合,从何覆盖所有情况。-适用于配置测试及多条件筛选
状态迁移法-通过分析完成状态迁移图,根据状态迁移图完成状态转换树。按照一个分支一条用例编写。
错误猜想法
白盒:
静态测试:不用运行程序的测试,包括代码检查、静态结构分析、代码质量度量、文档测试等等,它可以由人工进行,充分发挥人的逻辑思维优势,也可以借助软件工具(Fxcop)自动进行。
动态测试:需要执行代码,通过运行程序找到问题,包括功能确认与接口测试、覆盖率分析、性能分析、内存分析等。
白盒测试中的逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。
<1>如果我打不开一个网页,是什么原因?
<2>unittest 的 fixture , setup和teardown的作用?
App安全测试
过程:
1、tcp四次挥手中的TIME_WAIT状态存在的理由
(1)允许老的重复分节在网络中消失(等待timewait断开的原因)
TCP大致通过一个四元组来标记一条连接,分别是:源IP、目的IP、源端口、目的端口。假设在一次连接中,部分报文因为某种原因滞留在路由网络中,然后这次连接断开了,再然后客户复用了端口,开启了和当前服务器一次新的连接。此时可以看见,因为客户端复用了端口,而且客户端和服务器短期内IP都不会变,而且服务器通常只会又有一个端口监听。因此当前连接的四元组和上次连接一样。此时假如上一次连接中滞留的报文又恢复传播,那就会进入当前连接中,因为这些报文本不属于本次连接,这可能造成数据混乱。因此,客户端发送了最后的ACK后,本次连接不会再有新的报文产生了,我们只需要在TIME-WAIT阶段等待1 MSL时间,就能让网络上所有滞留报文失效。
(2)实现终止TCP全双工连接的可靠性 (为什么是2msl)
若客户端发送完ACK后直接断开closed,此时ACK在发送过程中丢失,此时服务器回重新发送FIN但客户端已关闭不合理。ACK最长传播时间和等待客户端到服务端滞留报文失效时间共为1 MSL。最坏情况下,ACK经历了1 MSL才到达服务端,假如在ACK到达前一瞬间,服务端重传了FIN并发生了滞留,需要等待1 MSL才可让其失效。因此,在最坏情况下,需要2 MSL才可让双向的滞留报文失效。1 MSL+1 MSL= 2 MSL
2、输入一个链接,到页面展示会发生什么
DNS解析过程,浏览器缓存—>操作系统缓存—>本地DNS—>根据转发模式选择迭代还是递归查询
传输层上建立TCP连接,网络层用到了IP协议(负责在网络层传输数据),还会用到RIP或者OSPF进行路由选择,然后用ARP协议解析IP地址对应的MAC地址,使得数据能够在数据链路层上进行传输(不应该是最后到物理层传输吗)。
HTTP请求方法有哪些(post/get/head/put/delete)
HTTP响应报文的结构,状态码
3、DNS的工作原理
第一步:客户机提出域名解析请求,并将该请求发送给本地的域名服务器。
第二步:当本地的域名服务器收到请求后,就先查询本地的缓存,如果有该纪录项,则本地的域名服务器就直接把查询的结果返回。
第三步:如果本地的缓存中没有该纪录,则本地域名服务器就直接把请求发给根域名服务器,然后根域名服务器再返回给本地域名服务器一个所查询域(根的子域) 的主域名服务器的地址。
第四步:本地服务器再向上一步返回的域名服务器发送请求,然后接受请求的服务器查询自己的缓存,如果没有该纪录,则返回相关的下级的域名服务器的地址。
第五步:重复第四步,直到找到正确的纪录。
第六步:本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时还将结果返回给客户机。
4、 DNS劫持
DNS劫持是破坏域名系统(DNS)查询解析的做法。
(1)通过恶意软件覆盖计算机的TCP/IP配置以指向受攻击者控制的流氓DNS服务器
(2)通过修改受信任的DNS服务器的行为使其不符合互联网标准的实现
5、HTTP的请求报文的形式
6、GET和POST的区别
区别:
(1)传送方式:get通过地址栏传输,post通过报文传输。GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息
(2)传送长度:get参数有长度限制(受限于url长度),而post无限制
(3)GET和POST还有一个重大区别,简单的说:
GET产生一个TCP数据包;POST产生两个TCP数据包
长的说:
对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。
(4)GET请求只能进行url编码,而POST支持多种编码方式。
(5)GET请求会被浏览器主动cache,而POST不会,除非手动设置。GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
(6)对参数的数据类型,GET只接受ASCII字符,而POST没有限制。
(7)get不能改变服务器的数据,一般用于从服务器获取数据,是幂等的;post可以改变服务器的数据,不是幂等的;
7、POST还支持的编码类型
application/x-www-form-urlencoded
multipart/form-data
application/json
text/xml
8、端口的概念
在网络通信过程中,需要唯一识别通信两端的端点,就是使用端口识别运行于某主机中的应用程序。如果没有引入端口,则只能通过 进程号进行识别。进程号是系统动态分配的,不同的系统会使用不同的进程标识符,应用程序在运行之前不知道自己的进程号,如果需要运行后再广播进程号则很难 保证通信的顺利进行。而引入端口后,就可以利用端口号识别应用程序,同时通过固定端口号来识别和使用公共服务,如HTTP和FTP等。顺便提供几个常用的保留端口:TCP常用保留端口:FTP(21),HTTP(80),SMTP(25),POP3(110);UDP常用保留端DNS(53),TFTP(69),SNMP(161)。
9、MYSQL的端口号
mysql的默认端口是3306,可以编辑用户目录下的.my.cnf文件进行修改,
10、HTTP请求方法
GET:获取服务器资源
POST:提交信息给服务器
PUT:传输文件
HEAD:和GET方法一样,但是只返回响应头部,作用是确定URL的有效性和资源更新的时间
DELETE:删除指定的资源
OPTIONS:查询请求服务器指定的资源所支持的方法
TRACE:用来确认连接过程中发生的一些操作
CONNECT:建立连接渠道,用于代理服务器
PUT但是由于Http/1.1的PUT方法不带验证机制,存在安全性问题,所以一般的网站都不用这个方法来进行文件传输。
Delete该方法也不带认证机制,所以一般网站并不会对它进行开放使用。
11、HTTP状态码从1到5是什么意思
500(服务器内部错误) 服务器遇到错误,无法完成请求。
501(尚未实施) 服务器不具备完成请求的功能。例如,服务器无法识别请求方法时可能会返回此代码。
502(错误网关) 服务器作为网关或代理,从上游服务器收到无效响应。