测试用例 springcloud 工厂模式 layout camera gdb ios视频教程 js事件绑定 cmd查看mysql版本 map删除指定元素 android自定义控件 磁盘清理会误删东西吗 python如何注释 python安装mysql python配置 python中文手册 python匹配字符串 java方法重载 jdbc连接mysql java的map java中float java基本数据结构 java结束线程 java的集合 java格式化日期 java文件复制 销售单软件 js倒计时代码 pyh python队列 qq免安装版 dll之家 微信昵称找人的软件 ps反向选择的快捷键 相册制作工具 dnf传说 微信群群发软件 h5支付接口 微信昵称特殊符号 苹果手机怎么添加邮箱
当前位置: 首页 > 学习教程  > 编程语言

软件测试面试题集(含答案)

2021/1/28 22:57:29 文章标签:

软件测试面试题集 一、Bug基本要素 缺陷ID,状态,类型,所属项目,所属模块,缺陷提交时间,缺陷提交人(检测者),严重程度,优先级别,缺陷描述信息&…

软件测试面试题集
一、Bug基本要素
缺陷ID,状态,类型,所属项目,所属模块,缺陷提交时间,缺陷提交人(检测者),严重程度,优先级别,缺陷描述信息,测试步骤,测试前置条件,测试数据,期望结果,实际结果。
注:Bug严重级别(Severity,Bug级别):是指因缺陷引起的故障对软件产品的影响程度。
A- Crash 错误导致了死机、产品失败(“崩溃”)、系统悬挂无法操作;
比如:1.内存泄漏;2.严重的数值计算错误;3.系统容易崩溃;4.功能设计与需求严重不符;5.系统无法登陆;6.循坏报错,无法正常退出。
B- Major 系统的主要功能部分丧失、数据不能保存,系统的次要功能完全丧失。问题局限在本模块,导致模块功能失效或异常退出。如致命的错误声明,程序接口错误,数据库的表、业务规则、缺省值未加完整性等约束条件
C-Minor 次要功能没有完全实现但不影响使用。如提示信息不太准确,或用户界面差,操作时间长,模块功能部分失效等,打印内容、格式错误,删除操作未给出提示,数据库表中有过多的空字段等
D-Trivial 错误是表面化或微小的(提示信息不太准确友好、错别字、UI 布局或罕见故障等),对功能几乎没有影响,产品及属性仍可使用;
E-Nice to Have(建议) 建设性的意见或建议。

二、get和post的区别?
1、get请求通过URL传递,post通过request body进行传递;
2、get只能进行url编码方式,但是post可以进行多种编码方式;
3、get只接受ASCll数据类型,但是post没有限制;
4、get因为参数包含在url地址上,所以并不安全;
5、get对参数的传递有有限制的,但是post没有;
6、get的请求参数会被完整的保留在浏览器的历史记录里面,但是post不会;
7、GET产生一个TCP数据包;POST产生两个TCP数据包。

三、http和https的区别?
1、安全性不同
http是超文本传输协议,它是明文传输的,如果有人截取服务器与浏览器之间的协议,就可以知道传输的信息了,https有一个ssl加密协议,所以相对来说https是安全的。
2、端口号不同
http的端口号是80;
https的端口号是443。
3、申请方式不同
http申请是免费的;
https因为是ca申请证书所以是收费的,一般很少有免费的。
4、连接方式不同
http的连接很简单,是无状态的;
https是由ssl+https协议构建的的可进行加密传输,身份认证的网络协议。

四、我现在有个程序,发现在Windows上运行得很慢,怎么判别是程序存在问题还是软硬件系统存在问题?
1、检查系统是否有中毒的特征;
2、检查软件/硬件的配置是否符合软件的推荐标准;
3、确认当前的系统是否是独立,即没有对外提供什么消耗CPU资源的服务;
4、如果是C/S或者B/S结构的软件,需要检查是不是因为与服务器的连接有问题,或者访问有问题造成的;
5、在系统没有任何负载的情况下,查看性能监视器,确认应用程序对CPU/内存的访问情况。

