测试面试之自动化测试

UI测试和API测试有何不同?
UI测试是测试应用程序的图形界面不等,重点测试程序的外观和感觉;
API测试支持两个不同软件之间的通信,重点测试应用程序的业务层;
API 测试究竟需要验证那些内容?
数据库校验,参数校验,HTTP状态码,响应时间,API出错时的错误代码;授权检查;
json和map(字典)的区别?
Json 是轻量级的数据交互格式,以key-value 的键值对形式来保存数据,结构清晰,可以说是目前互联网项目开发中最常见的一种数据交互格式;
Map是字典结构,同样是以key-value的键值来保存数据,是java中的一种数据类型;
TestNG有那些优点?
TestNG注释功能非常强大和方便;
TestNG允许并行测试;
TestNG可以基于group 的方式执行测试;
TestNG 可以生成测试报表,并且报告展示多样化,可在其基础上自行开发报告插件并测试监听器等;
怎么衡量一个项目是否适合自动化?
软件需求变动不频繁;
项目周期足够长;
项目资源/人力足够;
调试单个用例或者多个用例是怎么进行的?
框架TestNG 管理用例,通过testng 的配置文件testng.xml 中配置对应的用例即可;
在selenium 运行过程中如何去动态改变元素的属性?
通过javaScipt 脚本去操作dom 对象;
为了提高UI自动化稳定性,你做了那些工作?
尽量使用相对路径的xpath 表达式;
查找元素优先使用显示等待;
用例与用例之间避免产生依赖,用例独立执行;
用例结束对测试场景进行还原,避免影响其他测试用例的执行;
脚本执行失败后加入TestNG重试机制,提升用例的稳定性;
尽量保证单独的测试环境,避免其他的测试同步进行;
请描述你所设计的web自动化框架的特点?
Maven 构建项目;
TestNG 管理测试用例;
应用Page Object 思想对用例进行分层设计,业务和页面元素分离,
三层设计:用例层+逻辑操作层+页面对象层;
用例共性操作和页面元素共性操作;
数据驱动DataProvider;
log4j 日志定位问题/追溯;
Allure /Extend_report报表;
集成到Jenkins,设置时间自动构建;
在web自动化中,一般完成什么类型的测试?
冒烟测试+回归测试;
selenium 中如何实现文件上传?
对于input 类型的元素,可以直接通过sendKeys 写入文件路径即可;
对于登录验证如何处理?
测试环境去除验证码;
自动识别验证码技术;
万能验证码;
设置cookie;
为了提高UI 自动化脚本的可维护性,你有做了那些工作?
Page Object 分层模式;
业务和页面元素分离;
测试数据和测试用例分离;
单独维护测试数据;
页面和用例共性提取;
Selenium 有哪些定位元素的方法?
1.id 2.name 3.class_name 4.tag_name 5.xpath 6.link_text 7.partial_link_text 8.cssSelector
Selenium 如何定位隐藏元素?如何操作?
Selenium 正常方法能定位到隐藏元素。隐藏元素不能操作,Selenium 模拟的是人工点击,人工点不
到Selenium 也定位不到。
如何提高脚本稳定性?
1.定位元素的方法尽量用简单一点的,一般用id;
2.等待时间尽量少用;
3.定位元素的方法在selenium 基础上自己封装;
如何定位动态元素?
定位元素的方法有好几种,找不是动态的来定位。id?name?class_name?xpath?
触发加载动态元素的事件,直到动态元素出现,进行定位;
如何通过子元素定位父元素?
xpath 后面跟跟两个点 … 两个点…就代表父级元素;
元素定位不到,可能有那些原因?
动态id 定位不到元素;
iframe 原因定位不到元素;
不在同一个frame里面查找元素;
xpath 描述错误;
点击速度过快,页面没加载出来元素;
什么是POM模式?为什么要使用它?
POM模式:全称page object model,简称PO,页面对象模型。意思是把一个页面当成一 个对象,页面的元素就是对象的属性,页面的操作就是对象的行为(方法),一般情况下 PO分三层架构:基础封装层BasePage,PO页面对象层,TestCase测试用例层。 使测试用例更简单,更清晰,把很多的业务操作封装到PO页面对象层,用例只需要调用即 可。 如果页面有变动,只需要修改PO页面对象层的属性即可。增加代码的可维护性。
说说你对数据驱动和关键字驱动的理解?
数据驱动是从数据文件(Excel,CSV,YAML,数据库)读取输入、输出的数据,然后通过变量传入自动化测试用例中,在整个过程中,数据的读取,测试状态,测试信息全部在测试用例里面,测试数据都在测试文件中,通过修改数据达到驱动测试用例叫做数据驱动。
关键字驱动是从面向对象思维出发,同样的业务逻辑会封装成一个函数,这个函数就叫做关键字,不同的关键字实现不同的业务逻辑,所有的业务逻辑都可以通过调用关键字来实现的时候就是关键字驱动架构,
一般情况下企业里面都是数据驱动+关键字驱动一起使用;
web自动化测试用例如何设计?如何提高web自动化用例脚本的稳定性?
用例设计:自动化用例是从功能测试用例里面提取出来的,主要提取的是冒烟用例和回归测试的用例, 提取需要遵循以下原则。
1.优先覆盖核心功能用例。核心流程用例。
2.尽量不要选复杂的用例。
3.选取一些重复执行的的用例。
4.一般选取正向用例。
如何提高稳定性:
1.尽量使用相对路径定位元素。
2.定位元素需要封装显示等待。
3.用例和用例之间尽量避免依赖。
4.加入用例失败重跑机制。
5.自动化测试的环境区分开其他环境。
自动化测试有那三类等待?有什么特点?
线程等待:建议少用;
隐式等待:全局等待;就是明确的要等到某个元素的出现或者是某个元素的可点击等条件,等不到,就一直等,除非在规定的时间之内都没找到,那么久跳出Exception
显示等待:一般单独使用,不会全局来用;就是在创建driver时,为浏览器对象创建一个等待时间,这个方法是得不到某个元素就等待一段时间,直到拿到某个元素位置。
解释断言和验证命令之间的区别?
断言:断言命令检查给定条件是对还是错,如果是true,将执行下一阶段,如果为false,则停止执行;
验证:Verify 命令还检查给定条件是对是错,不会停止程序的执行;

你可能感兴趣的:(面试)