前面几天去准备面试了,准备了好几天的测试相关的面试题、笔试题。结果当天笔试题全部都是 python 的知识,没有一点测试相关,本来编程就不行,到现在为止在职学习了 1 个月 python,也没 coding 几道题,能做出来才是怪事,岗位是 “测试”,结果找 “开发”。可能因为是小厂的原因,想花小钱找全方面人才,但是写 “测试开发” 也比写 “测试” 好,这样就不会浪费双方的时间,算了接着总结学习
问:如何写测试用例,举一个平时测试中的测试用例设计过程
答:
1、测试人员尽早介入,彻底理解需求,这是写好测试的前提。2、如果以前有类似的需求,可以参考类似需求的测试用例,然后还需要分析类似需求的 bug 情况。3、清楚输入、输出的各种可能性,以及各种输入之间的关联关系,理解清楚需求的执行逻辑,通过等价类、边界值、判定表等方法找出大部分用例。4、找到需求相关的一些特性,补充测试用例。5、根据自己的经验分析遗漏的测试场景。6、多总结类似功能点的测试点,才能够写出质量越来越高的测试用例。7、书写格式一定要清晰
平时写测试用例设计过程:根据需求文档分析产品定位和使用场景,并绘制出相关组网图;确定测试过程中需要使用的硬件设备及辅助设备清单;如果非第一轮测试需要分析前一轮测试中 bug 分布情况,划分出板块成熟度,计划好测试重点,如果是第一轮测试需要做好板块划分,非特殊说明情况下测试权重一致;设计测试方法,根据所负责的模块将每一块功能都按功能测试、压力测试、性能测试、异常测试、组合测试等模块进行分析;根据不同模块的测试设计分配时间;分析测试中可能出现的不足;根据测试设计从测试编号、测试模块、测试步骤、预期结果等几个方面编写测试点
问:python 数据结构有哪些,list、tuple、dict、set 的本质与区别
答:
python 中数据结构有 7 种:数字类型、字符串类型、列表、元组、字典、集合、布尔
list:list 的本质是顺序表,只不过每次的扩容都是指数级的,所以动态增删数据时,并不会频繁改变物理结构,同时受益于顺序表遍历的高效性(通过角标配合表头物理地址,计算目标元素的位置),是的 python 的 list 综合性能比较优秀。
tuple:本质上也是顺序表,且不可修改不可扩容,只读
dict:本质上是顺序表,不过每个元素存储位置的角标不是由插入顺序决定的,而是由 key 经过 hash 算法和其他机制,动态生成的,即 key 通过 hash 散列,生成 value 应该存储的位置,然后再去存储这个 value。所以 dic 的查询时间复杂度为 o(1),因此 dict 的 key 只能为可 hash 的对象及不可变类型
set 实现列表去重:本质上通过hash和eq来实现对每个元素的 hash 散列,判断 hash 值是否一致,一致的化,判断对象是否具有一模一样的方法和属性,如果都一致则去重
问:请你说一下 vector 特性
答:
vector 的特点是:其容量再需要时可以自动分配,可以再运行时高效地添加元素,本质上时数组形式的存储方式。即索引可以再常数时间内完成,缺点是再插入或者删除一项时,需要线性时间,但是再尾部插入或者删除,是常数时间的。
linux 开发过程中常用到的一个功能 -- 列表显示,如何将中心数据进行列表显示,这里用到了 vector 容器,从中心获取的数据通过 tector 容器传输给站点程序从而实现批量数据的传输。vector 容器常用的函数包括:
问:请回答一下 http 用的什么连接
答:
在 http/1.0 中,默认使用的是短链接。也就是说,浏览器和服务器每进行一次 http 操作就建立一次连接,但任务结束就中断。如果客户端浏览器访问的某个 HTML 或其他类型的 web 页中包含有其他的 web 资源,如 javascript 文件、图像文件、CSS 文件等;当浏览器每遇到这样一个 web 资源,就会建立一个 http 会话。
但从 http/1.1 开始,默认使用长连接,用以保持连接特性。使用长连接的 http 协议会在响应头有加入这行代码:Connection:keep-alive
在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输 http 数据的 TCP 连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接。keep-alive 不会永远保持连接,它有一个保持时间,可以在不同的服务器软件(如 Apache)中设定这个时间,实现长连接要客户端和服务端都支持长连接
问:请你说一下 sql 左连接以及使用场景
答:
left join(左连接)返回包括 left outer 子句中指定的左表的所有行,而不仅仅是连接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表所有选择列表列均为空值。使用场景:可以保持左表完整加入另一个表中的数据
问:说一下你在项目自动化测试中,给出步骤后,如何用 Jmeter 构建相关 http 请求,以及其中必不可少的部分有哪些
答:
1、打开 Jmeter 后,创建一个线程组
2、在线程组中,创建将你所需要的 http 请求
3、再添加 http 头和 cookie
4、为了方便看运行结果,添加查看树和汇总报告
5、编辑你所需要下发的 http 请求(以 post 为例)
6、cookie 和 header 都可以通过 f12 查看,然后填入相应的配置元件中
总体来说,通过网络 F12 下获取 http 相关信息后,手动自己添加脚本就是以上步骤,可能中间会遇到很多问题,然后测试项目不同可能操作也不同,这个就根据自己的项目如何做的回答就行
问:leecode 7 easy
答:
'''
输入一个32位的有符号整数,要求输出反转后的结果,
示例:
输入123,输出321;输入-123,输出321;输入120,输出21
超过-2**31和2**31-1的部分返回0
'''
class IntReverse():
def int_Reverse(self,num):
self.num = num
list_num = list(self.num)
if list_num[0] == '-':
res = int(''.join(list_num[1:][::-1])) *(-1)
else:
res = int(''.join(list_num[::-1]))
if res<pow(-2,31) or res>pow(2,31)-1:
return 0
return res
if __name__ == '__main__':
Ireverse = IntReverse()
num = input('请输入需要反转的整数:')
res = Ireverse.int_Reverse(num)
print(res)
问:暂无
答:
ABCDE