在上一期内容里,我们讲述了一些软件测试技术面试时,比较经典的10个问题。本期,我们将继续围绕技术面试这个主题,为大家提供相应的经典问答内容。
问题1:进行软件测试后,是否能在发布软件后,确保没有Bug出现?
答:我个人认为,任何软件都存在bug。万一在用户使用的过程中出现了Bug,应及时做补丁或是升级软件。
一般情况下,软件交付给用户使用后,都不应该有影响用户使用和体验的Bug出现。但是,由于软件测试受测试时间、测试人员的数量、测试人员的技术等多方面因素的影响,找出软件中存在的所有bug几乎是不可能的。另外,有些Bug的发现,还需要在特殊环境或是长期使用中,才能触发。因此,可以说,几乎没有软件是完美的。
问题2:软件测试应遵循什么原则?
答:我觉得软件测试应遵循二八原则。即容易出现问题的模块,或是问题较多的模块要重点测试,其他常规容易出现问题的地方,按照流程测一遍即可。
问题3:你做过自动化测试吗?(或者接口测试?写过接口脚本吗?)
答:在实际的工作中,暂时还没有运用到自动化测试技术,但我本人对自动化测试比较感兴趣,目前一直在学习Selenium WebDriver,对元素定位、Selenium WebDriver方法的调用还是比较熟悉的。对于脚本,我对Python面向对象的思想有一些了解,能写一些基础脚本,例如我可以通过Selenium WebDriver工具完成对一个网页元素的循环操作。
(注意:回答这个问题切记要实话实说,不要不懂装懂)
问题4:你用过Linux操作系统吗?
答:关于Linux操作系统,我主要是熟悉它的一些基础命令行的使用,在工作中经常用到的命令行大概有50个。
(注意:当你答完后,面试官可能会进一步追问你都熟悉哪些命令行,此时,你需要抓住机会,将你懂的内容全面的展示给面试官看,这样自己面试通过的概率就会增加很多。)
问题5:你都了解哪些数据库呢?
答:关于数据库这块,我主要了解的是Oracle数据库。
(注意:当你答完后,面试官可能会进一步追问你都了解Oracle数据库的哪些内容?此时,你可以说,包括Oracle数据库的是SQL语句,像增、删、改、查之类的语句都比较熟悉。并举一个实例,佐证它的使用范畴)
问题6:你是如何设计测试用例的?
答:我觉得设计一个功能模块的测试用例,主要是基于几个方面。
参考需求文档,尽量挖掘出更多的需求细节进行用例设计;
根据自己的一些测试经验和常识来设计;
可以参考其他同事曾写过的测试用例;
我们还可以通过网上的资料做一些补充。
问题7:如何保证测试用例的质量?
答:我觉得可以从这几个方面来确保用例质量。
首先,要确保测试用例是针对需求文档编写出来的,要确保测试点能覆盖到所有需求点;
其次,要保证操作步骤、具体数据以及预期结果的清晰性、简洁性、明确性。保证测试用例的可操作性和可复用性;
另外,确保有足够多的异常测试用例,同时要确保没有多余的重复用例;
最后,一定要对测试用例进行评审。
问题8:如果没有需求文档,直接给你待测软件,你将如何开展测试工作?
我会大体地测试一下软件,对于如边界值、输入数据类型等需求不明确的问题集中反馈给产品经理,待产品经理给出相应的标准后再设计用例。
在测试软件的过程中,如发现有些功能模块需求非常不明确,甚至影响到用户对产品功能的正确使用,对于这类重大问题,我会及时反馈给测试经理,然后协助其来解决这类问题。
我会积极参加项目的各种讨论会议;查看已有的测试用例、Bug库中已有的Bug、已有的用户手册和帮助文档;咨询产品人员并尽可能多地了解相关的需求信息,并以此为基础来设计测试用例;
可以参考软件的功能直接设计用例,然后提交给测试组(必要的情况下可以提交给整个项目组)进行评审,以得到统一的意见。
问题9:请设计ATM取款机的测试用例
分析:这里就没有统一的答案了,但是,你可以参考以下2点来进行描述。
1)根据自己的经验,列举ATM取款机所有的功能点。例如,常见的功能点有插卡或退卡、密码输入或修改、余额查询、取款、存款、转账等。尽可能想得更多测试点,这样在回答时,就能将测试用例说的更全面,测试点覆盖得更广。
2)根据自己操作ATM取款机的经验,分别制定出每个功能点的需求文档。例如,插卡功能的需求文档:只接受带有银联标识的银行卡;密码修改的需求文档:只允许输入6位数字等。
最后,利用所学的设计方法和发散思维来设计用例。
问题10:如果我们录取了你,你将如何更快地进入工作状态?
答:我会先去熟悉项目组成员情况,包括开发人员、测试人员、产品人员。
其次,从需求文档入手,我将依次熟悉测试组的测试用例、Bug管理工具以及Bug库里已提交的Bug。
另外,我也会向测试组的老同事,或带我的老师,请教测试组的基本工作流程等细节问题,并结合测试经理所分配的任务,通过这些任务熟悉整个测试流程和工作要点。
更多软件测试资源分享微信公众号:【程序员阿沐】