知乎万赞:熬夜整理出的软件测试面试题大全(2021最新)
Posted 测试萌萌
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了知乎万赞:熬夜整理出的软件测试面试题大全(2021最新)相关的知识,希望对你有一定的参考价值。
一、问答题
1、自动化代码中,用到了哪些设计模式?
答:自动化代码用到过的设计模式:
①单例设计模式
②工厂模式
③PO设计模式
④数据驱动模式
⑤面向接口编程设计模式
2、什么是Selenium
答:Selenium是一个开源的web自动化测试框架,支持多种编程语言开发自动化测试脚本,支持跨浏览器平台进行测试
3、TestNG中注解有哪些?
答:@Test,@BeforeSuite,@AfterSuite,@BeforeTest,@AfterTest,@BeforeClass,@AfterClass,@BeforeMethod,@AfterMethod,@DataProvider
4、什么是断言?
答:断言Assert用于在代码中验证实际结果是不是符合预期结果,如果测试用例执行失败会抛出异常并提供断言日志
5、TestNG有哪些有点?
答:TestNG的注释非常强大和方便,TestNG允许并行测试,并可以基于group的方式执行测试,还可以生成测试报表,并且报告展示多样化,可在其基础上自行开发测试报告插件以及测试监听器
6、什么是web自动化测试?
答:web自动化测试指的是从UI(用户界面)层面进行的自动化测试,测试人员通过编程自动化程度(测试用例脚本)来打开浏览器测试网站的业务逻辑
7、写出Selenium中你最熟悉的接口或类?
答:webDriver、lnternetExplorerDriver、FirefoxDriver、ChromeDriver、WebElement、WebDriverWait、By
8、元素定位类型有哪些?
答:By类一共有8中元素定位方式,他们都是静态方法:
By.id(),By.name(),By.tagName(),By.className(),By.cssSelector(),By.linkText(),By.partialLinText(),By.xpath()
9、登录按钮除了用click方法进行点击以外还有其他方式么?
答:还可以使用submit()方法,前提是input元素的type为submit
10、怎么对含有验证码的功能进行自动化测试的?
答:1)图像识别,技术难度大,效果不佳,不推荐
2)屏蔽验证,邀请开发处理,但在预生产环境或者生产环境不推荐
3)万能验证码,使用一个负责的其他人无法猜到的验证码
11、怎么验证复选按钮是不是被选中?
答:可以使用元素的isSelected()方法,如果返回的是true则说明被选中,否则表明未被选中
12、如何处理alert弹窗?
答:处理alert弹窗首先需要先跳转到alert上,然后在点击确定或者取消按钮,
Alert alet=driver.switchTo().alert();//切换到alert
alert…accept();//确定
alert.dismiss();//取消
13、如何用webdriver进行鼠标右键点击操作?
答:使用Actions类
Actions actions=new Actions(driver);
actions.moveToElement(element).perform();
actions.contextClick().perform();
14、举一个webDriver中方法重载的例子?
答:frame(string nama),frame(int index),
frame(WebElement element)
15、下拉菜单中如何去选择一个菜单项?
答:如果下拉菜单是select标签,使用方法:
selectByValue()或者是selectBylndex()或者selectByVisibleText()即可
如果这个下拉菜单不是通过select标签创建,则直接通过xpath定位元素然后去点击选择
16、你的自动化用例的执行策略是什么?
答:自动化测试与软件开发本质上是一样的,利用自动化测试工具,经过测试需求分析,设计出自动
化测试用例,从而搭建自动化测试的框架,设计与编写自动化脚本,验证测试脚本的正确性,最终完
成自动化测试测试脚本(即主要功能为测试的应用软件)并输出测试结果
自动化测试的时候是不是需要连接数据库做数据校验?
从数据库层面来进行数据校验可以更方便验证系统的数据处理方面是否正确,数据处理逻辑正常后,
UI层面上的校验也是需要做的。
17、id,name,class,xpath, css selector这些属性,你最偏爱哪一种,为什么?
答:css 、xpath 几乎所有的元素都可以定位到,但是它们的短处在于页面上更改了元素后位置很容易
改变,所以首先使用的还是id或者name等。
18、APP 测试常见的严重问题有哪些? 分别引起的原因有哪些?
答:常见的有 crash、ANR(应用无响应、卡死),一般由设备碎片化、网络波动大、内存泄漏、代
码编写错误
19、app 测试有哪几种环境?
答:本地环境: app 安装的手机环境和电脑搭建的自动化测试环境(比如安卓 SDK 等等) 。
服务器环境: war 包部署的服务器, 服务器可以通过浏览器访问, 也可以通过 app 去访问。(访问
的是 web 程序的接口)
20、简单介绍一下 Android SDK 的安装步骤:
答: 下载 jdk 和安卓 sdk
安装 jdk, 配置环境变量(java_home、 classpath、 path)
21、当一个接口出现异常时候,你是如何分析异常的?
答:先抓包,用fiddler(charles)工具抓包,或者浏览器上F12调试工具;APP上的话,那就用
Fiddler做代理,通过手机设置代理去看请求和返回报文;
查看后端日志,如Linux系统通过xhell连上服务器,查看接口日志,查看是否有报错信息(命令:tail -
f 日志文件);
22、如何分析一个bug是前端还是后端的?
答:平常提bug的时候,前端开发和后端开发总是扯皮,不承认是对方的bug。
这种情况很容易判断,先抓包看请求报文,对着接口文档,看请求报文有没问题,有问题就是前端发
的数据不对
以上资料我把它无偿分享出来。关注微信公众号:【伤心的辣条】,即可获取~
二、面试基础题
简述测试流程:
1、阅读相关技术文档(如产品PRD、UI设计、产品流程图等)。
2、参加需求评审会议。
3、根据最终确定的需求文档编写测试计划。
4、编写测试用例(等价类划分法、边界值分析法等)。
5、用例评审(主要参与人员:开发、测试、产品、测试leader)。
6、开发提交代码至SVN或者GIT ,配管搭建测试环境。
7、执行测试用例,记录发现的问题。
8、验证bug与回归测试。
9、编写测试报告。
10、产品上线。
补充测试用例设计过程:
根据需求得出测试需求
设计测试方案,评审测试方案
方案评审通过后,设计测试用例,再对测试用例进行评审
什么是软件测试?软件测试的目的与原则
使用人工或自动手段,来运行或测试某个系统的过程。其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。
软件测试的目的:
测试是程序的执行过程,目的在于发现错误。
一个成功的测试用例在于发现至今未发现的错误。
一个成功的测试是发现了至今未发现的错误的测试。
确保产品完成了它所承诺或公布的功能,并且用户可以访问到的功能都有明确的书面说明。
确保产品满足性能和效率的要求。
确保产品是健壮的和适应用户环境的。
问:软件生存周期及其模型是什么?
软件生存周期是软件开发全部过程、活动和任务的结构框架,是从可行性研究到需求分析、软件设计、编码、测试、软件发布维护的过程。在经历需求、分析、设计、实现、部署后,软件将被使用并进入维护阶段,直到最后由于缺少维护费用而逐渐消亡。这样的一个过程,称为"生命周期模型"(Life Cycle Model)。
什么是软件质量?
软件质量:软件产品的特性可以满足用户的功能、性能需求的能力。
自动化测试脚本开发的主要步骤:
1、通过某些方式定位到我们要执行的对象、目标( Target)
2、对这个对象进行什么操作(command)
3、通过操作对定位到的元素赋值(value)
4、添加断言操作
目前主要的测试用例设计方法是什么?
白盒测试: 逻辑覆盖、循环覆盖、基本路径覆盖
黑盒测试: 边界值分析法、等价类划分、错误猜测法、因果图法、状态图法、测试大纲法、随机测试场景法
常见的测试用例设计方法都有哪些?请分别以具体的例子来说明这些方法在测试用例设计工作中的应用
1)等价类划分划分
等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的。并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试。因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件,就可以用少量代表性的测试数据。取得较好的测试结果。等价类划分可有两种不同的情况:有效等价类和无效等价类。
2)边界值分析法
边界值分析方法是对等价类划分方法的补充。测试工作经验告诉我,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部。因此针对各种边界情况设(面试题目:什么样的工作环境适合你&#from一个常见的软件测试面试题来自end#lt;结束)计测试用例,可以查出更多的错误。
使用边界值分析方法设计测试用例,首先应确定边界情况。通常输入和输出等价类的边界,就是应着重测试的边界情况。应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据。
3)错误推测法
基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性的设计测试用例的方法。
错误推测方法的基本思想:列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例。例如,在单元测试时曾列出的许多在模块中常见的错误。以前产品测试中曾经发现的错误等,这些就是经验的总结。还有,输入数据和输出数据为0的情况。输入表格为空格或输入表格只有一行。这些都是容易发生错误的情况。可选择这些情况下的例子作为测试用例。
4)因果图方法
前面介绍的等价类划分方法和边界值分析方法,都是着重考虑输入条件,但未考虑输入条件之间的联系,相互组合等。考虑输入条件之间的相互组合,可能会产生一些新的情况。但要检查输入条件的组合不是一件容易的事情,即使把所有输入条件划分成等价类,他们之间的组合情况也相当多。因此必须考虑采用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来考虑设计测试用例。这就需要利用因果图(逻辑模型)。因果图方法最终生成的就是判定表。它适合于检查程序输入条件的各种组合情况。
5)正交表分析法
有时候,可能因为大量的参数的组合而引起测试用例数量上的激增,同时,这些测试用例并没有明显的优先级上的差距,而测试人员又无法完成这么多数量的测试,就可以通过正交表来进行缩减一些用例,从而达到尽量少的用例覆盖尽量大的范围的可能性。
6)场景分析方法
指根据用户场景来模拟用户的操作步骤,这个比较类似因果图,但是可能执行的深度和可行性更好。
测试的策略有哪些?
黑盒/白盒/灰盒,静态/动态,手工/自动,冒烟测试,回归测试,公测(Beta测试的策略)
补充:公测是什么?还有没有其他的测试策略?测试策略和测试方法以及测试类型有什么区别?
按测试 策略分类:
1、静态与动态测试
2、黑盒与白盒测试
3、手工和自动测试
4、冒烟测试
5、回归测试;
按测试阶段分类:单元测试、集成测试、系统测试;
其他常见测试方法:1、功能测试 2、性能测试 3、压力测试 4、负载测试 5、易用性测试 6、安装测试 7、界面测试 8、配置测试 9、文档测试 10、兼容性测试 11、安全性测12、恢复测试
α测试是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的受控测试,Alpha 测试不能由程序员或测试员完成。
β测试是软件的多个用户在一个或多个用户的实际使用环境下进行的测试。开发者通常不在测试现场,Beta 测试不能由程序员或测试员完成。
回归测试(对软件的新版本测试时,重复执行上一个版本测试时的用例,是为了验证缺陷是否真正修复,确认修复后是否影响其它功能);
冒烟测试:对新版本测试之前,先验证下软件的基本功能是否实现,是否具备可测性。
单元测试的策略有哪些?
逻辑覆盖、循环覆盖、同行评审、桌前检查、代码走查、代码评审、景泰数据流分析
正交表测试用例设计方法的特点是什么?
答:用最少的实验覆盖最多的操作,测试用例设计很少,效率高,但是很复杂;对于基本的验证功能,以及二次集成引起的缺陷,一般都能找出来;但是更深的缺陷,更复杂的缺陷,还是无能为力的;具体的环境下,正交表一般都很难做的。大多数,只在系统测试的时候使用此方法。
补充:什么时候用系统测试,测试的每个阶段是什么,比如单元、集成、系统、公测,每个阶段需要什么技术,有什么要求
软件的安全性应从哪几个方面去测试?
(1) 用户认证机制:如数据证书、智能卡、双重认证、安全电子交易协议
(2) 加密机制
(3) 安全防护策略:如安全日志、入侵检测、隔离防护、漏洞扫描
(4) 数据备份与恢复手段:存储设备、存储优化、存储保护、存储管理
(5) 防病毒系统
软件安全性测试包括程序、数据库安全性测试。根据系统安全指标不同测试策略也不同。
用户认证安全的测试要考虑问题:
明确区分系统中不同用户权限
系统中会不会出现用户冲突
系统会不会因用户的权限的改变造成混乱
用户登陆密码是否是可见、可复制
是否可以通过绝对途径登陆系统(拷贝用户登陆后的链接直接进入系统)
用户退出系统后是否删除了所有鉴权标记,是否可以使用后退键而不通过输入口令进入系统
系统网络安全的测试要考虑问题
测试采取的防护措施是否正确装配好,有关系统的补丁是否打上
模拟非授权攻击,看防护系统是否坚固
采用成熟的网络漏洞检查工具检查系统相关漏洞(即用最专业的黑客攻击工具攻击试一下,现在最常用的是 NBSI 系列和 IPhacker IP )
采用各种木马检查工具检查系统木马情况
采用各种防外挂工具检查系统各组程序的外挂漏洞
数据库安全考虑问题:
系统数据是否机密(比如对银行系统,这一点就特别重要,一般的网站就没有太高要求)系统数据的完整性(我刚刚结束的企业实名核查服务系统中就曾存在数据的不完整,对于这个系统的功能实现有了障碍)
系统数据可管理性
系统数据的独立性
系统数据可备份和恢复能力(数据备份是否完整,可否恢复,恢复是否可以完整)
α测试是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的受控测试,Alpha 测试不能由程序员或测试员完成。
β测试是软件的多个用户在一个或多个用户的实际使用环境下进行的测试。开发者通常不在测试现场,Beta 测试不能由程序员或测试员完成。
需求测试的注意事项有哪些?
是否使用了公司的模板
文档内容是否符合规范
所有的需求是分级是否清析适当?
所有的需求是否具有一致性
需求是否可行(即,该需求组合有解决方案)
需求可否用己知的约束来实现
需求是否足够(即,可以把它送到一个规范的开发组织,并有一个生产出所需要产品的合理的可能性)
所有的其它需求是交叉引用是否正确
用户描述是否清楚
是否用客户的语言来描述需求
每个需求描述是否清楚没有岐义,可以移交给一个独立的组去实现时也能理解
是否所有的需求都是可验证的
是否每条需求都具有独立性,即使发生了变化也不会影响其它需求
性能指标是否明确
非功能性需求是否得到充分表现
是否完整列出适用的标准或协议
标准和协议之间是否存在冲突
问:你在测试中发现了一个 bug ,但是开发经理认为这不是一个 bug ,你应该怎样解决。
将问题提交到缺陷管理库里面进行备案。
要获取判断的依据和标准: 根据需求说明书、产品说明、设计文档等,确认实际结果是否与计划有不一致的地方,提供缺陷是否确认的直接依据; 如果没有文档依据,可以根据类似软件的一般特性来说明是否存在不一致的地方,来确认是否是缺陷; 根据用户的一般使用习惯,来确认是否是缺陷;
与设计人员、开发人员和客户代表等相关人员探讨,确认是否是缺陷;
合理的论述,向测试经理说明自己的判断的理由,注意客观、严谨,不参杂个人情绪。
等待测试经理做出最终决定,如果仍然存在争议,可以通过公司政策所提供的渠道,向上级反映,并有上级做出决定。
问:给你一个网站,你如何测试?
1、查找需求说明、网站设计 m 等相关文档,分析测试需求。
2、制定测试计划,确定测试范围和测试策略,一般包括以下几个部分:
功能性测试;界面测试;性能测试;数据库测试;安全性测试;兼容性测试
3、设计测试用例:
功能性测试可以包括,但不限于以下几个方面:
链接测试。链接是否正确跳转,是否存在空页面和无效页面,是否有不正确的出错信息返回等。提交功能的测试。
多媒体元素是否可以正确加载和显示。多语言支持是否能够正确显示选择的语言等。
界面测试可以包括但不限于一下几个方面:
页面是否风格统一,美观
文字检查
对于必须但为安装的空间,是否提供自动下载并安装的功能
控件是否正常使用
页面布局是否合理,重点内容和热点内容是否突出
问:一台客户端有三百个客户与三百个客户端有三百个客户对服务器施压,有什么区别?
300 个用户在一个客户端上,会占用客户机更多的资源,而影响测试的结果。线程之间可能发生干扰,而产生一些异常。300 个用户在一个客户端上,需要更大的带宽。IP 地址的问题,可能需要使用 IP Spoof 来绕过服务器对于单一 IP 地址最大连接数的限制。所有用户在一个客户端上,不必考虑分布式管理的问题;而用户分布在不同的客户端上,需要考虑使用控制器来整体调配不同客户机上的用户。同时,还需要给予相应的权限配置和防火墙设置。
你工作中遇到最具价值的bug,就是重大bug咯,例如app性能测试测哪些,那你就看一看性能测试的视频咯
软件的安全性应从哪几个方面 去测试?
软件安全性测试包括程序、数据库安全性测试。根据系统安全指标不同测试策略也不同。
用户认证安全的测试要考虑问题:
明确区分系统中不同用户权限
系统中会不会出现用户冲突
系统会不会因用户的权限的改变造成混乱
用户登陆密码是否是可见、可复制
是否可以通过绝对途径登陆系统(拷贝用户登陆后的链接直接进入系统)
用户退出系统后是否删除了所有鉴权标记,是否可以使用后退键而不通过输入口令进入系统
系统网络安全的测试要考虑问题
测试采取的防护措施是否正确装配好,有关系统的补丁是否打上
模拟非授权攻击,看防护系统是否坚固
采用成熟的网络漏洞检查工具检查系统相关漏洞(即用最专业的黑客攻击工具攻击试一下,
现在最常用的是 NBSI 系列和 IPhacker IP )
采用各种木马检查工具检查系统木马情况
采用各种防外挂工具检查系统各组程序的外挂漏洞
数据库安全考虑问题:
系统数据是否机密(比如对银行系统,这一点就特别重要,一般的网站就没有太高要求)
系统数据的完整性(我刚刚结束的企业实名核查服务系统中就曾存在数据的不完整,对于这个系统的功能实现有了障碍)
系统数据可管理性
系统数据的独立性
系统数据可备份和恢复能力(数据备份是否完整,可否恢复,恢复是否可以完整)
软件质量保证体系是什么 国家标准中与质量保证管理相关的几个标准是什么? ? 他们的编号和全称是什么? ?
SQA 由一套软件工程过程和方法组成,以保证(软件的)质量。SQA 贯穿整个软件开发过程,(它)应包括需求文档评审、代码控制、代码评审、变更管理、配置管理、版本管理和软件测试。
测试人员在软件开发过程中的任务是什么?
1、寻找 Bug;
2、避免软件开发过程中的缺陷;
3、衡量软件的品质;
4、关注用户的需求。
总的目标是:确保软件的质量。
在您以往的工作中,一条软件缺陷(或者叫 Bug)记录都包含了哪些内容?如何提交高质量的软件缺陷(Bug)记录?
一条 Bug 记录最基本应包含:编号、Bug 所属模块、Bug 描述、Bug 级别、发现日期、发现人、修改日期、修改人、修改方法、回归结果等等;
要有效的发现 Bug 需参考需求以及详细设计等前期文档设计出高效的测试用例,然后严格执行测试用例,对发现的问题要充分确认
肯定,然后再向外发布如此才能提高提交 Bug 的质量。
黑盒测试和白盒测试是软件测试的两种基本方法,请分别说明各自的优点和缺点!
黑盒测试的优点有:比较简单,不需要了解程序内部的代码及实现;与软件的内部实现无关;从用户角度出发,能很容易的知道用户会用到哪些功能,会遇到哪些问题;基于软件开发文档,所以也能知道软件实现了文档中的哪些功能;在做软件自动化测试时较为方便。
黑盒测试的缺点有:不可能覆盖所有的代码,覆盖率较低,大概只能达到总代码量的 30%;自动化测试的复用性较低。
白盒测试的优点有:帮助软件测试人员增大代码的覆盖率,提高代码的质量,发现代码中隐藏的问题。
白盒测试的缺点有:程序运行会有很多不同的路径,不可能测试所有的运行路径;测试基于代码,只能测试开发人员做的对不对,而不能知道设计的正确与否,可能会漏掉一些功能需求;系统庞大时,测试开销会非常大。
什么是系统瓶颈?
参考答案:
瓶颈主要是指整个软硬件构成的软件系统某一方面或者几个方面能力不能满足用户的特定业务要求,“特定”是指瓶颈会在某些条件下会出现,因为毕竟大多数系统在投入前。
严格的从技术角度讲,所有的系统都会有瓶颈,因为大多数系统的资源配置不是协调的,例如CPU使用率刚好达到100%时,内存也正好耗尽的系统不是很多见。因此我们讨论系统瓶颈要从应用的角度讨论:关键是看系统能否满足用户需求。在用户极限使用系统的情况下,系统的响应仍然正常,我们可以认为改系统没有瓶颈或者瓶颈不会影响用户工作。
因此我们测试系统瓶颈主要是实现下面两个目的:
-发现“表面”的瓶颈。主要是模拟用户的操作,找出用户极限使用系统时的瓶颈,然后解决瓶颈,这是性能测试的基本目标。
-发现潜在的瓶颈并解决,保证系统的长期稳定性。主要是考虑用户在将来扩展系统或者业务发生变化时,系统能够适应变化。满足用户目前需求的系统不是最好的,我们设计系统的目标是在保证系统整个软件生命周期能够不断适应用户的变化,或者通过简单扩展系统就可以适应新的变化。
手机APP测试
主要包括功能、性能测试、稳定性、兼容性、用户测试。
性能测试: CPU占用/内存占用 /耗电测试 /流量消耗测试 /安装包大小 /加载时间测试 /核心功能相应时间 (①启动时间检测:检测App在终端上首次启动时间。②内存、CPU耗用检测:检测App在终端上运行时不同时段占用内存、CPU情况。③流量耗用检测:检测App在终端上运行时的网络流量消耗情况。④电池温度检测:检测App在终端上运行时,对终端的电池温度等性能指标的影响情况 )
兼容性测试: 屏幕分辨率 /网络状态,状态切换 /android版本 /安装卸载升级等 /权限设置 /与其他APP兼容性 (①安装卸载测试:测试App在指定终端上是否可正常安装、正常卸载,准确定位错误原因。②遍历测试:自动识别App可执行的功能,在一定时间内遍历App的不同功能界面,通过截图记录操作路径 并输出日志、定位异常现象。③运行稳定性测试:类似Monkey的随机性压力测试,测试App运行期的稳定性。④UI适配测试:测试App的UI与目标终端的屏幕是否适配,记录是否存在渲染失败、错位、黑边框、黑白屏等现象。)
稳定性测试包括:服务器异常时稳定性 /外部事件影响(电话,短信等) /内存是否有溢出或者泄漏 /多线程问题 。
什么是并发?在lordrunner中,如何进行并发的测试?集合点失败了会怎么样?
参考答案:
在同一时间点,支持多个不同的操作。
LoadRunner中提供IP伪装,集合点,配合虚拟用户的设计,以及在多台电脑上设置,可以比较好的模拟真实的并发。
集合点,即是多个用户在某个时刻,某个特定的环境下同时进行虚拟用户的操作的。集合点失败,则集合点的才操作就会取消,测试就不能进行。
详细的描述一个测试活动完整的过程。
答案:(供参考,本答案主要是瀑布模型的做法)
项目经理通过和客户的交流,完成需求文档,由开发人员和测试人员共同完成需求文档的评审,评审的内容包括:需求描述不清楚的地方和可能有明显冲突或者无法实现的功能的地方。项目经理通过综合开发人员,测试人员以及客户的意见,完成项目计划。然后 SQA 进入项目,开始进行统计和跟踪开发人员根据需求文档完成需求分析文档,测试人员进行评审,评审的主要内容包括是否有遗漏或者双方理解不同的地方。测试人员完成测试计划文档,测试计划包括的内容上面有描述。测试人员根据修改好的需求分析文档开始写测试用例,同时开发人员完成概要设计文档,详细设计文档。此两份文档成为测试人员撰写测试用例的补充材料。测试用例完成后,测试和开发需要进行评审。测试人员搭建环境开发人员提交第一个版本,可能存在未完成功能,需要说明。测试人员进行测试,发现 BUG后提交给 BugZilla。开发提交第二个版本,包括 Bug Fix 以及增加了部分功能,测试人员进行测试。重复上面的工作,一般是 3-4 个版本后 BUG 数量减少,达到出货的要求。如果有客户反馈的问题,需要测试人员协助重现并重新测试。
在您以往的工作中,一条软件缺陷(或者叫 Bug )记录都包含了哪些内容?如何提交高质量的软件缺陷( Bug )记录?
在传统的 BugZilla 中,BUG 描述应该包括以下的信息和 BUG 产生对应的软件版本和模块开发的接口人员BUG 的优先级BUG 的严重程度BUG 可能属于的模块,如果不能确认,可以用开发人员来判断BUG 标题,需要清晰的描述现象BUG 描述,需要尽量给出重新 Bug 的步骤BUG 附件中能给出相关的日志和截图。高质量的 BUG 记录就是指很容易理解的 BUG 记录,所以,对于描述的要求高,能提供的信息多且准确,很好的帮助开发人员定位,因此提交高质量的软件缺陷记录需要注意对 BUG 记录的描述质量多且准确。
您认为在测试人员同开发人员的沟通过程中,如何提高沟通的效率和改善沟通的效果?维持测试人员同开发团队中其他成员 良好的人际关系的关键是什么?
尽量面对面的沟通,其次是能直接通过电话沟通,如果只能通过 Email 等非及时沟通工具的话,强调必须对特性的理解深刻以及能表达清楚。运用一些测试管理工具如 TestDirector 进行管理也是较有效的方法,同时要注意在TestDirector 中对 BUG 有准确的描述。在团队中建立测试人员与开发人员良好沟通中注意以下几点:一真诚二是团队精神三是在专业上有共同语言四是要对事不对人,工作至上当然也可以通过直接指出一些小问题,而不是进入 BUG Tracking System 来增加对方的好感。
软件测试项目从什么时候开始?为什么?
软件测试应该在需求分析阶段就介入,因为测试的对象不仅仅是程序编码,应该对软件开发过程中产生的所有产品都测试,并且软件缺陷存在放大趋势.缺陷发现的越晚,修复它所花费的成本就越大.
测试结束的标准是什么?
从微观上来说,在测试计划中定义,比如系统在一定性能下平稳运行 72 小时,目前 BugTracking System 中,本版本中没有一般严重的 BUG,普通 BUG 的数量在 3 以下,BUG 修复率 90%以上等等参数,然后由开发经理,测试经理,项目经理共同签字认同版本 Release。如果说宏观的,则是当这个软件彻底的消失以后,测试就结束了。
您是否了解以往所工作的企业的软件开发过程?如果了解,请试述一个完整的开发过程需要完成哪些工作?分别由哪些不同的角色来完成这些工作?您在以往的测试工作中都曾经具体从事过哪些工作?其中最擅长哪部分工作?
开发过程—需求调研(需求人员)、需求分析(需求人员)、概要设计(设计人员)、详细设计(设计人员)、编码(开发人员)测试过程—需求评审、系统测试设计、概要设计评审、集成测试设计、详细设计评审、单元测试设计、测试执行测试工作的整个过程都做过,擅长做测试设计过程决定质量,软件的过程改进正是为了提高软件的质量,将过往的种种经验和教训积累起来。
补充
1.明确测试的目标,增强测试计划的实用性编写软件测试计划得重要目的就是使测试过程能够发现更多的软件缺陷,因此软件测试计划的价值取决于它对帮助管理测试项目,并且找出软件潜在的缺陷。因此,软件测试计划中的测试范围必须高度覆盖功能需求,测试方法必须切实可行,测试工具并且具有较高的实用性,便于使用,生成的测试结果直观、准确
2.采用评审和更新机制,保证测试计划满足实际需求
测试计划写作完成后,如果没有经过评审,直接发送给测试团队,测试计划内容的可能不准确或遗漏测试内容,或者软件需求变更引起测试范围的增减,而测试计划的内容没有及时更新,误导测试执行人员。分别创建测试计划与测试详细规格、测试用例,应把详细的测试技术指标包含到独立创建的测试详细规格文档,把用于指导测试小组执行测试过程的测试用例放到独立创建的测试用例文档或测试用例管理数据库中。测试计划和测试详细规格、测试用例之间是战略和战术的关系,测试计划主要从宏观上规划测试活动的范围、方法和资源配置,而测试详细规格、测试用例是完成测试任务的具体战术。
请你回答一下性能测试有哪些指标,对一个登录功能做性能测试,有哪些指标,怎么测出可同时处理的最大请求数量
参考回答:
性能测试常用指标:
从外部看,主要有
1、吞吐量:每秒钟系统能够处理的请求数,任务数
2、响应时间:服务处理一个请求或一个任务的耗时
3、错误率:一批请求中结果出错的请求所占比例
从服务器的角度看,性能测试关注CPU,内存,服务器负载,网络,磁盘IO
对登录功能做性能测试
单用户登陆的响应界面是否符合预期
单用户登陆时后台请求数量是否过多
高并发场景下用户登录的响应界面是否符合预期
高并发场景下服务端的监控指标是否符合预期
高集合点并发场景下是否存在资源死锁和不合理的资源等待
长时间大量用户连续登录和登出,服务器端是否存在内存泄漏
怎么测出可同时处理的最大请求数量
可以采用性能测试工具(WeTest服务器性能),该工具是腾讯wetest团队出品,使用起来很简单方便,但测试功能相当强大,能提供10w+以上的并发量,定位性能拐点,测出服务器模型最大并发
什么是兼容型测试?兼容性测试侧重哪些方面?
兼容测试主要是检查软件在不同的硬件平台、软件平台上是否可以正常的运行,即是通常说的软件的可移植性。兼容的类型,如果细分的话,有平台的兼容,网络兼容,数据库兼容,以及数据格式的兼容。兼容测试的重点是,对兼容环境的分析。通常,是在运行软件的环境不是很确定的情况下,才需要做兼容。根据软件运行的需要,或者根据需求文档,一般能够得出用户会在什么环境下使用该软件,把这些环境整理成表单,就得出做兼容测试的兼容环境了
兼容和配置测试的区别在于,做配置测试通常不是在Clean OS下做测试,而兼容测试多是在Clean OS环境下做的。
补充:做兼容测试的具体步骤:在列好的软硬件环境清单做冒烟测试,还是每一步都测试。测出不兼容,怎么和开发沟通,开发面对这些不兼容需要做什么。如果修复成本很高,怎么和产品经理沟通。和谁确认表单
软件测试项目从什么时候开始,?为什么?
软件测试应该在需求分析阶段就介入,因为测试的对象不仅仅是程序编码,应该对软件开发
过程中产生的所有产品都测试,并且软件缺陷存在放大趋势.缺陷发现的越晚,修复它所花费的成本就越大.
三、测试实战面试题
我现在有个程序,发现在Windows上运行的很慢,怎么判别是程序存在问题还是软硬件系统存在问题
1、检查系统是否有中毒的特征
2、检查软件/硬件的配置是否符合软件的推荐标准
3、确认当前的系统是否独立,即没有对外提供什么消耗CPU资源的服务
4、如果是C/S或者B/S结构的软件,需要检查是不是因为与服务器的连接有问题,或者访问有问题造成
5、在系统没有任何负载的情况下,查看性能监视器,确认应用程序对CPU/内存的访问情况
补充:每一步该怎么实现,需要用到什么技术
一个程序有n个变量采用边界值分析可以产生几个测试用例
4n+1
请设计一个关于ATM自动取款机的测试用例。
1)功能
a)ATM所识别卡的类型;
b)密码验证(身份登陆、是否为掩码、输入错误密码时是否提示,连续三次错误吞卡等);
c)取款功能:
i、金额多少的限制,单次最大最小提取金额、每天最大提取金额等);
Ii、取款币种的不同,如人民币、美元、欧元等。
d)是否提示客户操作完成后,打印相关操作信息;
e)查询功能是否正常;
f)转账功能是否正常;
g)是否提示客户操作完成后,取回客户卡;
2)性能
a)是否有自动吞卡:非法客户\\密码错误客户\\规定时间内未完成相关操作功能的客户。(如果有,有无报警功能(保密报警))
b)平均无故障时间,平均故障修复时间,输入密码后验证时间,出钞票时间,查询余额等待时间。
3)易用性
a)ATM各个操作功能(硬件)是否正常、易懂;
b)ATM的界面显示是否友好;
c)ATM是否支持英文操作;
d)ATM是否存在异常(断电、黑客入侵)有自动保护(报警)功能;
如何测试一个 纸杯?
功能度:用水杯装水看漏不漏;水能不能被喝到
安全性:杯子有没有毒或细菌
可靠性:杯子从不同高度落下的损坏程度
可移植性:杯子在不同的地方、温度等环境下是否都可以正常使用
兼容性:杯子是否能够容纳果汁、白水、酒精、汽油等
易用性:杯子是否烫手、是否有防滑措施、是否方便饮用
用户文档:使用手册是否对杯子的用法、限制、使用条件等有详细描述
疲劳测试:将杯子盛上水(案例一)放 24 小时检查泄漏时间和情况;盛上汽油(案例二)
放 24 小时检查泄漏时间和情况等
压力测试:用根针并在针上面不断加重量,看压强多大时会穿透
我手上这支笔,请你根据这支笔设计测试用例
首先我要测它的外观、颜色是否符合要求、所占的空间是多大、是否环保、接下来测它的质量、这支笔是否能够写字流畅、写出的自得颜色是否符合要求、能使用多长时间等
测试手机开机键
功能测试:按下开机键,屏幕能否亮起
性能测试:按下开机键,屏幕能否在规定时间内亮起
压力测试:连续多次按下开机键,观察屏幕是否能一直亮起,到多久时间失灵
健壮性测试:给定一个中了病毒的手机或者是淘汰许久的老机子,安歇开机键观察屏幕能否亮起
可靠性测试:连续按下开机键有限次数,比如1万次,记录屏幕未亮起的次数
可用性测试:开机键按下费不费力,开机键的形状设计是否贴合手指,开机键的位置设计是否方便
如何回答登录功能怎么进行测试?
首先,进行界面测试。
查看界面上的所有元素是否齐全;
没有输入内容时,是否有相应的提示语;
验证码是否能够显示;
移动鼠标,【登陆】按钮默认不能点击;
【忘记密码】是否有个小问号“?”(其他都有);
第二,进行功能测试。
输入正确的用户名、密码、验证码,点【登陆】能登陆;
输入正确的用户名、错误的密码、正确的验证码,提示用户名或密码错误;
输入错误的用户名、正确的验证码,提示用户名或密码错误;
输入正确的用户名、密码,错误的验证码,提示验证码错误;
输入不符合规则的手机号或者邮箱应该提示错误;
页面长时间不登陆和操作,验证码会不会过期;
点【记住密码】,登录后退出,再次登陆是不是可以不输入密码;
点【忘记密码】能够跳转到密码设置页面(至于是什么不用管,就是能不能跳转)
只点击验证码图案,验证码能不能刷新;
页面刷新,验证码图案能不能刷新;
输入栏是否设置快速删除按钮;
用户名和密码是否大小写敏感;
用户名和密码前后有空格的处理;
登陆成功,是否有记住密码功能;
登陆失败后,不能记录密码的功能;
新用户第一次登陆成功,是否有修改密码提示;
用户登录过程中log中是否有个人信息明文打印;
是否支持第三方登陆;
刷新页面时是否会刷新验证码;
输入密码的时候,大写键盘开启的时候要有提示信息 ;
不同级别的用户,比如管理员用户和普通用户,登录系统后的权限是否正确;
第三、业务安全测试。
有没有登陆错误次数的限制;
每次登陆错误之后有没有限制再次登陆的时间间隔;
是否支持一个账号多地登陆;
不同机型登陆,异地登陆是否有提醒 ;
不登录的情况下,在浏览器中直接输入登录后的URL地址,验证是否会重新定向到用户登录界面;
第四、兼容性测试。
在相同浏览器的不同版本上打开登录页面,效果是否一致;在不同浏览器上打开登录页面,效果是否一致;在不同操作系统的不同浏览器打开登录页面,效果是否一致;在不同的屏幕分辨率下打开登录页面,效果是否一致;
第五、代码安全性测试。
用户输入登录信息登陆时,个人信息是不是会显示在浏览器地址栏;
用户登陆的时候,通过抓包工具抓数据,密码是否加密;
查看页面源代码,验证码是否直接显示在代码中;
密码在后台储存时是否加密;
是否可以使用登录的API发送登录请求,并绕开验证码校验;
用户名和密码的输入框中分别输入典型的“SQL注入攻击”字符串,验证系统的返回页面;
用户名和密码的输入框中分别输入典型的“XSS跨站脚本攻击”字符串,验证系统行为是否被篡改;
第六、页面性能测试。
单用户登录的响应时间是否小于3秒;
通过工具向登录页发起大量请求,查看页面响应时间的变化;
通过工具对登陆功能进行并发测试;通过工具向登录页发起大量请求,查看页面何时崩溃;
通过工具向登录页发起大量请求,查看页面崩溃后有没有良好的提示信息;
通过工具向登录页发起大量请求,查看页面崩溃后多长时间能够恢复服务;
弱网,不同网速时登陆的时间,网络切换和网络延迟时登陆界面是否正常;
最后、易用性测试。
页面是否美观;
功能是否都可以使用;
页面速度快不快;
页面元素加载是否耗费网络流量;
能不能第三方登陆;
为什么不使用手机验证码登陆;
输入框能否可以以Tab键切换。
如何回答京东购物车功能怎么进行测试?
1.功能测试
a)、未登录时:
将商品加入购物车,页面跳转到登录页面,登录成功后购物车数量增加。
b)、登录后:
所有链接是否跳转正确;
商品是否可以成功加入购物车;
没有限购要求的商品,添加数量能不能超过库存数;
购物车商品总数是否有限制;
商品总数统计是否正确;
全选功能是否可用;
删除功能是否可用;
删除功能是否有提示;
价格总计是否正确;
商品文字太长时是否显示完整;
购物车中下架的商品是否有标识,是否还能支付;
新加入购物车商品排序(添加购物车中存在的店铺的商品和购物车中不存在的店铺的商品);
是否支持快TAB、ENTER等快捷键;
商品删除后商品总数是否减少;
收藏功能是否可用;
账号退出后,购物车添加的内容是否还在;
购物车结算功能是否可用。
限购商品按照规则购买完成后,还能不能再次添加购物车并购买;
2.兼容性测试
BS架构:不同浏览器测试,比如:IE,火狐,谷歌,360这些。
APP:在主流的不同类型,不同分辨率,不同操作系统的手机上测试,华为,vivo,oppo等
3.用户体验测试
删除商品是否有提示;
是否支持快捷键功能;
是否有回到顶部的功能;
商品过多时结算按钮是否可以浮动显示;
购物车有多个商品时,能不能只对单个商品结算;
界面布局、排版是否合理;
文字是否显示清晰;
不同卖家的商品是否区分明显。
4.性能测试
打开购物车页面要多长时间
支付流程测试
功能测试。
用等价类和边界值,判断支付的金额
如果没有登陆能否支付,支付成功后是否可以正常跳转;
支付方式是否支持扫码支付,第三方平台支付(支付包,云网等),语音支付,指纹支付;
支付时是否需要身份验证,支付后有无手机短信提示,是否可以找他人代付;
用边界值法有无支付额度限制,余额不足时有无提示,支付时是否是动态加密支付;
待支付状态:订单是否可以正常支付;是否可以取消;有相同订单是否可以支付两次;
是否可以扫码支付,输入错误的密码会怎样显示,有无错误次数限制;
若支持扫码支付,二维码是否支持支付包和微信扫码,若两人同时扫描怎么处理;
有无最小支付金额限制,无意义的支付金额0,重复支付如何处理;
如果支付包含优惠金额,该怎么处理优惠额度;
性能测试
弱网,无网时是否可以支付;
退款到账时间,耗电量的多少;
带负载情况下的响应时间和吞吐率,在某个时间段内同时访问系统的用户数量 ;
压力测试
多人同时付款;
界面测试;
支付界面有无错别字,排版是否合理,颜色搭配是否合理;
兼容性测试
是否可以跨平台,不同电脑机型下显示有无区别;
安全性测试;
若支付不成功是否原路退款,若支付成功,有无支付信息提示;
用fiddler抓包尝试修改价格,对订单金额有无效验;
直接输入需要权限的页面地址可用访问;
接口测试
第三方平台支付
对于有系统大量并发访问,你会如何做测试,有什么建议
参考回答:
如何做高并发系统的测试,一般而言,整体的测试策略是:先针对部分系统进行性能测试及压力测试,得到各部分的峰值处理性能,再模拟整体流程测试,重点测试整体业务流程以及业务预期负荷,着重测试以下几点:
1、不同省份,不同运营商CDN节点性能,可采用典型压力测试方案
2、核心机房BGP网络带宽,此部分重点在于测试各运行商的BGP网络可靠性,实际速率,一般采用smokeping,lxChariot等工具
3、各类硬件设备性能,一般采用专业的网络设备测试工具
4、各类服务器并发性能,分布式处理能力,可采用压力测试方案工具
5、业务系统性能,采用业务系统压力测试方案
6、数据库处理性能,这部分需要结合业务系统进行测试,以获取核心业务场景下的数据库的TPS/QPS,
7、如果有支付功能,需要进行支付渠道接口及分流测试,此部分相对而言可能是最大的瓶颈所在,此外还涉及备份方案,容灾方案,业务降级方案的测试。
请对这个系统做出测试用例:一个系统,多个摄像头,抓拍车牌,识别车牌,上传网上,网上展示
参考回答:
功能:
1.每个摄像头都能抓拍车牌;
2.每个摄像头抓拍到的车牌能正常交给系统处理;
3.系统能够正确识别车牌;
4.系统能够将识别出的车牌上传;
5.上传至网络的车牌能够正常展示出来;
一、功能测试
1.使用正常的车牌,保持车牌静止,检查每个摄像头是否能抓拍车牌;
2.使用类似非车牌的写有字的纸板,检查每个摄像头是否抓拍;
3.使用正常的车牌,保持车牌较高速移动,检查每个摄像头是否能抓拍车牌;
4.在多种情况下检查每个摄像头抓拍到的车牌能否正常交给系统处理,如临时断电、断网后能否正常将数据交给系统;
5.使用抓拍到的正常的车牌,交由系统处理,检查系统能否识别车牌;
6.使用非车牌的其他图片,交由系统处理,检查系统能否识别;
7.在多种情况下检查系统能否将正常识别出的车牌进行上传,如临时断电、断网后未上传数据是否能继续上传;
8.构造非车牌的其他内容的数据,检查系统能否将异常内容进行上传;
9.检查上传至网络的车牌能否正常展示出来;
10.上传非车牌的其他内容的数据,检查能否正常显示出来。
二、性能测试
1.同时向一个摄像头展示多个静止的车牌,检查摄像头能否抓拍到多个车牌;
2.同时向一个摄像头展示多个较高速运动的车牌,检查摄像头能否抓拍到多个车牌;
3.抓拍后,检查系统识别车牌的时间是否在需求要求的时间内;
4.模拟大量抓拍照片同时交由系统处理,检查一定压力下系统能否正常识别车牌;
5.模拟大量车牌同时上传,检查一定压力下能否上传成功。
三、安全性测试
1.检查是否能够通过给车牌加装饰物等方法,使摄像头无法抓拍或抓拍后系统无法正常识别车牌。
请你说一说PC网络故障,以及如何排除障碍
参考回答:
(1)首先是排除接触故障,即确保你的网线是可以正常使用的。然后禁用网卡后再启用,排除偶然故障。打开网络和共享中心窗口,单击窗口左上侧“更改适配器设置”右击其中的“本地连接“或”无线网络连接”,单击快捷菜单中的“禁用”命令,即可禁用所选网络。接下来重启网络,只需右击后单击启用即可。
(2)使用ipconfig查看计算机的上网参数
1、单击“开始|所有程序|附件|命令提示符“,打开命令提示符窗口
2、输入ipconfig,按Enter确认,可以看到机器的配置信息,输入ipconfig/all,可以看到IP地址和网卡物理地址等相关网络详细信息。
(3)使用ping命令测试网络的连通性,定位故障范围
在命令提示符窗口中输入”ping 127.0.0.1“,数据显示本机分别发送和接受了4个数据包,丢包率为零,可以判断本机网络协议工作正常,如显示”请求超时“,则表明本机网卡的安装或TCP/IP协议有问题,接下来就应该检查网卡和TCP/IP协议,卸载后重装即可。
(4)ping本机IP
在确认127.0.0.1地址能被ping通的情况下,继续使用ping命令测试本机的IP地址能否被ping通,如不能,说明本机的网卡驱动程序不正确,或者网卡与网线之间连接有故障,也有可能是本地的路由表面收到了破坏,此时应检查本机网卡的状态是否为已连接,网络参数是否设置正确,如果正确可是不能ping通,就应该重新安装网卡驱动程序。丢失率为零,可以判断网卡安装配置没有问题,工作正常。
(5)ping网关
网关地址能被ping通的话,表明本机网络连接以及正常,如果命令不成功,可能是网关设备自身存在问题,也可能是本机上网参数设置有误,检查网络参数。
微信红包
功能
1.在红包钱数,和红包个数的输入框中只能输入数字
2.红包里最多和最少可以输入的钱数 200 0.01
3.拼手气红包最多可以发多少个红包 100
3.1超过最大拼手气红包的个数是否有提醒
4.当红包钱数超过最大范围是不是有对应的提
5.当发送的红包个数超过最大范围是不是有提示
6.当余额不足时,红包发送失败
7.在红包描述里是否可以输入汉字,英文,符号,表情,纯数字,汉字英语符号,
7.1是否可以输入它们的混合搭配
8.输入红包钱数是不是只能输入数字
9.红包描述里许多能有多少个字符 10个
10.红包描述,金额,红包个数框里是否支持复制粘贴操作
12.红包描述里的表情可以删除
13.发送的红包别人是否可以领取
13.1发的红包自己可不可以领取 2人
- 24小时内没有领取的红包是否可以退回到原来的账户
14.1 超过24小时没有领取的红包,是否还可以领取
15.用户是否可以多次抢一个红包
16.发红包的人是否还可以抢红包 多人
17.红包的金额里的小数位数是否有限制
18.可以按返回键,取消发红包
- 断网时,无法抢红包
20.可不可以自己选择支付方式
21.余额不足时,会不会自动匹配支付方式
22.在发红包界面能否看到以前的收发红包的记录
23.红包记录里的信息与实际收发红包记录是否匹配
24.支付时可以密码支付也可以指纹支付
25.如果直接输入小数点,那么小数点之前应该有个0
26.支付成功后,退回聊天界面
27.发红包金额和收到的红包金额应该匹配
28.是否可以连续多次发红包
29.输入钱数为0,"塞钱进红包"置灰
性能
1.弱网时抢红包,发红包时间
2.不同网速时抢红包,发红包的时间
3.发红包和收红包成功后的跳转时间
4.收发红包的耗电量
5.退款到账的时间
兼容
1.苹果,安卓是否都可以发送
以上是关于知乎万赞:熬夜整理出的软件测试面试题大全(2021最新)的主要内容,如果未能解决你的问题,请参考以下文章
知乎万赞:Java程序员的悲哀竟然是......自己的技术能力不能满足大厂要求?