五、列表和元组的区分?
1、元组和列表都属于序列;
2、列表属于可变序列,它的元素可以随时修改或者删除,而元组属于不可变序列,其中的元素是不能修改的,除非整体重新赋值;
3、列表可以使用多种方法实现添加和修改列表元素,而元组没有办法,因为不能在元组中添加或修改元素,同样也不能删除元素;
4、列表可以使用切片方法访问和修改列表中的元素,元组也支持切片,但是它只支持通过切片访问元组中的元素,不支持修改;
5、元组比列表中的访问和处理速度更快,所以如果只需要对其中的元素进行访问,而不进行任何修改,建议使用元组;
6、列表不能作为字典类型中的键,而元组是可以的。

六、数据库常用聚合函数?
1、计算记录的总数
SELECT COUNT(字段名) FROM 表名;
2、计算某列的和
SELECT SUM(字段名) FROM 表名;
3、查询字段的最大最小
SELECT MAX(字段名) FROM 表名;
SELECT MIN(字段名) FROM 表名;
4、排序
SELECT 字段1,字段2,字段3 … FROM 表名 ORDER BY 字段;

七、一个问题你认为是bug,但是开发人员认为不是,你如何处理?
1、将问题提交到缺陷管理库里面进行备案。
2、要获取判断的依据和标准:
根据需求说明书、产品说明、设计文档等,确认实际结果是否与计划有不一致的地方,提供缺陷是否确认的直接依据;
如果没有文档依据,可以根据类似软件的一般特性来说明是否存在不一致的地方,来确认是否是缺陷;
根据用户的一般使用习惯,来确认是否是缺陷;
3、与设计人员、开发人员和客户代表等相关人员探讨,确认是否是缺陷;
4、合理的论述,向测试经理说明自己的判断的理由,注意客观、严谨,不参杂个人情绪。
等待测试经理做出最终决定,如果仍然存在争议,可以通过公司政策所提供的渠道,向上级反映,并有上级做出决定。

八、如果你负责的项目线上出了bug,你怎么解决?
先了解bug发生的根源,看是我理解需求要偏差还是设计用例上有疏漏。如果需求理解有偏差看是需求描述是不是描述得不够准确,如果是的话可以和需求商量定一套比较规范的需求描述文档,看怎样才能把歧义降到最少;如果需求准确但我理解出了问题,那我下次梳理需求的时候会多问,多和需求讨论,争取每个需求都理解得很透彻;如果是设计用例上有疏漏,那我会考虑疏漏这个点的原因,并把这次疏漏的点记下来,避免下次再出现这样的问题。

九、缺陷的生命周期
在这里插入图片描述
十、纸杯测试?
1、功能度:用水杯装水看漏不漏;水能不能被喝到;
2、安全性:杯子有没有毒或细菌;
3、可靠性:杯子从不同高度落下的损坏程度;
4、可移植性:杯子在不同的地方、温度等环境下是否都可以正常使用;
5、兼容性:杯子是否能够容纳果汁、白水、酒精、汽油等;
6、易用性:杯子是否烫手、是否有防滑措施、是否方便饮用;
7、用户文档:使用手册是否对杯子的用法、限制、使用条件等有详细描述;
8、疲劳测试:将杯子盛上水(案例一)放24小时检查泄漏时间和情况;盛上汽油(案例二)放24小时检查泄漏时间和情况等;
9、压力测试:用根针并在针上面不断加重量,看压强多大时会穿透。

十一、如何测试一个App的登录场景?
1、页面基本元素的操作。
2、大量字符,特殊字符,边界值,必填项校验。
3、注册手机号的特殊性验证,注册邮箱的格式验证。
4、密码大小写是否敏感,密码是否加密展示,密码是否有可见按钮功能,密码框能否使用复制粘贴。
5、验证码校验:必填项,过期,错误,无网络时获取验证码,多次获取,超过获取次数,输入验证码后,修改手机号。
6、登陆时与系统的交互:锁屏,蓝牙,home,后退,横竖屏,修改字体字号。
7、逆向思维:已注册账号注册,未注册账号忘记密码,未注册账号登陆,注册过程中退出在次注册。
8、输入法交互,切换输入法,切换输入输入模式,手写/九宫格。
9、登陆账号的多样性:多个账号轮流登陆,同一个账号多角色登陆。
10、第三方登录验证:账号授权,信息正确,取消授权。
11、登陆页面跳转,返回,登陆成功及其他页面跳转。
12、手机兼容性测试:分辨率兼容,系统兼容,系统版本兼容,App版本兼容。
13、网络切换,网络断开,弱网
 
