软件面试题集锦

1.http与https的区别
答:
(1)
http的中文叫做超文本传输协议,它负责客户端到服务端的一系列操作,是专门用来传输注入HTML的超媒体文档等web内容协议,它是基于传输层的TCP协议的应用层协议
https是基于安全套接字的http协议,是http协议的升级版本,可以理解为是http+ssl/tls(数字证书)的组合
(2)
http安全性较低,http协议以明文方式发送内容,没有对数据进行加密,传输过程中可以直接读取报文内容,所以不适合传输一些敏感数据
https安全性较高,为了数据传输安全性,https在http基础上加了SSL协议,SSL协议依靠证书验证服务器身份,并为客户端与服务点之间数据传输进行加密
(3)
http标准端口80,https标准端口443
(4)
http是网上应用比较广泛的网络协议,它可以使浏览器更加高效,使网络传输减少
https虽然安全性高,但是https网络协议会使页面加载时间延长,增加内存、数据、资源的功耗,成本较高
所以在协议选择时需要结合项目的实际背景,选着适合自己的才是最好的
2.http有哪些请求方法,get与post之间的区别
答:
(1)http有两种常用请求方法:get()从服务器获取资源    post()客户端向服务器提交资源
(2)
get:一般用于信息获取,使用url进行参数传递(参数包含在url一起请求),对发送信息和数量有限制,一般在2000个字符,get使用request.querystring来获取变量值
post:一般用于修改服务器上的资源,对发送信息和数量没有限制,post使用request.from来获取变量值
(3)
get只能url编码,而post支持多种编码方式
get请求会被保留在浏览器历史中,而post不会
get请求长度有限,post无限
get参数数据类型只接受ASCLL字符,而post没有限制
get没有post安全,get参数显示在url中,不能传输敏感信息
3. tcp/ip建立链接三次握手,关闭链接四次挥手
答:
(1)tcp时传输控制协议,是一种可靠的传输层协议,ip协议号为6
(2)三次握手:客户端与服务端
第一次握手:客户端A发送建立TCP链接的请求报文,报文中包含seq序列号,是由发送端随机生成的,并且还将报文总syn置为1,表示需要建立TCP链接请求
第二次握手:服务端B回复A发送的TCP请求,其中包含seq序列号,也是由服务端随机生成的,并且将回复报文的syn字段置1,而且会产生ACK验证字段,ACK验证字段数值是在A发过来的seq序列号基础上加1进行回复;
并且还会回复ack确认控制字段,以便A收到信息时,知道自己的TCP建立请求已得到确认
第三次握手:A端收到B端发送的TCP建立请求后,会使自己的原有序号加1进行再次发送序列号,并且再次回复ACK验证请求,在B端发送过来的seq基础上加1,进行回复;同事也会回复ack确认控制字段,以便B收到
信息时,知晓自己的TCP建立请求已经得到确认。
(3)四次挥手:
第一次:服务端向客户端发送FIN和ACK位置1的TCP报文段
第二次:客户端向服务器返回ACK位置1的TCP报文段
第三次:客户端向服务器发送FIN和ACK位置1的TCP报文段
第四次:服务端向客户端返回ACK位置1的TCP报文段
4. 悲观锁和乐观锁
(1)乐观锁是指对数据更改时持乐观状态,它认为临界区不会发生重复,持有数据更改版本号,只有在数据提交时候验证版本号,如果有冲突则回滚事务,不冲突则提交数据
mysql中表种都有ver版本号字段,数据更新了自增这个字段,在提交时校验如果ver一直没变则更新数据,如果ver变了则放弃更新。
(2)悲观锁对数据的更改持悲观状态,认为每次执行都会造成冲突,每次都会上锁保护临界区,别人想拿这个数据就会阻止直到它拿到锁(共享资源每次只给一个线程使用,其他线程阻塞,用完后再把资源转让给其他线程)。
数据库中的表锁、行锁、排它锁属于悲观锁,大部分用的锁都是悲观锁
悲观锁的好处:保障不会发生并发执行,数据操作效率高。
悲观锁的坏处:影响并发量,可能产生死锁
5. 左连接、右连接、内链接和全连接区别
答:
(1)left join......on        左链接:返回包括左表中的所有记录和右表中连接字段相等的记录
(2)right join......on      右链接:返回包括右表中的所有记录和左表中连接字段相等的记录
(3)inner join......on      内链接:只返回两个表中连接字段相等的行
(4)full join......on        全外链接:返回左右表中所有的记录和左右表中连接字段相等的记录
6.数据库中sum和count之间的区别
答:
(1)sum是对符合条件的记录数据求和
(2)count是对查询符合条件结果的个数
7.软件测试流程
答:
(1)软件测试流程需要根据公司的开发模式匹配制定,可以局部调整
需求分析--需求评审--需求概要测试--制定测试计划--编写测试用例--用例评审--搭建测试环境--冒烟测试--系统测试--回归测试--测试报告--版本上线
8. 软件测试方法有哪些,软件测试种类有哪些
黑盒测试
(1)定义:黑盒测试即不关程序内部实现逻辑,根据输入得出正确的输出即可
(2)黑盒测试优缺点:
优点:容易实施,不需要关注内部程序的实现;贴近用户的实用角度
缺点:测试覆盖率较低,一般只能覆盖到代码的40%;针对黑盒的自动化测试,复用率低,维护成本较高
(3)黑盒测试主要内容:
a:是否有不正确或遗漏的功能
b:在接口上,输入是否能正确接收,能否输出正确的结果
c:是否有数据结构错误或外部信息访问错误
d:性能上是否能够满足要求
(4)黑盒测试的主要设计方法:
等价类划分法、边界值分析法、错误推断法、因果图法、随机测试、场景法、正交试分析法、状态迁移图法、流程分析法
白盒测试
(1)定义:根据输入走代码逻辑输出,每个逻辑分支都覆盖到
(2)主要逻辑单位:
语句、条件、条件组合、分支、路径
(3)白盒测试的优缺点
优点:
a:迫使测试人员去仔细思考软件的实现,理解原理
b:可以检测代码中的每条分支和路径
c:揭示隐藏在代码中问题
d:对代码的测试比较彻底
缺点:
a:代价有些高,需要测试人员编程能力
b:无法检测代码中遗漏的路径和数据敏感性错误
c:不能直接验证需求的正确性
(4)白盒测试的主要设计方法: 逻辑覆盖、循环覆盖、基本路径覆盖
灰盒测试:
(1)定义:介于黑、白盒测试之间,关注输出对于输入的正确性,同时也关注内部表现
静态测试:
(1)定义:静态测试是指无需执行被测程序,而是通过评审软件文档或代码,度量程序静态复杂度,检查软件是否符合编程标准,借以发现编写的程序的不足之处,减少错误率的出现
动态测试:
(1)定义:动态测试是通过运行被测程序(试运行一段时间),检查运行结果和预期结果的差异,并分析运行效率,正确性、健壮性。
手工测试:
(1)定义:由专门的测试人员从用户角度来体验软件是否满足设计要求的行为。
自动化测试:
(1)使用单独的测试工具软件控制测试的自动化执行以及对预期和结果进行自动检查
手动测试与自动化测试区别:
(1)手工测试:
易发现缺陷、容易实施、创造性、灵活性
覆盖量化难、重复测试效率低、不一致性、可靠性低、人力资源依赖
(2)自动化测试:
高效率、速度快、高复用性、覆盖率容易度量、准确、可靠、不知疲劳
机械、发现缺陷率低、一次性投入较大
9.测试计划包含哪些内容,测试计划强调做什么、测试方案强调怎么做
测试目的、背景、测试范围、测试开始结束时间、测试策略、测试人员安排、测试环境、风险评估
10. 测试方案包含哪些内容(测试计划内容与测试方案内容类似)
(1)概要:文档背景、测试目的、测试内容、测试环境描述(软件、硬件、网络)
(2)组织机构:角色与职责、培训和测试工具
(3)测试进度排期表
(4)测试流程:测试类型、测试方法、测试关键过程域(测试计划、测试用例、测试环境准备、测试执行、测试报告)、验收标准
(5)风险与问题
11.什么是测试用例、什么是测试脚本,两者有什么关系
(1)测试用例是为被测程序编制的一组测试输入、执行条件、步骤、预期结果,以便测试某个程序路径或核实是否满足某个特定需求,将测试行为转化成可管理的模式。
(2)测试脚本是为了自动化或性能测试而编写的脚本,测试脚本的编写必须对应相应的测试用例
(3)关系:为实时测试而向被测系统提供输入数据、操作、环境设置、期望结果的一个特定集合。
12、软件产品质量特性是什么?
功能性:适应性、准确性、互操作性、依从性、安全性。
可靠性:成熟性、容错性、易恢复性。
可使用性:易理解性、易学习性、易操作性。
效率:时间特性、资源特性。
可维护性:易分析性、易变更性、稳定性、易测试性。
可移植性: 适应性、易安装性、遵循性、易替换性
13、测试人员在软件开发过程中的任务是什么?
(1)尽可能早的找出系统中的Bug;
(2)避免软件开发过程中缺陷的出现;
(3)衡量软件的品质,保证系统的质量;
(4关注用户的需求,并保证系统符合用户需求。
总的目标是:确保软件的质量
14.一条软件缺陷包含哪些内容:
版本号、被指派人、bug编号、bug类型、bug标题、bug严重等级、bug优先级、步骤、实际结果、预期结果、截图、录屏
15.什么是软件测试?软件测试的目的与原则
在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。
软件测试的目的:
测试是程序的执行过程,目的在于发现错误;
一个成功的测试用例在于发现至今未发现的错误;
一个成功的测试是发现了至今未发现的错误的测试;
确保产品完成了它所承诺或公布的功能,并且用户可以访问到的功能都有明确的书面说明;
确保产品满足性能和效率的要求;
确保产品是健壮的和适应用户环境的
软件测试的原则:
测试用例中一个必须部分是对预期输出或接过进行定义;
程序员应避免测试自己编写的程序;
编写软件的组织不应当测试自己编写的软件;
应当彻底检查每个测试的执行结果;
测试用例的编写不仅应当根据有效和预料到的输入情况,而且也应当根据无效和未预料到的输入情况;
检擦程序是否“未做其应该做的”仅是测试的一半,测试的另一半是检查程序是否“做了其不应该做的”;
应避免测试用例用后即弃,除非软件本身就是个一次性的软件;
计划测试工作时不应默许假定不会发现错误;
程序某部分存在更多错误的可能性,与该部分已经发现错误的数量成正比;
软件测试是一项极富创造性,极具智力的挑战性的工作
16.问:给你一个网站,你如何测试?
首先,查找需求说明、网站设计等相关文档,分析测试需求。
制定测试计划,确定测试范围和测试策略,一般包括以下几个部分:功能性测试;界面测试;性能测试;数据库测试;安全性测试;兼容性测试
设计测试用例:
功能性测试可以包括,但不限于以下几个方面:
链接测试。链接是否正确跳转,是否存在空页面和无效页面,是否有不正确的出错信息返回。
提交功能的测试。
多媒体元素是否可以正确加载和显示。
多语言支持是否能够正确显示选择的语言等。
界面测试可以包括但不限于一下几个方面:
页面是否风格统一,美观
页面布局是否合理,重点内容和热点内容是否突出
控件是否正常使用
对于必须但未安装的控件,是否提供自动下载并安装的功能
文字检查
性能测试一般从以下两个方面考虑:
压力测试;负载测试;强度测试
数据库测试要具体决定是否需要开展。数据库一般需要考虑连结性,对数据的存取操作,数据内容的验证等方面。
安全性测试:
基本的登录功能的检查
是否存在溢出错误,导致系统崩溃或者权限泄露
相关开发语言的常见安全性问题检查,例如SQL注入等
如果需要高级的安全性测试,确定获得专业安全公司的帮助,外包测试,或者获取支持
兼容性测试,根据需求说明的内容,确定支持的平台组合:
浏览器的兼容性;
操作系统的兼容性;
软件平台的兼容性;
数据库的兼容性
开展测试,并记录缺陷。合理的安排调整测试进度,提前获取测试所需的资源,建立管理体系(例如,需求变更、风险、配置、测试文档、缺陷报告、人力资源等内容)。
定期评审,对测试进行评估和总结,调整测试的内容。
 
测试技术点:SQL、接口、app、jmeter、python+selenium、linux命令、fiddler、pytest、jenkins、协议
 
 
17.通过ADB命令实现APP的安装、卸载、覆盖
(1)ADB全称: Android Debug Bridge,ADB是我们用来调试android设备的一套指令集
通过shell操作android操作系统,android与IDE需要通过ADB来桥接
连接Android设备:
adb connect   android设备的ip地址;
例:adb连接指令:adb connect 192.168.2.111
安卓APK:
adb install *.apk  安卓apk文件(必须保存和adb同目录,*为apk文件名称),简单的方法直接将APK拖拽到cmd命令行屏幕,就可以出现地址了;
adb安装指令:adb install C:\Users\AllenJ\Desktop\线上\xiaomi_online.apk
卸载APK:
adb uninstall APK的包名
adb卸载指令: adb uninstall com.xiaomi.bussiness.store
显示当前连接的设备:
adb devices  
复制文件到手机:
adb push [需要推送的文件位置] [需要推送到手机的位置] ; 例:adb push C:\muzi.zip /sdcard 
重启设备:
adb reboot ;
重启设备到recovery模式:
adb reboot recovery ;
重启到bootloader模式:
adb reboot bootloader ;
覆盖低版本:
adb -r install xx.apk
覆盖高版本:
adb -r -d install      例: adb -r -d install C:\Users\AllenJ\Desktop\线上\xiaomi_highger.apk
18.web测试与app测试的区别
单纯从功能测试的层面上来讲的话,APP 测试、web 测试 在流程和功能测试上是没有区别的。 
(1)系统架构方面: 
web项目,一般都是b/s架构,基于浏览器的 
app项目,则是c/s的,必须要有客户端,用户需要安装客户端。 
web测试只要更新了服务器端,客户端就会同步会更新。App项目则需要客户端和服务器都更新。
(2)性能方面: 
web页面主要会关注响应时间 
而app则还需要关心流量、电量、CPU、GPU、Memory这些。 
它们服务端的性能没区别,都是一台服务器。
(3)兼容方面: 
web是基于浏览器的,所以更倾向于浏览器和电脑硬件,电脑系统的方向的兼容 
app测试则要看分辨率,屏幕尺寸,还要看设备系统。 
web测试是基于浏览器的所以不必考虑安装卸载。 
而app是客户端的,则必须测试安装、更新、卸载。除了常规的安装、更新、卸载还要考虑到异常场景。包括安装时的中断、弱网、安装后删除安装文件 
此外APP还有一些专项测试:如网络、适配性。。。
APP测试特点
(除了按需求说明书外的 功能测试 之外还需要进行如下测试)
1:适配性测试(也叫兼容性测试,不同的安卓版本,不同厂商,不同手机品牌)
2:不同网络测试 (2G网络/3G网络/4G网络/WIFI网络)
3:在线升级测试
4:中断测试(电话、短中消息打扰)
5:耗电量测试
6:弱网测试(信号差,信号屏蔽实验室)
7:安装卸载 (C/S)
8: 流量测试
19.如何进行接口测试
接口测试有哪些工具:postman、jmeter;WebService接口使用什么工具:webservice使用soapui
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

猜你喜欢

转载自www.cnblogs.com/zhahongli/p/11389568.html