1.跟开发产生争执怎么办?
①先检查自身,是否bug描述不清楚。
②对bug的定级是否准确。
③站在用户的角度考虑问题,可以反问:如果你是用户,是否能够接受这样的实现呢。
④提升自身业务能力,最好不光能提出bug,也能提出解决方案。
⑤组织bug评审会议,邀请代表参加(产品经理代表、开发代表、测试代表)
bug评审会议要解决的问题:
①如何修改本次的bug
②如何避免类似问题的出现
2.请你分别介绍一下单元测试、集成测试、系统测试、验收测试和回归测试
①单元测试:针对最小模块的测试,一般由开发采用白盒测试。
②集成测试:把各个子模块通过接口组成系统进行测试,检查各模块的接口能否正常连接使用。
③系统测试:通过冒烟测试后,进行功能测试、性能测试、接口测试、兼容性测试、安全测试等,把所有的功能都运行一遍。
④验收测试:系统测试全部通过后,由产品、开发等以及最终用户体验,分为alpha测试和beta测试。
alpha测试和beta测试:
alpha测试:是由一个用户在开发者环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下的测试。
beta测试:是由软件的多个用户在实际使用环境下进行的测试,开发者通常不在现场,这些用户返回有关错误信息给开发者。
⑤回归测试:在发生修改后重新测试先前的测试用例已保证修改的正确性,也就是说,要确保此次bug的修复没有引发新的bug。
3.你认为单元测试、集成测试、系统测试、验收测试和回归测试中哪个最重要?
我认为系统测试最重要,因为此时单元测试和集成测试已经完成,能够对软件的所有功能进行测试,能够验证系统是否满足了需求规格的定义,因此我认为系统测试很重要。
4.请回答集成测试和系统测试的区别,以及他们的应用场景主要是什么?
区别:①系统测试用例计划书一般在需求阶段写,集成测试用例一般在概要设计阶段写;总之无论如何,系统测试用例一定比集成测试用例先写。②系统测试用例更接近用户测试用例,而集成测试比系统测试更详细。③执行顺序是先执行集成测试后进行系统测试。
应用场景:集成测试应用于测试程序模块的接口,系统测试用于测试整个系统的功能。
5.测试开发需要具备哪些知识和能力?
知识:①软件测试基础知识;②自动化测试工具;③计算机基础;④测试框架等
能力:①业务分析能力;②缺陷洞察能力;③团队协作能力;④逻辑思考能力;⑤问题解决能力;⑥宏观把控能力;⑦沟通表达能力;
6.说一说黑盒测试与白盒测试以及常用的测试方法
黑盒测试:也称功能测试或数据驱动测试。是不考虑程序内部逻辑结构,根据需求说明书对功能进行验证的一种测试方法。
常用的黑盒测试方法:等价类划分法;因果图法;场景法;正交实验设计法;错误推测法;功能图分析法。
白盒测试:也成结构测试或逻辑驱动测试,要考虑程序内部的设计,对程序代码结构进行的一项测试。
7.请说一下手动测试和自动化测试的优缺点
1)手动测试
缺点:①重复的手动测试,代价高;②依赖于测试人员的能力
优点:①测试人员具有经验和错误推测的能力;
②测试人员有审美能力和心理体验;
③测试人员有逻辑推理能力和是非判断能力;
2)自动化测试
优点:①节省时间和成本,提高资源利用率;
②方便进行回归测试;
③可以完成一些手动测试无法完成的测试,比如大量用户的测试;
④测试的复用性;
⑤增加软件的信任度。
缺点:①不能取代手动测试,查出的缺陷比手动测试少;
②可能会制约软件的开发;
③工具本身不具备想象力;
8.软件测试的核心竞争力是什么?
①早发现问题:问题发现的越早,解决的成本越低。如果一个需求在还未实现的时候就发现了需求的漏洞,那么这种问题的价值是最高的;
②发现别人发现不了的问题:如果你发现的问题别人发现不了,那么就证明你是不可替代的。
9.测试和开发怎样结合才能使软件的质量得到更好的保障?
测试和开发应该按照W模型进行结合,实现测试和开发同步进行,这样能尽早发现软件缺陷,减少软件开发的成本。如果是按照V模型来进行,将测试的部分后置,会导致测试人员不能够发现需求功能上的问题,等到最后验证时会出现大量的问题,从而增加开发成本。
10.你觉得单元测试可行吗?
可行。单元测试可以有效地测试某个程序模块的行为,是未来重构代码的信心保证。问题发现的越早解决的成本就越低。
11.自动化测试需要做些什么?
首先判断这个项目适不适合推广自动化测试,然后对项目做需求分析,制定测试计划,搭建自动化测试框架,设计测试用例,执行测试用例,评估。
12.测试的相关流程是什么?
需求测试→概要设计测试→详细设计测试→单元测试→集成测试→系统测试→验收测试。
13.如何编写测试用例?
①测试人员要尽早介入,彻底理解清楚需求,这个是写好测试用例的基础。
②参考过往类似案例的测试用例和bug情况。
③清楚输入输出的各种可能性以及之间的关联关系,理解清楚需求的执行逻辑,通过等价类、边界值、判定表等方法找出大部分用例。
④根据自己的经验分析遗漏的测试场景。
⑤书写格式一定要清晰。
⑥多总结类似功能的测试点,以便写出质量越来越高的测试用例。
14.你觉得测试项目具体的工作是什么?
参与需求评审,编写测试计划和测试用例,搭建测试环境,执行测试用例,提交bug表单,跟踪bug修改情况;编写自动化测试脚本并执行,提交测试报告。
15.如果想进行bug的测评,怎么去评测bug?
根据bug优先级和严重程度,通常测试人员在提交bug的时候,只定义严重程度,而将优先级交给leader进行定义。根据严重程度,bug可以分为以下几个等级:
①blocker:崩溃级。即系统无法执行,崩溃或者严重资源不足,应用模块无法启动或退出,内存泄漏,用户数据丢失或破坏等情况。
②critical:严重级。主要功能存在缺陷但不影响到系统的稳定性;常见的有:功能未实现,功能错误、数值计算错误等。
③major:一般级。即界面、性能缺陷、兼容性。
④minor:建议性。即易用性和建议性的问题。
16.请你说一下软件质量的六个特征
功能特征、易用特征、可靠特征、效率特征、可维护特征、可移植性特征
17.请你说一下设计测试用例的方法
黑盒测试:
①等价类划分:等价类划分是将系统的输入域划分为若干部分,然后从每个部分选取少量代表性数据进行测试。等价类可以划分为有效等价类和无效等价类。
②边界值分析法:边界值分析法是对等价类的一种补充,因为大多数错误都在输入输出的边界上。边界值分析就是假定大多数错误出现在输入条件的边界上,如果边界附件取值不会导致程序出错,那么其他取值出错的可能性也就很小。
③正交试验法:正交是从大量的试验点中挑出适量的、有代表性的点,是一种基于正交表的设计方法。
④判定表分析法:可以把复杂的逻辑关系和多种条件组合的情况用判定表表示出来。
⑤因果图法:因果图是用于描述系统输入输出之间的因果关系。
⑥错误猜测法
白盒测试:
静态测试和动态测试
①静态测试:不用运行程序的测试,包括代码检查、静态结构分析、代码质量度量、文档测试等等。
②动态测试:需要执行代码,通过运行程序找到问题,包括功能确认与接口测试等。
18.为什么选择软测岗位?
软件测试是软件开发过程中很重要的组成部分,它是一个不断去发现错误进而去保证软件质量的过程。我也有详细的了解到测试岗位的职责以及要求,除了基本测试必做的工作外,我还掌握了简单的自动化测试脚本编写的技术以及测试用例的设计和编写,有一定的代码能力,而且我对测试有一定的兴趣。平常在玩一些游戏或者使用一些软件的时候,我也善于去发现设计的不合理的地方。我还具备一些综合能力包括沟通能力、思维能力等,测试岗位平成要和很多部门沟通,比如开发、项目经理之类的。我觉得沟通不仅仅性格开朗就行,沟通也是讲究方法的,与人打交道,首先要会听,理解对方要表达的底层意思是什么,回答的时候也要让对方很清楚的知道我要表达什么。我在学校社团经常组织活动开会什么的,我觉得我的沟通能力还是很不错的。
19.怎么定位bug是前端问题还是后端问题?
①看页面:页面上的文字、样式、交互、兼容,这些都属于前端bug;
②看接口:没有请求解救、请求接口的URL错误,属于前端bug;
③看传参:接口的传参不对,属于前端bug;
④看响应:接口返回的数据不对或者没有返回数据,属于后端bug。
20.web测试和手机测试有什么区别?
WEB测试和移动端测试其测试类型也基本相似,都需要进行功能测试、性能测试、安全性测试、GUI测试等测试类型。他们的主要区别在于具体测试的细节和方法。
①客户端性能方面:web页面可能只会关注响应时间,app则还需要关心流量、电量、CPU、GPU、Memory这些。
②兼容方面:web是基于浏览器的,所以更倾向于浏览器(IE、chrome、Firefox)和电脑硬件,电脑系统的方向的兼容;app的测试则必须依赖手机或者pad,不仅要看分辨率,屏幕尺寸,重要看设备系统。
③app的专项测试:多网测试、中断测试、安装测试、界面测试、弱网测试。
21.如何快速上手工作?
①通过交接人所给的资料以及小组 wiki 资料,去熟悉公司所做的业务、以及系统架构,学透自己要测的业务和系统。
②自己去点一点被测系统,站在用户的角度去思考这个系统能做什么,能满足什么样的需求。
③看一看禅道或者自己公司所用的缺陷管理系统,看看产品立项资料和小组人员提的 Bug,归纳整理学习笔记和不懂的地方,统一时间去问问相关人员,记得要多问。
④熟悉公司的测试流程,看看自己小组成员的工作流程,以及使用什么工具做测试。
⑤熟悉每个人员的职责,开发、产品、项目经理都是谁。
22.一个好的测试用例的标准
①发现问题
好的测试用例应该能够为软件开发团队提供有价值的反馈,测试用例的执行结果应该能够帮助开发团队定位和修复问题。
②完备
一个好的测试用例应该能够覆盖软件的所有功能和场景,包括正常情况、边界情况和异常情况等。用例应该能够测试所有可能的输入组合和预期输出。
③可重复
测试用例应该是可重复执行的,即多次执行用例应该能够得到相同的结果,确保测试结果的一致性和可验证性。
④目标明确
每个测试用例应该有明确的目标和预期结果,以便测试人员能够判断测试结果是否符合预期,测试用例应该提供清晰的验证标准和评估指标。
⑤ 独立性
测试用例应该是相互独立的,一个用例的执行结果不应该影响其他用例的执行,确保测试结果的准确性和可追溯性。
⑥可维护
测试用例应该使用清晰简洁的语言编写,结构清晰易懂,并提供必要的注释和说明,方便其他测试人员理解和维护用例。
⑦实用
测试用例应该根据软件的重要性和优先级进行排序和执行,重点关注核心功能和常用功能的测试,以确保软件的稳定性和可用性。
⑧高效
测试用例应该能够在合理的时间内执行完毕,并且用例库应该易于管理和维护,测试用例的设计应考虑到资源和时间的限制,以提高测试效率。