这篇文章是一系列软件测试面试问题和答案。该列表涵盖了软件测试,技术测试,测试自动化,API测试,敏捷测试,Web测试和Selenium WebDriver面试问题和答案的基础。
您可以点击下面的链接阅读您感兴趣的领域的面试问题和答案。
软件测试面试问题与解答
在本节中,我们将介绍一些您参加软件测试面试时可能会被问到的常见软件测试面试问题。
这些面试问题的答案仅供参考。如果您被问及任何这些软件测试面试问题,您可能希望在面试时扩展答案。
如果您正在准备进行软件测试面试,或者您正在面试QA角色的候选人,您会发现这个思维导图非常有用: 30多个基本软件测试问题准备面试
什么是探索性测试以及何时应该执行?
探索性测试的定义是针对应用程序的“同时测试设计和执行”。这意味着测试人员使用她的领域知识和测试经验来预测系统在何种情况下以及在什么条件下可能出现意外行为。随着测试人员开始探索系统,新的测试设计思想会被动态考虑并针对被测软件执行。
在探索性测试会话中,测试人员对系统执行一系列操作,每个操作都取决于前一个操作的结果,因此操作结果的结果可能会影响测试人员下一步的操作,因此测试会话是不一样。
这与脚本测试形成对比,脚本测试通常在系统准备好之前使用需求或设计文档预先设计测试,并在另一时间对系统执行完全相同的步骤。
探索性测试通常在产品发展(敏捷)或作为软件发布之前的最终检查时执行。它是自动回归测试的补充活动。
什么测试技术在那里,他们的目的是什么?
测试技术主要用于两个目的:a)帮助识别缺陷,b)减少测试用例的数量。
为什么测试是必要的?
必须进行测试以识别软件中存在的任何可能造成伤害的缺陷。如果没有经过适当的测试,我们可能会发布可能出现故障并导致严重伤害的软件。
例子可以是:
Bug,缺陷,错误,失败,错误和错误之间有什么区别?
错误和错误是相同的事情。错误,缺陷和错误是一回事。
通常,人类可能犯错(错误),这会在软件应用程序中产生可能导致失败的缺陷(错误,错误)。
缺陷的发生是因为人类容易出错,软件应用程序也可能非常复杂,因此不同组件的集成会导致奇怪的行为。
多少测试就足够了?
这个问题没有明确的答案。测试不是绝对的,没有限制。但是,我们可以使用风险指标(基于风险的测试)来确定可能造成最大危害的可能情景或主要使用的软件部分,以便我们将时间和精力集中在最重要的部分。
测试应提供有关应用程序状态或运行状况的足够信息,以便利益相关者可以就是否发布软件或花更多时间进行测试做出明智的决定。
以下问题包含简短的答案,以便为一些ISTQB面试问题提供快速提示。
七项测试原则是什么?
- 测试显示存在缺陷
- 彻底的测试是不可能的
- 早期测试
- 缺陷聚类
- 农药悖论
- 测试取决于上下文
详细了解七项测试原则
什么是基本测试流程?
详细了解基础测试流程
有哪些不同的测试级别?
有哪些不同的黑盒测试技术?
有哪些不同的测试计划活动?
哪些信息应包含在缺陷或错误 告中?
敏捷测试面试问题与解答
敏捷测试面试问题旨在测试您对敏捷原则和测试实践的了解。
什么是敏捷测试?它与传统瀑布或V模型有何不同?
敏捷测试是遵循敏捷软件开发原则的测试实践。敏捷测试涉及具有特殊技能和专业知识的敏捷团队的所有成员,以确保频繁地交付业务价值。
最大的区别在于,在敏捷环境中,测试不是一个阶段,它是一个与开发并行的活动。
在敏捷环境中,软件的小功能经常交付,因此测试活动应与开发活动并行。测试时间很短,因为我们只测试小功能。
在瀑布模型中,在开发结束时有一个测试阶段,所以在整个应用程序开发之后,测试是一项很大的努力。测试时间很长,因为我们必须测试整个应用程序。
当需求持续变化时,您的方法是什么?
如果您接受了敏捷QA职位的面试,可以询问这个问题,其中需求可能在开发期间经常发生变化。尽管需求的完全变化是可能的,但大多数情况下,技术细节可能会发生变化。例如,要求的意图或特征的行为是相同的,但实现细节可能会改变
一些可能的答案可以是:
敏捷测试人员/ QA的优点是什么?
参加敏捷测试面试时,可以询问问题,从敏捷测试人员或敏捷QA角色中找出您真正理解的内容,以及如何与团队的其他成员相匹配。
敏捷测试仪的一些优点是:
在敏捷团队中担任QA时,有哪两个关键因素?
由于心态不同,QAs可以为敏捷团队增加很多价值。测试人员可以而且应该考虑测试故事的不同可能场景。但是,他们可以带来的最重要的资产是:
Scrum中的三个主要角色是什么?
Scrum团队由三个主要角色组成:
测试自动化面试问题和答案
本节重点介绍测试自动化面试问题和答案。而不是工具特定的,例如QTP或Selenium,WebDriver,问题更多的是关于测试自动化的方法。
您为自动化测试考虑了什么标准?
我会考虑以下几点来帮助我确定测试是否应该自动化:
什么样的测试不应该自动化?
这个面试问题类似于上一个问题,但侧重于哪些测试不是自动化的,而是留给手动测试。可能的答案可能是:
在UI层自动化测试的优点和缺点是什么?
优点:
缺点:
为什么要自动化测试?它是:
这是一个常见的测试自动化面试问题,答案非常简单。虽然上述一些原因似乎有道理,但 您想要自动化测试的主要原因是您希望 多次重复相同的测试。
络测试面试问题
在本节中,我们将讨论一些常见的Web测试面试问题和答案。这些问题特定于 Web测试。
如何测试Web应用程序的登录功能?
这是一个非常常见的软件测试面试问题,目的是了解您对该功能的看法有多广泛。大多数受访者从检查输入字段的明显答案开始,其中包含正值和负值,无效的电子邮件,有效的电子邮件,但密码不正确,SQL注入等。但大多数这些测试都可以完成,并且应该由开发人员完成,作为集成的一部分测试。
这里的重点是系统级测试,没有完全集成系统就无法完成测试。
该测试面试问题的可能答案可以是:
什么类型的测试对Web测试特别重要?
这也是Web应用程序测试角色的重要软件测试面试问题。注意,这个问题是询问 测试的 类型。
虽然您可以进行功能测试,可用性测试,可访问性测试等,但这些都适用于桌面应用程序测试。问题是专门要求进行 络测试。
对测试Web应用程序非常重要的两种类型的测试是性能测试和安全测试。Web应用程序和桌面应用程序之间的区别在于Web应用程序向全世界开放,可能有许多用户在不同时间同时访问应用程序,因此负载测试和压力测试非常重要。
Web应用程序也容易受到各种形式的攻击,主要是DDOS,因此在测试Web应用程序时,安全性测试也非常重要 。
如何在搜索结果页面上验证搜索结果?
这是电子商务测试 角色的另一个常见软件测试面试问题 。这个问题是指验证结果是我们期望看到的。
假设您在Amazon.com 站上搜索产品。在搜索结果页面上,您将看到与搜索相关的项目列表。如何验证您看到的结果是否真的是您应该看到的结果?
获得此信息后,我们可以开始将结果页面上显示的结果与源结果(例如数据库)进行比较。
另一个选择是使用模拟生成我们需要的数据,这样我们就可以完全控制我们在搜索结果页面上看到的数据。
Web应用程序测试与桌面应用程序测试有何不同?
Web应用程序通常托管在我们可以通过Web浏览器访问的服务器上,而桌面应用程序则安装在客户端的计算机上。
此设置会带来许多新的测试挑战:性能和安全性测试变得非常重要,因为应用程序面向广泛的受众。良好的设计和可用性也很重要。
其他重要因素包括测试多个浏览器,多个设备,重定向和响应。
此外,我们不应忘记Java,CSS,Cookies,W3C标准,流量监控,第三方标签测试,所有这些在Web应用程序测试中都很重要。
您将如何测试面向服务的体系结构(SOA)Web应用程序?
与Web服务通信的Web应用程序的测试可以分为两部分:
这种分离的原因是能够更快,更容易地识别Web服务中的问题。
有一个登录表单连接到身份验证Web服务。你会在哪一层进行什么测试?
有很多方法可以测试 站,可能会有很多测试用例要执行,如何确保Web应用程序适合发布?
API测试面试问题和解答
许多新的现代Web应用程序都是使用Web服务,微服务和API构建的。作为测试人员,我们应该在测试API和Web服务方面具有丰富的知识和经验。
以下是一些主要针对软件测试人员的基本API测试面试问题。
API测试和单元测试有什么区别?
API测试和单元测试不是一回事,尽管它们是相似的。单元测试由开发团队完成,以确保特定的软件单元按要求运行; 由于它不是黑盒测试,因此无法准确反映该领域的软件使用情况。
坦率地说,开发人员对他们的软件了如指掌,所以他们可能会错过一些对于不熟悉软件内部工作的测试人员而言可能非常明显的事情。
API测试人员的工作是测试软件只知道用户可能知道什么。API测试还测试单元作为系统的一部分,而单元测试通常测试单元与系统其余部分的相对隔离。
真正的Web API测试需要Internet连接,因为与Web API的通信是通过Web完成的。单元测试在本地计算机上完成,无需Internet连接。
单元测试
API测试
UI级别测试和API级别测试之间有什么区别?
通过API测试,我们可以直接访问API端点,并控制我们发送给API的数据以进行测试。例如,无效数据,格式错误的请求等
在UI级别测试中,我们没有那种灵活性,因为我们受到UI约束的约束。
另外,就API的响应而言,可能存在许多未在UI层中呈现的信息,但仅在分析响应主体时可用。
UI级别测试本身执行起来很慢,而API级别测试则要快得多。因此,API测试可以提供更快的反馈。
如何进行API测试?要检查什么?
在API测试中,我们使用已知数据向API发出请求,然后我们分析响应以进行验证。通常,我们应该检查的事情是:
API测试通常使用哪些工具?
Postman 是一个休息客户端,起初是Chrome浏览器插件,但最近推出了适用于Mac和Windows的原生版本。
SoapUI 是SmartBear软件的无头功能测试工具。它有两种版本:免费开源版和专业版。
Rest-Assured 是一种开源的Java Domain特定语言(DSL),它使测试REST服务变得简单。它通过消除使用样板代码来测试和验证复杂响应的需要简化了事情。它还支持XML和JSON请求/响应。
什么是HTTP请求和HTTP响应?
HTTP 请求 方法由四个组件组成:
HTTP 响应 方法由三个组件组成:
Selenium WebDriver面试问题与解答
在这里,我们将介绍一些常见的硒访谈问题。Selenium WebDriver是一种非常流行的浏览器自动化测试工具,被许多公司使用。
当您申请自动化测试员工作时,您很可能会有使用Selenium WebDriver的经验,因此在面试时会有问题来评估您对硒工具的了解。
在此之前,我们介绍了一些 测试自动化面试问题 ,这些问题主要关注测试自动化的方法,这里主要关注的是硒工具以及在面试中可能会提出的问题。
这些硒访谈问题基于 selenium教程。
什么是硒?
Selenium是一个基于浏览器的功能测试自动化工具。它基本上是一个库,您可以在程序中使用它来测试Web应用程序。值得注意的是,硒主要用于浏览器自动化。它不用于单元测试或API测试。
Selenium Webdriver有许多语言绑定,这意味着您可以用您喜欢的编程语言编写测试并使用相应的selenium绑定。
在Selenium WebDriver中,如何从下拉菜单中选择项目?
答:我们可以通过Value,Index或Visible Text从下拉菜单中选择一个项目。
例:
- <select id = “cars” >
- <option value = “vo” > 沃尔沃</ option>
- <option value = “sa” > Saab </ option>
- <option value = “me” > Mercedes </ option>
- <option value = “au” > 奥迪</ option>
- </选择>
- WebElement cars =驱动程序。findElement (,通过ID (“汽车” ));
- 选择车= 新选择(车)
- //按值选择
- 汽车。selectByValue (“vo” ); //这将从下拉列表中选择沃尔沃
- //按索引选择
- 汽车。selectByIndex (2 ); //这将选择萨博
- //按可见文字选择
- 汽车。selectByVisibleText (“奥迪” )//这将选择奥迪
driver.get()和之间有什么区别driver.navigate.to()
您可以使用这两种方法导航到URL。
因为导航到URL很常见,所以这driver.get()是一种方便的方法。但是,它的功能与driver.navigate().to(“url”)
在driver.navigate()还具有其它功能,如
driver.navigate().back()
driver.navigate().forward()
driver.navigate().refresh()
Selenium WebDriver中隐式等待和显式等待有什么区别?
几乎所有的硒访问问题都会提出这个问题,因为许多Web应用程序都使用AJAX。
Selenium Webdriver引入了等待基于AJAX的应用程序的概念。有两种等待方法,隐式等待和显式等待
隐含等待:
当在测试中实现隐式等待时,如果WebDriver无法在文档对象模型(DOM)中找到元素,它将等待元素出现在DOM中的定义时间量。换句话说,当尝试查找一个或多个元素(如果它们不是立即可用)时,隐式等待轮询DOM一段时间。
隐式等待会降低您的测试速度,因为一旦设置,就会为WebDriver对象实例的生命周期设置隐式等待。这意味着当应用程序正常响应时,它仍将等待每个元素出现在DOM中,这会增加总体执行时间。
另一个缺点是,例如,如果您将等待限制设置为5秒,并且元素在6秒内出现在DOM中,则测试将失败,因为您告诉它等待最多5秒。
隐式等待的一个例子是:
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
明确等待:
显式等待比隐式等待更好。与隐式等待不同,您可以在继续执行代码之前编写等待的自定义代码或条件。
可以在需要同步的地方使用显式等待,例如,页面已加载,但我们仍在等待调用完成并显示元素。
Selenium WebDriver提供WebDriverWait和ExpectedCondition类来实现显式等待。ExpectedCondition类提供了一组预定义条件,以便在继续进行代码之前等待。
显式等待的示例是:
- WebDriverWait wait = new WebDriverWait (driver,10 );
- 等待。直到(ExpectedConditions。titleContains (“硒” ));
总结一下:
隐式等待时间应用于脚本中的所有元素,并且显式等待时间仅适用于特定的指定元素。
你如何计算页面上的元素数量?
这是一个常见的硒访谈问题,因为在许多情况下,您想要点击列表中的项目。因此,了解如何计算元素并从列表中选择正确的元素非常重要。
我们首先需要找到列出项目的节点元素。例如,在下面的HTML代码中:
- <ul id = “movies” >
- <li > 电影片名1 </ li>
- <li > 电影标题2 </ li>
- 。
- 。
- 。
- <li > 电影标题50 </ li>
- </ UL>
可以使用定位根元素
列出<WebElement> movies = driver。findElements (。通过cssSelector (UL#电影里));
然后我们可以使用它.size()来获取<li>元素的数量
int numberOfMovies =电影。size ();
如何检查是否选中了复选框或单选按钮?
我们可以使用这种.isSelected()方法,例如
驱动程序。FindElement (通过。ID (“id_of_checkbox” ))。 isSelected ();
有没有办法在Selenium WebDriver中拖放?
是的,我们可以使用以下代码进行拖放操作
- 动作动作= 新动作(驱动程序);
- WebElement start = driver。findElement (通过。cssSelector (“DIV。源” ));
- WebElement end =驱动程序。findElement (通过。cssSelector (“DIV。目标” ));
- 行动。dragAndDrop (开始,结束)。perform ();
你如何检查一个元素是否在页面上可见?
我们可以使用isDisplayed()方法。该方法的返回类型是boolean。因此,如果它返回true,那么元素是可见的,否则它不是。
驱动程序。findElement (通过。ID (“id_of_element” ))。isDisplayed ();
如何检查按钮是否已启用页面?
我们可以使用isEnabled()方法。该方法的返回类型是boolean。因此,如果它返回true,则启用该按钮,否则不启用。
驱动程序。findElement (通过。ID (“id_of_element” ))。isEnabled ();
现在您已经完成了这些硒访问问题,现在是时候进行简短的 硒WebDriver测验了。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!