python测开面试题汇总

如果一个普通用户,他的百度首页打不开,问题怎么定位?写出定位流程。

压力测试和负载测试的区别

1、压力测试

压力测试是在强负载(大数据量、大量并发用户等)下的测试,查看应用系统在峰值使用情况下操作行为,从而有效地发现系统的某项功能隐患、系统是否具有良好的容错能力和可恢复能力。压力测试分为高负载下的长时间(如24小时以上)的稳定性压力测试和极限负载情况下导致系统崩溃的破坏性压力测试。压力测试可以被看作是负载测试的一种,即高负载下的负载测试,或者说压力测试采用负载测试技术。

2、负载测试

负载测试是模拟实际软件系统所承受的负载条件的系统负荷,通过不断加载(如逐渐增加模拟用户的数量)或其它加载方式来观察不同负载下系统的响应时间和数据吞吐量、系统占用的资源(如CPU、内存)等,以检验系统的行为和特性,以发现系统可能存在的性能瓶颈、内存泄漏、不能实时同步等问题。负载测试更多地体现了一种方法或一种技术。

服务器中一般要监控哪些数据,如何监控的,怎么从监控数据中发现问题?

有一天早上打车高峰,滴滴服务端挂了大概30分钟,工程师抢修之后,马上上线,之后又挂了,请问有哪些原因会造成这个情况?

服务器内存不够、服务器超出负载、并发量太大、遇到恶意攻击

讲一下UI自动化测试的框架原理?

1.在自动化测试过程中,存在三部分组件:客户端脚本+驱动+浏览器终端。

2.驱动文件,以geckodriver.exe为例,这个可执行的驱动文件启动后,相当于一个暴露了一系列接口的服务器,监听某一端口,例如:89890。

3.客户端的操作(访问页面,定位元素,输入数据,点击按钮等)都是封装成了接口请求(eg:/session/xx/yy),然后提交到驱动服务器。

4.驱动服务器接收到客户端的请求后,再跟终端浏览器交互。

5.终端浏览器做出相应操作。

接口自动化测试的框架有哪些?

Python+requests+pytest

平时在测试过程中你是怎么提升或者保障业务质量的?

自动化测试的流程和设计理念

UI自动化有覆盖兼容性吗?平时会怎么考虑兼容性测试

UI自动化测试怎么定位元素呢?当某一个框无法定位时怎么排查呢?

平台是怎么做的?业务框架是什么?

Selenium的工作原理?

上传图片的几种方式?

如何处理动态元素?

计算机基础面试题

http协议中有哪些你熟悉的方法?

三次握手和四次挥手?

get和post方法的区别是什么?

tcp和udp的区别?

tcp怎么保障它的可靠传输?

说一下Http场景响应码?302表示什么?4xx\5xx分别是什么错误?

常见协议端口号

FTP21 SSH22 telnet23 dns53 http80 https443 tomcat8080 orcale1521 mysql3306

打开一个网页都发生了哪些事?

如何查找一个文件大小超过5M的文件

如何查看进程?

mysql索引增删改查中用索引, 是会增加还是减少效率?

mysql中查询用的通配符有哪些?%是用来通配什么符号的?

数据库查询什么是左连接、右连接?

什么是触发器?什么是存储过程?

你常用的mysql引擎有哪些?各引擎间有什么区别?

主要 MyISAM 与 InnoDB 两个引擎,其主要区别如下:

一、InnoDB 支持事务,MyISAM 不支持,这一点是非常之重要。事务是一种高

级的处理方式,如在一些列增删改中只要哪个出错还可以回滚还原,而 MyISAM

就不可以了;

二、MyISAM 适合查询以及插入为主的应用,InnoDB 适合频繁修改以及涉及到

安全性较高的应用;

三、InnoDB 支持外键,MyISAM 不支持;

四、MyISAM 是默认引擎,InnoDB 需要指定;

五、InnoDB 不支持 FULLTEXT 类型的索引;

六、InnoDB 中不保存表的行数,如 select count(*) from table 时,InnoDB;需要

扫描一遍整个表来计算有多少行,但是 MyISAM 只要简单的读出保存好的行数即

可。注意的是,当 count(*)语句包含 where 条件时 MyISAM 也需要扫描整个表;

七、对于自增长的字段,InnoDB 中必须包含只有该字段的索引,但是在 MyISAM

表中可以和其他字段一起建立联合索引;

八、清空整个表时,InnoDB 是一行一行的删除,效率非常慢。MyISAM 则会重

建表;