十二、Push消息如何测试?
1、检查Push消息是否按照指定的业务规则发送。
2、检查不接收推送消息时,用户不会在接收到Push消息。
3、如果用户设置了免打扰的时间段,检查在免打扰时间段内,用户接收不到Push。在非免打扰时间段内,用户能正常收到Push。
4、当Push消息是针对登录用户的时候,需要检查收到的Push与用户身份是否相符,没有错误的将其他人的消息推送过来。一般情况下,只对手机上最后一个登录用户进行消息推送。
5、测试Push时,在开关机、待机状态下执行推送,消息及其推送跳转的正确性。
6、push消息时,会有红点展示,推送消息阅读前后数字的变化是否正确;
7、应用在开发、未打开状态、应用启动且在后台运行的情况下是push显示和跳转否正确。
8、多条推送的合集的显示和跳转是否正确。

十三、App的闪退通常是什么原因造成的?
1、缓存垃圾太多;
Android系统的特性,如果长时间不清理垃圾文件,会导致越来越卡,甚至闪退。
2、运行程序太多,导致内存不足;
3、应用版本兼容问题,分辨率兼容问题;
4、APP中访问网络的地方,组件能否正常下载并显示;
5、APP的sdk与手机系统不兼容;
6、系统升级后,新版本不兼容老版本的API,返回对象失败,报空指针;
7、软件权限未开放。

十四、如何提交高质量的缺陷报告单?
1、 缺陷的概要描述要清晰准确,要使相关开发负责人员能够一目了然问题是什么。
2、 一个完整的缺陷报告单,必须包含其必要的元素信息,例如:概要描述,缺陷发现人,测试环境,浏览器,缺陷重现步骤,严重等级,指派人,所属功能模块等等,必要元素信息必须描述全面清楚。
3、 缺陷的重现步骤必须描写清晰明了,使相关开发负责人能够根据重现步骤准确的重现所提交的缺陷,使其定位缺陷的原因所在。
4、测试数据,测试的数据作为重现缺陷的一个重要元素信息,一定要将测试时所使用的信息给描写清楚准确。让开发人员根据测试所提供的测试数据准确重现缺陷。
5、附件截图信息,附件或截图信息能让开发人员能够一目了然的清楚问题的所在。

十五、软件测试的分类有哪些?
1、按照是否执行被测试软件来分:
静态测试:是指不运行软件,测试包括代码检查、静态结构分析、代码质量度量等,主要对软件需求说明书、设计说明书、软件源代码进行检查与分析。
动态测试:指通过运行被测程序,检查运行结果与预期结果的差异,分析差异原因,并分析软件运行效率、健壮性等性能。 动态测试是目前公司主要的测试方式
2、按照测试技术分为黑盒测试和白盒测试:
黑盒测试:黑盒测试又叫功能测试或数据驱动测试,在完全不考虑程序内部结构和内部特性的情况下,通过软件的外部表现来发现其缺陷和错误。
白盒测试:白盒测试也称结构测试或逻辑驱动测试,它是按照程序内部的结构进行测试程序,通过测试来检测产品内部逻辑是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作。
3、按照测试手段来分,可以分为手工测试和自动化测试
4、按照过程阶段来分,可以分为单元测试、集成测试、系统测试和验收测试
单元测试:通过模块(类/方法/函数)测试,使代码达到设计要求 主要目的是针对编码过程中可能存在的各种错误,例如用户输入验证过程中的边界值的错误。
集成测试:将经过单元测试的模块逐步组装成完整的程序。 主要目的是检查各单元与其它程序部分之间的接口是否存在问题,各模块功能之间是否有影响。
系统测试:是将已经确认的软件、计算机硬件、外设、网络等其他元素结合在一起进行测试。 系统测试是针对整个产品系统进行的测试,目的是验证系统是否满足了需求规格的定义,找出与需求规格不符或与之矛盾的地方 ,进行改正。
验收测试:验收测试是在软件产品完成了单元测试、集成测试和系统测试之后,产品发布之前所进行的最后一次软件测试活动,也称为交付测试。 通常由业务专家或用户进行,以确认产品能真正符合用户业务上的需要。

