1)怎么对算法模型进行测试?
(1)如何针对某个具体算法本身,就要测试正确性(是否正确运行),可用性(高内聚,低耦合),可读性(简单,逻辑结构清楚),效率(算法复杂性分析),健壮性(异常处理)
(2)基本图像处理算法结果评价:参考图像质量评价方法,这个有做图像处理的研究人员研究,主要包含:主观评价方法(在特定环境下,观察者根据国际标准ITU-T Rec.P.910,打分评级);
客观评价方法(根据一些人眼主观视觉数学模型,如均方误差,信噪比数学方法等)
(3)图像中与计算机视觉有关,这个就需要知道光学模型及一些图像分析样本库进行模型测试。
(4)计算机图形相关,这个是人构造的结果,与计算几何模型和主观预期咯
2)list和set区别?
Java中的集合共包含三大类,它们分别是Set(集),List(列表)以及Map(映射)
(1)重复对象国:ist方法可以允许重复的对象,而set方法不允许重复对象。
(2)null元素:list可以插入多个null元素,而set只允许插入一个null元素。
(3)容器是否有序:list是一个有序的容器,而set方法是无序容器。
(4)常用的实现类:list方法与set方法实现类不同,List适合经常追加数据,插入,删除数据,但随机取数效率比较低。Set适合经常地随机储存,插入,删除,但是在遍历时效率比较低
3)MySQL索引的优缺点?
索引相当于图书上的目录快速找到所需的内容,提高性能(查询速度)
优点: (1)索引大大减少了服务器需要扫描的数据量。
(2)索引可以帮助服务器避免排序和临时表
(3)索引可以将随机IO变为顺序IO
缺点: (1)创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。
(2)索引需要占用物理空间,数据量越大,占用空间越大
(3)会降低表的增删改的效率,因为每次增删改索引,都需要进行动态维护
4)Q:微博发动态,设计一下测试点?
功能测试:发刷删动态(边界值)
性能测试:热搜性能、接口性能
兼容测试:不能机型设备、版本
风控:反黄
5)Q:对一台自动售货机进行测试用例设计(因果图)
功能测试:商品陈放、出货、结算、统计
易用性测试:出货是否及时
异常测试:断电提醒、缺货提醒、失败退钱、次数
6)Q:设计微信发红包测试用例
7)Q:设计抖音直播功能测试用例
后台的测试,譬如:审核后台、监控平台、数据中台 等等
8)Q:微信红包是先计算每个人能获得的钱还是当这个人点了再计算?
目的:预先算好每个人获得的钱,会占用大量存储空间,而采用红包算法进行纯内存计算,不需要预算空间存储,节约成本。
9)哪些线程是安全的?
线程安全:就是当多线程访问时,采用了加锁的机制;线程安全(Thread-safe)的集合对象:
Vector
HashTable
StringBuffer
10)4.ArrayList和LinkegList的区别?
1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构
11)sql注入是什么?
是把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,常用的数据库攻击手段
12)应用层哪些协议是基于udp,哪些基于tcp?
1.基于TCP的应用层协议有:HTTP、FTP、SMTP、TELNET、SSH
2.基于UDP的应用层协议:DNS、TFTP、SNMP
13)快速排序法
14)常用的数据结构有:数组,栈,链表,队列,树,图,堆,散列表等
15)哪些点可以提高测试效率?
测试的准备工作:用例评审的效率:合理的详细的测试计划\需求分析尽量发现设计缺陷、减少测试版本送测次数
用例设计的效率。 比如需求不稳定、不清晰、或者业务逻辑本身就比较复杂等。
用例评审的效率。 其他人员不熟悉业务,导致评审效率和质量很低,沟通成本很高。
用例执行的效率。 比如测试计划制定的不合理,对测试覆盖的不合理偏执追求。 缺少必要的自动化测试。
善于用测试工具
实现测试自动化
提高测试人员的专业技能和工作能力
16)自动化衡量标准是什么?
有覆盖率,通过率,执行时间和执行效率
17)自动化遇到过规避错误的问题?
自动化的时候是自己构建数据写数据,然后验证,数据容错处理。
18)说一下接口自动化是怎么做的?一共写了多少个接口,效果怎么样?
步骤:1、用来封装HTTPclient,发送请求
2、解析结果xml的类
3、用于比较测试结果和期望值的类,验证结果
4、自动生成报告的类:自动发送报告之类的
19)公司晋升机制:
工程师->高级工程师->专家工程师(leader)->高级专家工程师(测试经理)->架构师->高级架构师。
20)requests方法中data与json参数区别?
1.使用json参数,不管报文是str类型,还是dict类型,如果不指定headers中content-type的类型,默认application/json
2.使用data参数,报文是dict类型,如果不指定headers中content-type的类型,默认application/x-www-form-urlencoded
3.使用data参数,报文是str类型,如果不指定headers中content-type的类型,默认application/json
4.参数提交数据形式不同
21)内存溢出是什么?怎么解决?
内存泄漏的累计会导致内存减少,最终会导致内存溢出
是指程序运行所需要的内存超过了系统剩余的内存
解决:
(1)修改JVM启动参数,直接增加内存
(2)对代码进行走查和分析
(3)检查对数据库查询中,是否有一次获得全部数据的查询
22)数据库连接查询分几类,分别为什么?
内连接:等值连接=、自然连接=、不等连接<=
外连接:LEFT JOIN、RIGHT JOIN 、FULL JOIN返回查询结果 WHERE 搜索条件或 HAVING 条件)和连接条件 的行
交叉连接:CROSS JOIN不带WHERE 子句
23)python中的列表和元组都有哪些区别?
1)列表是动态的,长度大小不固定,可以随意的增加、删除、修改元素
2)元组是静态的,长度在初始化的时候就已经确定不能更改,更无法增加、删除、修改元素
24)Python与Java的equals和==的区别?
java里边,
a==b是比较两个引用对象
a.equals(b)是比较两者的值
在python里边
a==b是比较两者的值
a is b是比较两个引用对象
25)http和https区别?
1、HTTPS 协议需要到 CA 申请证书
2、HTTP 是超文本传输协议,信息是明文传输,HTTPS 则是具有安全性的 SSL 加密传输协议。
3、HTTP 和 HTTPS 使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4、HTTP 的连接很简单,是无状态的。
26)项目负责的模块?遇到什么问题?怎么解决?
27)进程与线程的区别?
(1)调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位
(2)并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行
(3)拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源.
(4)系统开销:在创建或撤消进程时,由于系统都要为之分配和回收资源,导致系统的开销明显大于创建或撤消线程时的开销。
多进程是指操作系统能同时运行多个任务(程序)。
多线程是指在同一程序中有多个顺序流在执行。
28)数组与链表的优缺点
数组:插入和删除效率低、可能浪费内存、内存空间要求高、数组大小固定,不能动态拓展。
链表:插入删除速度快、内存利用率高,不会浪费内存、大小没有固定,拓展很灵活、不能随机查找,必须从第一个开始遍历,查找效率低
29)列表和字典有什么区别?
答: 一般都是问列表和元组有什么不同。
(1)获取元素的方式不同。列表通过索引值获取,字典通过键获取。
(2)数据结构和算法不同。字典是 hash 算法,搜索的速度特别快。
(3)占用的内存不同。
30)从文件中读取关键词进行搜索,默认是显示的是行?
cat test.txt | grep -nf test2.txt
31)匹配到需要展示的字符串?
grep -o "you" ab.log
32)文件中查找需要的关键词忽略大小写?
grep -i 'linux' test.txt
33)排除某个关键词进行查询?
ps aux | grep ssh | grep -v "grep"
34)查找与g重复的字符串?
grep -n 'g.*g' regular_express.txt
35)接口验证涉及:数据库与接口
接口验证除了要验证接口的返回,有时候还要同时验证数据库的数据,或者将接口返回的数据与数据库的数据做对比,检验数据的正确性,增删改查数据。
安装node.js和xmysql,实现Postman与数据库的连接 postman接口自动化测试之利用node.js和xmysql连接、操作数据库 - 测试开发喵
36)seleunim常用的一些包:
1、测试框架 TestCase :import unittest
2、判断条件 :from selenium.webdriver.support import expected_conditions as EC
3、下拉框 :from selenium.webdriver.support.select import Select
4、滚动条 :WebDriver类库中并没有直接提供对滚动条进行操作方法,但是它提供了可调用JavaScript脚本的方法
5、发送邮件 :import win32com.client as win32
6、测试报告--自带:import HTMLTestRunner
7、引用mysql:import MySQLdb
37)自动化环境架构
python3.6.5+pycharm2018.1.3社区版+unittest+selenium3.141.0
38)性能方面主要包含哪些关键点?
1.单用户登录的相应时间小于3s;
2.高并发场景下用户登录的相应时间小于5s;
3.单登录时,后台请求数量是否过多;
4.高并发场景下,是否存在资源死锁或不合理资源等待情况;
5.长时间大量用户连续登录、退出,服务端是否存在内存泄漏;
40)安全性方面主要包含哪些关键点?
1.用户名、密码在后台存储是否加密;
2.密码在网络传输过程中是否加密;
3.密码是否具有有效期,到期是否会提示重新设置密码;
4.不登录情况下,在浏览器输入url,验证是否会重定向到用户登录页面;
5.密码是否支持复制、粘贴;
6.密码是否可以在页面源码直接查看;
7.连续多次登录失败时,系统是否会阻止后续的尝试,以应对暴力破解
8.同一用户在同一终端的多种浏览器登录,验证互斥性是否符合需求;
9.同一用户在不同终端的浏览器登录,验证互斥性是否符合需求
41)产品常用测试的几个阶段?
DT单元测试--集成测试--系统测试--回归测试--验收测试
集成(迭代交付)---系统(全特性)---回归(bugfix测试)---验收(资料、Bata局)
42)测试方如何推动和保证用户验收测试的效果?
用户验收测试的目的是保证上线的产品是用户真正想要的产品。
1、选择合适的时间点:系统测试完成、测试遍历完、评审完成。
2、选择合适的方式
3、如何有力的支持用户
4、简化验收标准
43)测试人员的发展路线?
1、软件测试技术路线--- 从初级测试工程师到中级测试工程师、高级测试工程师、资深测试工程师
这个是我们多数人的发展路线,里面包括了性能、自动化、安全等。性能测试是一个比较好的途径,相比自动化编码要求没那么低,但需要比较广的知识和分析能力。这个也是行业中最缺少的。
2、软件测试管理路线--- 初级测试工程师、测试组长、测试经理
一般外向、健谈的人,人际关系处理能力好的,并且有一定技术能力的人比较合适。
3、软件质量保证路线--- 初级测试工程师、质量保证人员、质量管理人员
这个是比较偏重流程优化管理方面的,同时去协调各个部门,优化整体的研发流程。这个在国内还是比较少的。
4、软件开发技术路线--- 初级测试开发工程师、中级测试开发工程师、高级测试开发工程师
这个需要有编码功底,或者你喜爱编码,那些多编码极其反感的童鞋我建议还是放弃这条路线。
44)linux命令,找出关键字出现的次数
语法:grep 字符串 文件名|wc -l ,grep输出,wc -l按行统计
45)APP是用多进程安全还是用多线程安全?
多线程程序只要有一个线程死掉,整个进程也死掉了,而一个进程死掉并不会对另外一个进程造成影响,因为进程有自己独立的地址空间。
46)关系型数据库有哪些?
Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL
47)MySQL中char、varchar和text三者的区别?
1、都可以用来存储字符类型的数据。
2、char、varchar都可以指定最大的字符长度,但text不可以。
3、数据的检索效率是:char > varchar > text。
48)App测试和Web测试的区别?
1、web和app的区别
web项目,一般都是b/s架构,基于浏览器的。
App则是C/S的,必须要有客户端。那么在系统测试测试的时候就会产生区别了。
2、性能方面区别
web页面可能只会关注响应时间。
App则还需要关心流量、电量、CPU、GPU、Memory这些了。
3、兼容方面
Web是基于浏览器的,所以更倾向于浏览器和电脑硬件,电脑系统的方向的兼容,不过一般还是以浏览器的为主。而浏览器的兼容则是一般是选择不同的浏览器内核进行测试(IE、chrome、Firefox)。
App的测试则必须依赖phone或者是pad,不仅要看分辨率,屏幕尺寸,还要看设备系统。系统总的来说也就分为Android和iOS,不过国内的Android的定制系统太多,也是比较容易出现问题的。
49)设计用例的方法、依据有那些?
1、白盒测试用例设计有如下方法:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。依据就是代码结构。
2、黑盒测试用例设计方法:基于用户需求的测试、等价类划分方法、边界值分析方法、错误推测方法、因果图方法、判定表驱动分析方法、正交实验法、场景法。依据是用户需求规格说明书,详细设计说明书。
50)软件测试的流程?
测试流程:了解用户需求-->参考需求规格说明书-->测试计划(人力物力时间进度的安排)-->编写测试用例-->评审用例-->搭建环境-->测试包安排预测(冒烟测试)-正式测试-bug-测试结束出报告-->版本上线-->面向用户
51)网页很卡的原因?
1、带宽不足、硬件配置低、CPU或者是内存被占满。
2、http请求次数太多。
3、接收数据时间过长,如下载资源过大。
4、JS脚本过大,阻塞了页面的加载。
5、网页资源过多、接受数据时间长、加载某个资源慢。
6、DNS解析速度。
52)单元测试、集成测试、系统测试区别?
1、粒度不同:
单元测试粒度最小,集成测试粒度居中,系统测试粒度最大。
2、测试方式不同:
单元测试一般由开发小组采用白盒方式来测试,集成测试一般由开发小组采用白盒加黑盒的方式来测试,系统测试一般由独立测试小组采用黑盒方式来测试。
3、测试内容不同:
单元测试主要测试单元是否符合“设计”,集成测试既验证“设计”,又验证“需求”,系统测试主要测试系统是否符合“需求规格说明书”。
4、使用阶段不同:
单元测试为开发人员在开发阶段要做的事情,集成测试和系统测试为测试人员在测试周期内级层做的工作。
54)并发和并行区别?
并行(parallel):指在同一时刻,有多条指令在多个处理器上同时执行。所以无论从微观还是从宏观来看,二者都是一起执行的。
并发(concurrency):指在同一时刻只能有一条指令执行,但多个进程指令被快速的轮换执行,使得在宏观上具有多个进程同时执行的效果,但在微观上并不是同时执行的,只是把时间分成若干段,使多个进程快速交替的执行。
55)网络七层有哪些?tcp,udp,arp,TCP/IP都在哪一层 http,tcp,ip协议
56)http请求方式有哪些?GET、POST、HEAD、PUT、DELETE、CONNECT、OPTIONS、TRACE。
57)常见的状态码:502 网关错误 (Bad gateway)、504 Gateway Time-out。