1.什么是测试用例 什么是测试脚本 两者的关系是什么?
测试用例:为实施测试而向被测试系统提供的输入数据、操作或各种环境设置以及期望结果的一个特定的集合。
测试脚本:是为了进行自动化测试而编写的脚本。
两者的关系: 测试脚本的编写必须对应相应的测试用例
2.您在以往的测试工作中都曾经具体从事过哪些工作?其中最擅长哪部分工作?
我曾经做过web测试,后台测试,客户端软件,其中包括功能测试,性能测试,用户体验测试。最擅长的是功能测试
3.为什么要在一个团队中开展?
在团队中开展软件测试工作,是因为没有经过测试的软件很难在发布之前知道该软件的质量,就好比ISO质量认证一样,测试同样也需要质量的保证,这个时候就需要在团队中开展软件测试的工作。
软件质量的好坏直接影响消费者的利益,所以优秀的软件一定要经过测试后,才能上市。在测试的过程发现软件中存在的问题,及时让开发人员得知并修改问题,在即将发布时,从测试报告中得出软件的质量情况。
4.您所熟悉的软件测试类型都有哪些?请试着分别比较这些不同的测试类型的区别与联系(如功能测试、性能测试……)
测试类型有:功能测试,性能测试,界面测试。
功能测试在测试工作中占的比例最大,功能测试也叫黑盒测试。是把测试对象看作一个黑盒子。利用黑盒测试法进行动态测试时,需要测试软件产品的功能,不需测试软件产品的内部结构和处理过程。采用黑盒技术设计测试用例的方法有:等价类划分、边界值分析、错误推测、因果图和综合策略。
性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。压力测试是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试。
界面测试,界面是软件与用户交互的最直接的层,界面的好坏决定用户对软件的第一印象。而且设计良好的界面能够引导用户自己完成相应的操作,起到向导的作用。同时界面如同人的面孔,具有吸引用户的直接优势。设计合理的界面能给用户带来轻松愉悦的感受和成功的感觉,相反由于界面设计的失败,让用户有挫败感,再实用强大的功能都可能在用户的畏惧与放弃中付诸东流。
自动化测试,----待补充
区别在于,功能测试关注产品的所有功能上,要考虑到每个细节功能,每个可能存在的功能问题。性能测试主要关注于产品整体的多用户并发下的稳定性和健壮性。界面测试更关注于用户体验上,用户使用该产品的时候是否易用,是否易懂,是否规范(快捷键之类的),是否美观(能否吸引用户的注意力),是否安全(尽量在前台避免用户无意输入无效的数据,当然考虑到体验性,不能太粗鲁的弹出警告)?做某个性能测试的时候,首先它可能是个功能点,首先要保证它的功能是没问题的,然后再考虑该功能点的性能测试
5.您在从事性能测试工作时,是否使用过一些测试工具?如果有,请试述该工具的工作原理,并以一个具体的工作中的例子描述该工具是如何在实际工作中应用的。
有使用过LoadRunner,该工具能够录制测试人员的操作步骤,然后对这个操作步骤模拟出多个用户来播放出来。
1、Visural User Genertor 创建脚本,选择协议,录制操作,编辑操作。
2、中央控制器(Controller)调度虚 拟用户,创建场景,选择脚本,建立虚拟用户,设计shedual,设置ip spoofer。
3、运行脚本。分析shedual。
4、分析测试结果。
6.简述什么是静态测试、动态测试、黑盒测试、白盒测试、α测试 β测试
静态测试是不运行程序本身而寻找程序代码中可能存在的错误或评估程序代码的过程。
动态测试是实际运行被测程序,输入相应的测试实例,检查运行结果与预期结果的差异,判定执行结果是否符合要求,从而检验程序的正确性、可靠性和有效性,并分析系统运行效率和健壮性等性能。
黑盒测试一般用来确认软件功能的正确性和可操作性,目的是检测软件的各个功能是否能得以实现,把被测试的程序当作一个黑盒,不考虑其内部结构,在知道该程序的输入和输出之间的关系或程序功能的情况下,依靠软件规格说明书来确定测试用例和推断测试结果的正确性。
白盒测试根据软件内部的逻辑结构分析来进行测试,是基于代码的测试,测试人员通过阅读程序代码或者通过使用开发工具中的单步调试来判断软件的质量,一般黑盒测试由项目经理在程序员开发中来实现。
α测试是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的受控测试,Alpha测试不能由程序员或测试员完成。
β测试是软件的多个用户在一个或多个用户的实际使用环境下进行的测试。开发者通常不在测试现场,Beta测试不能由程序员或测试员完成。
7.软件质量保证体系是什么 国家标准中与质量保证管理相关的几个标准是什么?他们的编号和全称是什么?
SQA由一套软件工程过程和方法组成,以保证(软件的)质量。SQA贯穿整个软件开发过程,(它)应包括需求文档评审、代码控制、代码评审、变更管理、配置管理、版本管理和软件测试。
软件质量保证(SQA-Software Quality Assurance)是建立一套有计划,有系统的方法,来向管理层保证拟定出的标准、步骤、实践和方法能够正确地被所有项目所采用。软件质量保证的目的是使软件过程对于管理人员来说是可见的。它通过对软件产品和活动进行评审和审计来验证软件是合乎标准的。软件质量保证组在项目开始时就一起参与建立计划、标准和过程。这些将使软件项目满足机构方针的要求。
8.软件产品质量特性是什么?
功能性:适应性、准确性、互操作性、依从性、安全性。
可靠性:成熟性、容错性、易恢复性。
可使用性:易理解性、易学习性、易操作性。
效率:时间特性、资源特性。
可维护性:易分析性、易变更性、稳定性、易测试性。
可移植性: 适应性、易安装性、遵循性、易替换性
9.软件测试的原则与策略是什么?
a) 软件测试的原则:
教材的说法:
i. 软件测试应尽早执行,并贯穿于整个软件生命周期
ii. 软件测试应追溯需求
iii. 测试应由第三方来构造
iv. 穷举测试是不可能的,要遵循Good-enough原则
v. 必须确定预期输出(或结果)
vi. 必须彻底检查每个测试结果
vii. 充分注意测试中的群集现象
viii. 缺陷的二八定理
ix. 严格执行测试计划,排除测试的随意性
x. 注意合法合理的输入,也要注意非法的非预期的输入
xi. 检查程序是否做了不该做的
xii. 测试应从“小规模”开始,逐步转向“大规模”
xiii. 反复使用同样的测试会使软件具有抵抗力
xiv. 关注缺陷的修复
另一种说法:
i. 应当把“尽早和不断地测试”作为开发者的座右铭。
ii. 程序员应该避免检查自己的程序,测试工作应该由独立的专业的软件测试机构来完成。
iii. 设计测试用例时,应该考虑到合法的输入和不合法的输入,以及各种边界条件,特殊情况下要制造极端状态和意外状态,比如网络异常中断、电源断电等情况。
iv. 一定要注意测试中的错误集中发生现象,这和程序员的编程水平和习惯有很大的关系。
v. 对测试错误结果一定要有一个确认的过程。一般有A测试出来的错误,一定要有一个B来确认,严重的错误可以召开评审会进行讨论和分析。
vi. 制定严格的测试计划,并把测试时间安排得尽量宽松,不要希望在极短的时间内完成一个高水平的测试。
vii. 回归测试的关联性一定要引起充分的注意,修改一个错误而引起更多错误出现的现象并不少见。
viii. 妥善保存一切测试过程文档,意义是不言而喻的,测试的重现性往往要靠测试文档。
b) 软件测试策略:在一定的软件测试标准、测试规范的指导下,依据测试项目的特定环境约束而规定的软件测试的原则、方式、方法的集合。
10.结构化系统测试和功能性系统测试分别采用了哪些方法和技术?
结构化系统测试计划:用于验证所开发的系统及程序的运行情况。目标是要确保产品设计在结构上合理,功能上正确。为确定实现的配置及其各功能共同作用以完成特定任务提供了一种机制。结构化测试技术由以下几种:
压力测试:确定系统以期望的容量执行。压力测试技术用于检查系统面对意外情况下的大数据量时是否可以正常运行。所涉及的方面包括输入事务、内部表、磁盘空间、输出、通信、计算机容量以及人机交互等。当应用系统所能正常处理的工作量并不确定时需要使用压力测试。压力测试意图通过对系统施加超负载事务量来达到破坏系统的目的。弱点在于准备测试的时间与在测试的实际执行过程中所消耗的资源数量都非常之大,通常在应用程序投入使用之前这种技术是无法进行的。
执行测试:系统能达到期望的熟练性。举例:事务轮转时间充分;软硬件使用良好。执行测试技术用于检查系统是否达到了预期在产品状态下的成熟度。执行测试可以验证系统的响应时间、轮转时间及设计性能。在开发过程的早期就应该进行执行测试,尽早制定已经完成的系统没有达到性能指标是非常有价值的。在关键时间点进行。关键时间点指的是当前的结果会影响甚至改变系统结构的时间点。
恢复测试:系统失效之后可以恢复到可操作状态。举例:引入失败;评估备份数据的充分性。恢复测试技术用于确保系统在经历灾难后可以继续正常运行,它不仅可以验证恢复过程,而且可以验证过程各组件的有效性。
11.软件测试分为几个阶段 各阶段的测试策略和要求是什么?
和开发过程相对应,测试过程会依次经历单元测试、集成测试、系统测试、验收测试四个主要阶段:
单元测试:单元测试是针对软件设计的最小单位––程序模块甚至代码段进行正确性检验的测试工作,通常由开发人员进行。
集成测试:集成测试是将模块按照设计要求组装起来进行测试,主要目的是发现与接口有关的问题。由于在产品提交到测试部门前,产品开发小组都要进行联合调试,因此在大部分企业中集成测试是由开发人员来完成的。
系统测试:系统测试是在集成测试通过后进行的,目的是充分运行系统,验证各子系统是否都能正常工作并完成设计的要求。它主要由测试部门进行,是测试部门最大最重要的一个测试,对产品的质量有重大的影响。
验收测试:验收测试以需求阶段的《需求规格说明书》为验收标准,测试时要求模拟实际用户的运行环境。对于实际项目可以和客户共同进行,对于产品来说就是最后一次的系统测试。测试内容为对功能模块的全面测试,尤其要进行文档测试。
12.面向对象的测试用例设计有几种方法?如何实现?
给类中的每一个构造函数设计一组测试用例
组合类中的类变量,实例变量
组合类中的各种方法
根据前置条件和后置条件测试用例
根据代码设计测试用例
13.在软件测试各个阶段通常完成什么工作?各个阶段的结果文件是什么?包括什么内容?
单元测试阶段:各独立单元模块在与系统地其他部分相隔离的情况下进行测试,单元测试针对每一个程序模块进行正确性校验,检查各个程序模块是否正确地实现了规定的功能。生成单元测试报告,提交缺陷报告。
集成测试阶段:集成测试是在单元测试的基础上,测试在将所有的软件单元按照概要设计规格说明的要求组装成模块、子系统或系统的过程中各部分工作是否达到或实现相应技术指标及要求的活动。该阶段生成集成测试报告,提交缺陷报告。
系统测试阶段:将通过确认测试的软件,作为整个给予计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其他系统元素结合在一起,在实际运行环境下,对计算机系统进行全面的功能覆盖。该阶段需要提交测试总结和缺陷报告。
14.上家公司项目组有几个人?(测试/开发/ui)
15.假如你是项目负责人 管理5~7个测试 你这么来设计测试计划?
项目计划的制定分为以下几个步骤进行:
第一步:对项目工作进行分解,形成WBS
对项目工作进行分解制定项目计划的基础,项目工作分解的越细越准确项目计划的质量越高。
对于项目工作的分解可以是以时间为顺序进行分解,也可以依据产品构成制定分解结构。
第二步:估算项目工作的工时
当完成项目工作的分解以后,接下来就对已经分解完成的项目进行工时的估算。估算工时的时候比较合理的做法是进行三点估算。但是为了简单快速也可以是大致估算加上一个风险的合理分配。
第三步:建立项目工作的关键路径
根据分解的工作之间的关系,建立项目工作的关键路径,因为我们会发现其实不少工作是可以并行进行完成的,进行项目的并行工作可以大大节约我们的资源。
第四步:制定项目计划的日期和人员
这里要区分一点就是我们在上面提到的工时和工期两个概念的区别,工期是指完成一项工作所需要的时间,而工期是指在什么时间段完成这项工作。工期可以大于、等于或小于工时。
比如当我们的工期安排中存在着休息日或节假日的时候我们的工期可能是七天,而工时是五天,有两天是星期六和星期日。当一项工作我们安排两个人同时进行的时候,工期就会大大缩短,小于工时。
再为每个工作安排明确的执行人员。
项目计划的专门制作工具包括project和excel等通过使用这些工具可以大大提升我们制作项目计划的工作效率。
16.你负责A项目,别人负责B项目,A项目5点钟会上线新功能,在2点的时候,发现A项目的上线会影响B项目,B项目的人临时被调走,没有办法进行协助,这时该怎么做?
1、提前3小时发现问题,应及时向上级反映,做出应对方案,请求上级给与指示;
2、向上级申请B项目人员进行突发事件处理,确保A项目的发布顺利进行;
3、评估A项目的上线对B项目的影响是否过大。征求上级意见,进行下一步补救;
4、向上级报备备选方案,如影响较大,延迟A项目上线时间,确保A项目与B项目正常运行与上线是否可行。
17.如果你正在测试一个电商APP,从APP中选择了两个产品,一个全价,一个打折,并且都添加到购物车中,在购物车中成功支付,之后去已购买产品的列表中查看时,发现只有全价产品,没有打折商品。此时你应当如何分析和定位该问题?
1、分析单个的打折产品、全价产品购买后,是否有购买记录,需分别进行两种产品的单独购买
2、将题目中的场景再现一次,确定是否是偶发现象(此时分两种情况,若打折产品出现了,则题目中有可能是偶发现象,需按照偶发问题处理方法来解决;若打折产品不出现,此时需通过抓包确定是前端还是后端问题)
3、购买多个打折产品,查看是否有购买记录,排除系统对于打折产品没有单独处理的情况
4、特殊情况:如手机兼容性,网络情况,打折产品库存不足等。
18.Jenkins可以自动生成测试报告,你在做自动化的时候为什么还要集成ant和HTMLTestRunnenr
19.主流功能测试(购物车/支付/搜索/微信点赞/文件上传/ATM取款...能口述即可)
20.Jmeter功能
21.Chalers功能
1. 支持SSL代理。可以截取分析SSL的请求。
2. 支持流量控制。可以模拟慢速网络以及等待时间(latency)较长的请求。
3. 支持AJAX调试。可以自动将json或xml数据格式化,方便查看。
4. 支持AMF调试。可以将Flash Remoting 或 Flex Remoting信息格式化,方便查看。
5. 支持重发网络请求,方便后端调试。
6. 支持修改网络请求参数。
7. 支持网络请求的截获并动态修改。
8. 检查HTML,CSS和RSS内容是否符合W3C标准。
逻辑题
1.一元钱一瓶汽水,喝完后两个空瓶换一瓶汽水,问:你有20元钱,最多可以喝到几瓶汽水?
解题过程:
20元钱可以买20瓶汽水。
20个空瓶可以换的汽水为:20÷2=10(瓶)
10个空瓶可以换的汽水为:10÷2=5(瓶)
5瓶汽水喝完后得到5个空瓶,兑换1瓶,喝完后,和剩下3个空瓶兑换2瓶汽水,喝完后,再兑换1瓶。
最多喝汽水的瓶数为:20+10+5+2+1+1+1=40(瓶)。
共最多喝40瓶汽水。
2.想想你在镜子前,请问,为什么镜子中的影像可以颠倒左右,却不能颠倒上下?
因为人的影象与人是关于镜子对称的,而镜子是立着放的,所以镜子中人就是颠倒左右,
3.你有四个装药丸的罐子,每个药丸都有一定的质量,被污染的药丸是没有被污染的重量+1,只称量一次,如何判断那个罐子的药被污染了?
设未被污染的每个药丸的重量是x,则被污染的每个药丸的重量是x+1。将4个罐子分别标注为1、2、3、4,取一号罐子1个药丸,二号罐子2个药丸,三号罐子3个药丸,四号罐子4个药丸,一起称重,则:
若一号罐子药丸被污染,则重量为(10x+1)
若二号罐子药丸被污染,则重量为(10x+2)
若三号罐子药丸被污染,则重量为(10x+3)
若四号罐子药丸被污染,则重量为(10x+4)2
4.对一批编号为1-100,全部开关朝上(开)的灯进行一下操作:凡是1的倍数的灯反方向拨一次开关;2的倍数反方向又拨一次开关,3的倍数反方向又拨一次开关,,,问:最后为关熄状态的灯的编号。
若实际操作求解会相当繁琐。我们知道,就某个亮着的灯而言,如果拨其开关的次数是奇数次,那么,结果它一定是关着的。根据题意可知,号码为N的灯,拨开关的次数等于N的约数的个数,约数个数是奇数,则N一定是平方数。因为10=100,可知100以内共有10个平方数,即,最后关熄状态的灯共有10盏,编号为1、4、9、16、25、36、49、64、81、100。
5.一名军官要求24名士兵站成6排,每排都是5人,士兵们全犯傻了。最后一名士兵终于想出了一个好办法。他是怎样安排的?
6.假设有一个池塘,里面有无穷多的水。现有2个空水壶,容积分别为5升和6升。问题是如何只用这2个水壶从池塘里取得3升的水。
先把六升壶装满,然后倒入五升壶中。六升壶中还剩下一升水,五升壶中的水倒出来,把六升壶中的一升水倒进五升壶里边,五升壶里现在有一升水了,六升再装满倒进五升五升中原有一升还可以倒进去四升的水,六升壶中倒出四升水,还剩下两升水,六升壶中现在有两升水,把五升壶中的水倒出来,再把六升壶中的两升水倒进五升壶中,五升壶里现在有两升水了,六升壶里再装满水,再倒进五升壶中,五升壶中原来有两升水,还可以倒进去三生,六升壶中倒出了三升水,还剩下三升
7.五个大小相同的一元人民币硬币。要求两两相接触,应该怎么摆?
8.一个人花8块钱买了一只鸡,9块钱卖掉了,然后他觉得不划算,花10块钱又买回来了,11块卖给另外一个人。问他赚了多少?
9.一楼到十楼的每层电梯门口都放着一颗钻石,钻石大小不一。你乘坐电梯从一楼到十楼,每层楼电梯门都会打开一次,只能拿一次钻石,问怎样才能拿到最大的一颗
10.两个空心球,大小及重量相同,但材料不同。一个是金,一个是铅。空心球表面图有相同颜色的油漆。现在要求在不破坏表面油漆的条件下用简易方法指出哪个是金的,哪个是铅的。
11.屋里三盏灯泡,屋外三个开关,一个开关仅控制一盏灯,屋外看不到屋里怎样只进屋一次,就知道哪个开关控制哪盏灯?四盏呢~
12.10箱黄金,每箱100块,每块一两。有贪官,把某一箱的每块都磨去一钱。请称一次找到不足量的那个箱子
13.你让工人为你工作7天,给工人的回报是一根金条。金条平分成相连的7段,你必须在每天结束时都付费,如果只许你两次把金条弄断,你如何给你的工人付费?
14.仅仅有一个七分钟的沙漏斗,和一个四分钟的沙漏斗,怎么测出9分钟时间?
人资问题
1.你的离职原因是什么?
2.为什么离职?
3.我们这边可能给你的薪资达不到您的预期,您如何考虑?
4.我看您住的地方与我公司较远,您如何考虑的?
5.我看你的年龄与身份证不符,您能说下原因吗?
6.假如您和开发起冲突了,您会如何解决?
7.您可以接受加班吗?
8.您认为在测试人员同开发人员的沟通过程中, 如何提高沟通的效率和改善沟通的效果?维持测试人员同开发团队中其他成员良好的人际关系的关键是什么?
9.你对测试最大的兴趣在哪里?为什么?
10.你的测试是什么?
11.你自认为测试的优势在哪里?
12.你对我们公司了解有多少?
13.你找工作时,最重要的考虑因素为何?
面试官最后会问你有什么问题要问吗。作为应聘者的你一般不要说没问题问,这会给面试官留下你不太重视这份工作的坏印象。所以如果你想得到这份工作的话应该抓住这最后的表现自己的机会:
你可以问:
1. 贵公司近期和远期的发展目标是什么?
2. 贵公司的主要竞争对手有哪些?
3. 贵公司有多少开发人员有多少测试人员?
4. 贵公司又进一步扩充测试人员的计划吗?
5. 如果我有幸能进入贵公司的话,我有怎么样的发展?
6. 测试人员的沟通能力很重要,贵公司有规范的沟通渠道吗?
7. 请介绍一下贵公司的福利情况。
8. 请问我什么时候能知道结果?