十六、现在有个程序,发现在Windows上运行得很慢,怎么判别是程序存在问题还是软硬件系统存在问题?
1、检查系统是否有中毒的特征;
2、检查软件/硬件的配置是否符合软件的推荐标准;
3、确认当前的系统是否是独立,即没有对外提供什么消耗CPU资源的服务;
4、如果是C/S或者B/S结构的软件,需要检查是不是因为与服务器的连接有问题,或者访问有问题造成的;
5、在系统没有任何负载的情况下,查看性能监视器,确认应用程序对CPU/内存的访问情况。

十七、软件的安全性应从哪几个方面去测试?
软件安全性测试包括程序、数据库安全性测试。根据系统安全指标不同测试策略也不同。
测试点:
1、跨网站脚本攻击:通过脚本语言的缺陷模拟合法用户,控制其账户,盗窃敏感数据;
2、注入攻击:通过构造查询对数据库、LDAP和其他系统进行非法查询;
3、恶意文件执行:在服务器上执行Shell 命令Execute,获取控制权;
4、伪造跨站点请求:发起Blind 请求,模拟合法用户,要求转账等请求;
5、不安全对象引用:不安全对象的引入,访问敏感文件和资源,WEB应用返回敏感文件内容;
6、被破坏的认证和Session管理:验证Session token 保护措施,防止盗窃session;
7、Session的失效时间限制:Session的失效时间设置是否过长,会造成访问风险;
8、不安全的木马存储:过于简单的加密技术导致黑客破解编密码,隐秘信息被盗窃,验证其数据加密;
9、不安全的通讯:敏感信息在不安全通道中以非加密方式传送, 敏感信息被盗窃,验证其通讯的安全性;
10、URL访问限制失效:验证是否通过恶意手段访问非授权的资源链接,强行访问一些登陆网页,窃取敏感信息;
11、信息泄露和不正确错误处理测试:恶意系统检测,防止黑客用获取WEB站点的具体信息的攻击手段获取详细系统信息;
12、注册与登录测试:验证系统先注册后登录、验证登录用户名和密码匹配校验,密码长度及尝试登录次数,防止 非法用户登录;
13、超时限制:验证WEB应用系统需要有是否超时的限制,当用户长时间不做任何操作的时候,需要重新登录才能使用;
14、日志文件:验证服务器上日志是否正常工作,所有事务处理是否被记录;
15、目录文件:验证WEB服务器目录访问权限或者每个目录访问时有index.htm,防止 WEB 服务器处理不适当,将整个目录暴露;
16、身份验证:验证调用者身份、数据库身份、验证是否明确服务账户要求、是否强制式试用账户管理措施;
17、授权:验证如何向最终用户授权、如何在数据库中授权应用程序,确定访问系统资源权限;
18、会话:验证如何交换会话标识符、是否限制会话生存期、如何确保会话存储状态安全;
19、配置管理:验证是否支持远程管理、是否保证配置存储安全、是否隔离管理员特权;
20、备份与恢复:为了防止系统意外崩溃造成的数据丢失,验证备份与恢复功能正常实现、备份与恢复方式是否满足Web系统安全性要求;
21、数据库关键数据是否进行加密存储,是否在网络中传递敏感数据;
22、在登录或注册功能中是否有验证码存在,防止恶意大批量注册登录的攻击;
23、Cookie文件是否进行了加密存储,防止盗用cookie内容;
24、密码强度提醒:建议对密码的规则进行加强设置;
25、密码内容禁止拷贝粘贴。