九、InnoDB 支持行锁(某些情况下还是锁整表,如 update table set a=1 where

user like '%lee%'

求第一个不重复的字符的位置?

python的深拷贝和浅拷贝?

python怎么去掉字符串中的空格

写一个算法题, 将两个合法的字符串拼接

之前测试过程中接口自动化主要涉及哪些模块, 是怎么做的,有需要自己特殊进行什么逻辑处理吗?接口自动化测试为什么要用这个框架?

python中主要用过哪些库?

讲一下set这种数据结构的底层原理

熟悉的排序算法有啊些?讲一下冒泡排序的基本思想

消息队列接触过吗

越权测试怎么测的?

同步调用和异步调用的区别?

有没有涉及过空指针异常的情况测试?

算数组中查找出现次数过半的数

查找链表的倒数第三个数(代码实现)

什么是面向接口编程?

面试官的窒息逼问: 到底什么是面向接口编程? - 知乎

Python装饰器的作用和功能

重载和多态有啥区别

项目中如何管理组件, 用了哪些组件

接口测试会校验哪些数据? 如果返回体数据较多时会如何判断以及怎么判断返回的数据是否准确?

python多线程与多进程的区别

进程:

1、操作系统进行资源分配和调度的基本单位,多个进程之间相互独立

2、稳定性好,如果一个进程崩溃,不影响其他进程,但是进程消耗资源大,开启的进程数量有限制

线程:

1、CPU进行资源分配和调度的基本单位,线程是进程的一部分,是比进程更小的能独立运行的基本单位,一个进程下的多个线程可以共享该进程的所有资源

2、如果IO操作密集,则可以多线程运行效率高,缺点是如果一个线程崩溃,都会造成进程的崩溃

应用:

IO密集的用多线程,在用户输入,sleep 时候,可以切换到其他线程执行,减少等待的时间

CPU密集的用多进程,因为假如IO操作少,用多线程的话,因为线程共享一个全局解释器锁,当前运行的线程会霸占GIL,其他线程没有GIL,就不能充分利用多核CPU的优势

为什么使用* args,** kwargs?

迭代器和生成器的区别

python怎么读取文件

解释Python支持的所有文件处理模式?

Python中可以使用三种方法打开文件。他们是:

r : 读取文件,若文件不存在则会报错

w: 写入文件,若文件不存在则会先创建再写入,会覆盖原文件

a : 写入文件,若文件不存在则会先创建再写入,但不会覆盖原文件,而是追加在文件末尾

rb,wb:分别于r,w类似,用于读写二进制文件

r+ : 可读、可写,文件不存在也会报错,写操作时会覆盖

w+ 可读,可写,文件不存在先创建,会覆盖

a+ :可读、可写,文件不存在先创建,不会覆盖,追加在末尾

python中生成随机整数、随机小数、0--1之间小数方法

随机整数:random.randint(a,b),生成区间内的整数

随机小数:习惯用numpy库,利用np.random.randn(5)生成5个随机小数

0-1随机小数:random.random(),括号中不传参

Python中类方法、类实例方法、静态方法有何区别?

类方法: 是类对象的方法,在定义时需要在上方使用 @classmethod 进行装饰,形参为cls,表示类对象,类对象和实例对象都可调用

类实例方法: 是类实例化对象的方法,只有实例对象可以调用,形参为self,指代对象本身;

静态方法: 是一个任意函数,在其上方使用 @staticmethod 进行装饰,可以用对象直接调用,静态方法实际上跟该类没有太大关系

ascii、unicode、utf-8、gbk 区别?

ASCII码:使用一个字节编码,所以它的范围基本是只有英文字母、数字和一些特殊符号 ,只有256个字符;

Unicode:能够表示全世界所有的字节;

GBK:是只用来编码汉字的,GBK全称《汉字内码扩展规范》,使用双字节编码;

UTF-8:是一种针对Unicode的可变长度字符编码,又称万国码。

is和==有什么区别?

 is:比较的是两个对象的id值是否相等,也就是比较俩对象是否为同一个实例对象。是否指向同一个内存地址

== : 比较的两个对象的内容/值是否相等,默认会调用对象的eq()方法

django分为哪些模块,底层逻辑是什么?

对于Django框架遵循MVC设计,并且有一个专有的名词:MVT

M全拼为Model,与MVC中的M功能相同,负责数据处理,内嵌了ORM框架

V全拼为View,与MVC中的C功能相同,接收HttpRequest,业务处理,返回HttpReponse

T全拼为Template,与MVC中的V功能相同,负责封装构造要返回的html,内嵌了模板引擎

除了使用过django还用过哪些框架?

跨域请求问题django怎么解决的(原理)

启用中间件

post请求

验证码

表单中添加{%csrf_token%}标签

ngnix的正向代理与反向代理?

正向代理 是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。

反向代理正好相反,对于客户端而言它就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的命名空间中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端,就像这些内容原本就是它自己的一样。

 uWSGI 是一个 Web 服务器,它实现了 WSGI 协议、uwsgi、http 等协议。注意 uwsgi 是一种通信协议,而 uWSGI 是实现 uwsgi 协议和 WSGI 协议的 Web 服务器。uWSGI 具有超快的性能、低内存占用和多 app 管理等优点,并且搭配着 Nginx

django请求的生命周期?

(1.wsgi,请求封装后交给web框架 (Flask、Django)

(2.中间件,对请求进行校验或在请求对象中添加其他相关数据,例如:csrf、request.session -

(3.路由匹配 根据浏览器发送的不同url去匹配不同的视图函数

(4.视图函数,在视图函数中进行业务逻辑的处理,可能涉及到:orm、templates => 渲染 -

(5.中间件,对响应的数据进行处理。

(6.wsgi,将响应的内容发送给浏览器

AJAX是什么,如何使用AJAX?

ajax(异步的javascript 和xml) 能够刷新局部网页数据而不是重新加载整个网页。

第一步,创建xmlhttprequest对象,var xmlhttp =new XMLHttpRequest();XMLHttpRequest对象用来和服务器交换数据。

第二步,使用xmlhttprequest对象的open()和send()方法发送资源请求给服务器。

第三步,使用xmlhttprequest对象的responseText或responseXML属性获得服务器的响应。

第四步,onreadystatechange函数,当发送请求到服务器,我们想要服务器响应执行一些功能就需要使用onreadystatechange函数,每次xmlhttprequest对象的readyState发生改变都会触发onreadystatechange函数。

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