软件测试之蚂蚁金服面试题,含答案
对于想要去面试的小伙伴们看过来,小编为大家总结了蚂蚁的面试题,其实很多面试题很多公司都差不多。主要看自己如何灵活回答,大家可以灵活回应。希望对大家有所帮助。
一:基础部分:
Q1. 什么是软件测试?
答:软件测试就是发现软件当中存在的缺陷,提高软件的质量。它贯穿于软件工程整个生命周期中,跟开发一样,是一个不可或缺的技术方向。
Q2. 软件测试过程中会面向哪些群体?
答:如果你是Tester的,一般只与Leader交流就可以了。 如果你是Leader的,一般只与项目经理交流就可以了。 如果你是PM的,一般要与所有人交流。 如果你公司没有规范的开发流程你一般要与所有人交流。
Q3. 什么是软件工程?
答:它是一门研究用工程化方法构建和维护有效的,实用和高质量的软件的学科,它涉及到程序设计语言,数据库,软件开发工具,系统平台标准,设计模式等方面
Q4. 开发一个软件都要经过哪些阶段?
答:问题的定义及规划,需求分析,软件设计,程序编码,软件测试,运营维护
Q5. 什么是黑盒测试,什么是白盒测试?
答:黑盒测试:是通过使用整个软件或某种软件功能来严格地测试, 而并没有通过检查程序的源代码或者很清楚地了解该软件的源代码程序具体是怎样设计的。测试人员通过输入他们的数据然后看输出的结果从而了解软件怎样工作。在测试时,把程序看作一个不能打开的黑盆子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求 规格说明书的规定正常使用,程序是否能适当地接收和正确的输出
白盒测试:是通过程序的源代码进行测试而不使用用户界面。这种类型的测试需要从代码句法发现内部代码在算法,溢出,路径,条件等等中的缺点或者错误,进而加以修正
Q6. 一个测试工程师应具备哪些素质
答: 沟通能力,技术能力,自信心,幽默感,耐心,很强记忆力,怀疑精神,自我督促,洞察力。(答案不唯一)
Q7. 什么是C/S,什么是B/S?
答:C/S (Client/Server)结构,即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是Client/Server形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Server 应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的发展方向。
B/S(Browser/Server)结构即浏览器和服务器结构。它是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,形成所谓三层3-tier结构。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO)。以目前的技术看,局域网建立B/S结构的网络应用,并通过Internet/Intranet模式下数据库应用,相对易于把握、成本也是较低的。它是一次性到位的开发,能实现不同的人员,从不同的地点,以不同的接入方式(比如LAN, WAN, Internet/Intranet等)访问和操作共同的数据库;它能有效地保护数据平台和管理访问权限,服务器数据库也很安全 。特别是在JAVA这样的跨平台语言出现之后,B/S架构管理软件更是方便、快捷、高效。
Q8. 什么是后台?
答:后台程序简称后台,一般情况下,后台程序也叫任务级程序,前台程序也叫事件处理级程序。在程序运行时,后台程序检查每个任务是否具备运行条件,通过一定的调度算法来完成相应的操作。
Q9.用一条SQL语句查出分数大于80分的学生名字
表名t_student Name kecheng fenshu
张云 语文 79
李四 数学 80
王五 英语 90
李佳 英语 89
李晟 数学 99
答select s.name from t_student s where s.fenshu>80;
Q10.与工程师出现冲突,如何解决?例如:工程师因项目时间冲突导致有多个bug要解决,此时如何与工程师正确的沟通?
答:把问题弄清楚。
· 测试用最简单和常见的步骤来重现bug,如果可能,通过模拟用户场景来展示其问题的重点所在。
· 开发针对场景给出合理的技术分析。
· 双方共同评估风险。
尝试提出解决问题的方法和自己能做的贡献。
· 有时候开发不愿意改bug是因为时间紧张,或者认为风险较大。测试如果能提供合理的回归测试计划会解决开发的后顾之忧。
· 有时候开发的方案测试不愿意接受是因为测试风险太大,这时候开发可以尝试提出折中方案,将风险降到最小。
请第三方介入,特别是产品经理。
是否是bug经常是争吵的焦点。特别是对于需求中不明确的地方或者非功能性的需求,比如易用性,性能等等。这时候往往不是开发和测试沟通就能解决的了得。需要产品经理来一起讨论决定。
Q11.输入三个整数,判断三个整数能否构成一个三角形,请设计出相应的测试用例。
二:进阶部分
Q1.你所了解的黑盒测试方法有哪些?并简单介绍下其应用场景?
答:黑盒测试方法等价类划分、边界值方法、因果图法、判定表、场景法、正交法、大纲法、状态图法。
应用场景:
业务表述层使用:业务分析法、大纲法
剧本层使用:场景法、状态转换
对象模型层使用:因果图、正交法
抽象数据层使用:边界值、等价类划分
用例表述层:详细测试用例
测试脚本层:编写自动化测试脚本
Q2.简述常用的bug管理或者用例管理工具,并且描述其中的一个工作流程?
答:常用的bug管理工具有bugfree、QC、bugzilla、禅道、mantis、Jira等。
此处以Bugfree为例的工作流程:测试人员新提交bug到bugfree上,开发人员对bug进行解决,解决之后测试人员对已解决的bug进行回归验证,已经成功修改的bug进行关闭,没有成功解决的bug变成新bug,让开发继续修改。
Q3.什么是正交实验法,使用场景是什么?
答:正交实验法是从大量的(实验)数据(测试例)中挑选适量的,有代表性的点(例),从而合理地安排实验(测试)的一种科学实验设计方法。
使用场景:利用因果图来设计测试用例时, 作为输入条件的原因与输出结果之间的因果关系,有时很难从软件需求规格说明中得到。往往因果关系非常庞大,以至于据此因果图而得到的测试用例数目多的惊人,给软件测试带来沉重的负担,为了有效地,合理地减少测试的工时与费用,可利用正交实验设计方法进行测试用例的设计。
Q4.请简单描述测试工具loadrunner、selenium、QTP的产品用途,并介绍你在项目中实际用到的功能模块?
答:三种测试工具的用途分别如下
loadrunner的用途:LR是一个性能测试工具,一般用来做压力、负载测试等性能测试。可以创建虚拟用户、创建真实的负载、定位性能问题、分析结果、重复测试、测试系统行为,优化系统性能。
Selenium用途:Selenium是一个开源的功能自动化测试工具,脚本语言可以是:Java、.Net、Perl等不同语言的测试脚本。并支持自动录制动作和自动生成脚本的功能。在浏览器兼容性方面有很好的支持。
QTP的用途:QTP是一个GUI界面功能自动化测试工具,简单来说就是可以录制人操作,然后回放,工具根据录制好的人操作来操作系统,这样可以很好地进行回归测试。也可以使用VBS脚本语言进行编写脚本来使用。
Q5.简述selenium grid的作用?
答:Selenium Grid是一种自动化的测试辅助工具,Grid通过利用现有的计算机基础设施,能加快Web-app的功能测试。利用Grid,可以很方便地同时在多台机器上和异构环境中并行运行多个测试事例。
Q6.高质量的自动化脚本应该具备哪些特性?
答1、不需要深入的工作或计划2、可以加快测试进度开始自动化3、对实际执行操作可以审计跟踪4、用户不必是编程人员就能执行5、可以提供良好的(软件或工具)的演示
Q7.编写测试计划文档的目的是什么?测试计划文档的内容主要包括哪些?并简单介绍其作用?
答:测试计划文档的目的:指导测试组成员进行工作和让测试组以外的项目成员了解测试工作。
测试计划文档的内容:项目背景、计划文档的受众、参考文档、提交的文档、测试术语、测试范围、测试策略、测试资源及分工、测试进度、风险说明及应对方案、测试通过的标准。
测试计划的作用:
1.把知识和经验可以直接转化成执行任务的具体方法
2.促进团队间关于测试任务和过程的交流
3.为组织、安排和管理测试项目提供一个整体框
4.对项目执行过程中的风险进行分析,并制定相关的应对策略
Q8.项目某一轮系统测试完成后,达到系统测试结束的参考指标或规则通常有哪些?
答:
(1) 基本功能需求和非功能需求都实现了
(2) 全部测试用例回归测试都执行完毕了
(3) 框架不用再变了,缺陷数呈现收敛趋势,并趋于平稳的走势
(4) 规定等级的bug都修复了,比如1、2级的bug和紧急的bug都修复了,90%的3级bug也都解决了。没修复的都得到了审核和批准。
Q9.Unix/Linux查看所有属于java进程的命令是?并将其批处理杀掉?
答:ps –a | grep java
批处理杀掉进程的命令是:ps –ef|grep java|grep –v grep|awk ‘kill -9’
6Linux/unix查看内存的命令是什么?查看某文件末尾五行的命令是什么?
答: Linux/unix查看内存的命令:cat /proc/meminfo
查看某文件末尾五行的命令:tail -n 5 filename
Q10.java中sleep()和wait()的区别?抽象类和接口的主要区别是?
答:java中sleep()和wait()的区别:
1、这两个方法来自不同的类分别是Thread和Object2、最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。3、wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用4、sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常
抽象类和接口的主要区别是:
第一点. 接口是抽象类的变体,接口中所有的方法都是抽象的。而抽象类是声明方法的存在而不去实现它的类。第二点. 接口可以多继承,抽象类不行第三点. 接口定义方法,不能实现,而抽象类可以实现部分方法。第四点. 接口中基本数据类型为static 而抽类象不是的。
Q11.QTP中的RO和TO的区别?谈谈你生成某业务功能模块的QTP脚本具体操作步骤?
答:TO是仓库文件里的仓库对象,RO是被测软件的实际测试对象,两者是不同的对象,是独立的。QTP是通过TO来寻找和操作RO的,所以TO里必须含有RO的特征,这是两者相似的地方。TO的属性可以在录制时抓取RO的特征属性得来,也可以在脚本运行时通过SetTOProperty来随意更改,通过GetTOProperty来读取。RO的属性可以通过GetROProperty来读取。没有SetROProperty,要修改RO属性,只能通过对象具体的Method。TO的属性值和对应RO的属性值并不一定相同,TO的属性值可以包含通配符和多种可能的RO属性值。
Q12.关于selenium中,查找某个页面元素的常见方法有哪几种?对于窗体和页面框架:frame切换用什么方法?
答:Switchto()
Q13.RobotFramework框架中设置变量有几种方式?
答:设置变量的方式:Set 赋值、Get 赋值、运行时赋值
Q14.RobotFramework框架中调用各种cmd命令,用什么关键字?
Q15.写出你常用的测试工具有哪些?
答:比较熟悉的是Bugfree,除此之外还有以下的一些工具:
性能测试:Rational系列(除了Rational Rose,那是做UML建模的)
单元测试:CUnit(C/C++/C#)、JUnit(JAVA)
功能测试:WinRunner
压力测试:LoadRunner
Q16.介绍下你所经历的开发-测试-代码上线的整个相关流程?并简单描述下此流程.
答:开发流程:设计—评审—coding—单元测试
测试流程:设计测试用例—评审—冒烟测试—测试—测试报告
代码上线流程:从开发本地发布到开发服务器上—测试服务器—预热服务器—生产服务器上—生产环境的冒烟测试
#牛客在线求职答疑中心#