十八、你对测试最大的兴趣在哪里?为什么?
最大的兴趣就是测试有难度,有挑战性!做测试越久越能感觉到做好测试有多难。曾经在无忧测试网上看到一篇文章,是关于如何做好一名测试工程师。一共罗列了 11,12 点,有部分是和人的性格有关,有部分需要后天的努力。但除了性格有关的 1,2 点我没有把握,其他点我都很有信心做好它。
刚开始进入测试行业时,对测试的认识是从无忧测试网上了解到的一些资料,当时是冲着做测试需要很多技能才能做的好,虽然入门容易,但做好很难,比开发更难,虽然当时我很想做开发,但看到测试比开发更难更有挑战性,想做好测试的意志就更坚定了。我觉得做测试整个过程中有 两点让我觉得很有难度(对我来说,有难度的东西我就非常感兴趣),第一是测试用例的设计,因为测试的精华就在测试用例的设计上了,要在版本出来之前,把用例写好,用什么测试方法写?(也就是测试计划或测试策略),如果你刚测试一个新任务时,你得花一定的时间去消化业务需求和技术基础,业务需求很好理解(多和产品经理和开发人员沟通就能达到目的),而技术基础可就没那么简单了,这需要你自觉的学习能力,比如说网站吧,最基本的技术知识你要知道网站内部是怎么运作的的,后台是怎么响应用户请求的?测试环境如何搭建?这些都需要最早的学好。至少在开始测试之前能做好基本的准备,可能会遇到什么难题?需求细节是不是没有确定好?这些问题都能在设计用例的时候发现。第二是发现 BUG 的时候了,这应该是测试人员最基本的任务了,一般按测试用例开始测试就能发现大部分的 bug,还有一部分 bug 需要测试的过程中更了解所测版本的情况获得更多信息,补充测试用例,测试出 bug。还有如何发现 bug?这就需要在测试用例有效的情况下,通过细心和耐心去发现 bug 了,每个用例都有可能发现 bug,每个地方都有可能出错,所以测试过程中思维要清晰(测试过程数据流及结果都得看仔细了,bug 都在里面发现的)。如何描述 bug 也很有讲究,bug 在什么情况下会产生,如果条件变化一点点,就不会有这个 bug,以哪些最少的操作步骤就能重现这个bug,这个bug产生的规律是什么?如果你够厉害的话,可以帮开发人员初步定位问题。

十九、简单描述下TCP协议
1、TCP:传输控制协议,是传输层通信协议。它有面向连接、可靠、字节流传输等特点,TCP建立连接时,需要三次握手协议
2、TCP三次握手的过程如下:
(1)客户端发送SYN报文给服务端,进入SYN_SEND(SEQ=X)状态;
(2)服务端收到SYN报文,回应一个SYN(SEQ=Y) ACK(ACK=X+1)报文,进入SYN_RECV状态;
(3)客户端收到服务端的SYN报文,回应一个ACK(ACK=Y+1)报文,开始建立连接。

二十、TCP与UDP的区别?
1、TCP传输控制协议 ,UDP用户数据报协议;
2、TCP对资源要求比较多,UDP对资源要求比较少;
3、TCP可以保证数据的正确性,UDP有可能会丢包;
4、TCP可以保证数据的顺序,UDP不会保证。

二十一、网络7层模型是哪7层?
从下到上,物理层、数据链路层、网络层、传输层、会话层、表示层、应用层
(1)物理层:同轴电缆、接收器、发送器等
(2)数据链路层:网卡、交换机、网桥
(3)网络层:路由器、网关
(4)传输层:TCP协议、UDP协议
(5)会话层:SQL、ASP、 PHP等
(6)表示层:ASCII、JPEG、PNG、MP3等
(7)应用层:telnet、ssh、http、smtp等

二十二、移动端测试

Android手机和IOS手机,系统有什么区别?
1、两者运行机制不同:IOS采用的是沙盒运行机制,安卓采用的是虚拟机运行机制。
2、两者后台制度不同:IOS中任何第三方程序都不能在后台运行;安卓中任何程序都能在后台运行,直到没有内存才会关闭。
3、IOS中用于UI指令权限最高,安卓中数据处理指令权限最高。

Android:
1、使用灰盒进行功能测试;
2、使用fiddler或者Charles进行抓包测试;
3、兼容性测试,Android 从4.0版本的手机测试到9.0版本手机;
4、各大品牌的手机都的进行测试,参考百度流量研究院,网址:https://tongji.baidu.com/research/
5、稳定性测试: 使用monkey命令进行稳定性测试;
6、专项测试,使用腾讯专项测试工具进行,测试耗电量,流量,CPU占用率;
7、性能测试,对app的接口进行性能测试,使用工具jmeter或者loadrunner;
8、对app接口进行接口测试,使用postman或者Jmeter都行;
9、如果有时间写自动化脚本;

ios:
1、使用灰盒进行功能测试;
2、使用fiddler或者Charles进行抓包测试;
3、兼容性测试:ios版本测试从9-12,手机型号从4S测试到xmax;
4、性能测试接口和安卓的是一样的所以只需要进行一次就可以了;
5、专项测试:使用腾讯专项测试工具进行,测试耗电量,流量,CPU占用率;
6、编写自动化脚本。

二十三、web端测试
由于web端应用于用户直接相关,又通常需要承受长时间的大量操作,因此web项目的功能和性能都必须经过可靠的验证。web端测试常见的有界面测试、功能测试、性能测试、可用性(接口)测试、兼容性测试、安全性测试、链接测试。

1、界面测试
(1)界面的风格、样式、颜色是否协调;
(2)界面窗口的最大化、最小化是否能正确切换;
(3)界面布局是否整齐,协调;
(4)界面操作是否符合人们的常规习惯,提示界面是否符合人们的常规习惯;
(5)界面是否有Tab键的支持,顺序要有调理不乱跳;
(6)操作有风险的界面时,是否有确认删除等提示;
(7)界面的特殊效果显示是否正确(特殊字体效果、动画显示效果)
(8)界面在不同分辨率下是否清晰,在不同浏览器版本中是否显示;
(9)输入框的检查(日历型输入框合法性的检查)
2、功能测试
(1)搜索功能
如果支持模糊查询,搜索名称中任意一个字符是否都能搜索到;
用户进行查询操作时,一般情况是不进行查询条件的清空,除非需要特殊说明;
不同查询条件之间来回选择,是否出现页面错误;
测试多个查询条件时,要注意查询条件的组合测试,可能不quanyi同组合的测试会报错。
(2)增删改功能
是否支持回车键、Tab键;
不符合要求的地方是否都有错误提示;
字段唯一的是否可以重复添加,添加后是否可以修改为已存在的字段;
删除某些重要信息时是否有删除提示;
删除数据时是否能连续删除多个,当只有一条数据时,是否可以删除成功, 批量删除信息时注意删除的信息是否正确;
对页面进行编辑修改时,点击保存是佛可以保存成功,检查相关联的数据是 否得到更新;
进行编辑的时候注意编辑项的长度设置,注意添加和修改的规则是否一致;
修改后增加数据时,要注意查询页面的数据是否及时更新,特别是在首页时要注意数据的更新;
提交数据时,连续多次点击,查看系统是否出现相同的数据或者在连续点击情况下报错。
(3)登录注册功能
检查注册成功后,页面是否会跳转到登录页面或其他页面;
注册成功后删除注册账号,检查是否注册成功;
输入框是否支持Tap和Enter键;
密码是否可以复制粘贴,密码是否是以加密符号显示;
登录时对用户名和密码进行检测判断;
登录时,当页面刷新重新输入数据,检查验证码是否更新;
对模块的具体功能进行测试时可以列出功能模块所有的功能,进行排列组。合,测试所有情况
3、性能测试
(1)性能测试目的是对web端的页面进行测试以确认系统页面是否会影响系统的性能并未页面的优化提供依据与建议;
(2)减少请求和相应的往返字节,一般将所有css放到一个css文件,所有脚本放到js文件;
(3)检查js的位置。
4、可用性(接口)测试
5、兼容性测试
兼容性测试包括操作系统兼容、软件兼容、不同浏览器的兼容
6、安全性测试
(1)服务器脚本常常构成安全漏洞,要对这进行测试,测试没有经过授权就不能再服务器端放置和编辑脚本你的问题;
(2)当使用了安全套接字,还要测试加加密是否正确,检查信息的完整性;
(3)为了保证web应用系统的安全性,需要测试相关信息是否写进了日志文件,是否可追踪;
(4)web页面注册登录时还要验证token,当token过期时需要诚信登录验证身份才能正常使用。
7、链接测试
链接测试主要是保证链接的可用性和正确性


本文链接: http://www.dtmao.cc/news_show_650116.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?