前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >金九银十求职季,Java自动化面试题分享

金九银十求职季,Java自动化面试题分享

作者头像
ITester软件测试小栈
发布2021-08-06 12:28:38
3840
发布2021-08-06 12:28:38
举报
文章被收录于专栏:全栈测试

Java基础考察

1

JDK 、JRE 、JVM的区别和联系?

  • JDK是Java Development Kit的缩写,是Java开发工具包,整个Java开发的核心,提供了Java的开发环境和运行环境。JDK包含了JRE,同时还包含了编译Java源码的编译器javac,以及很多Java程序调试和分析的工具:jconsole,jvisualvm等工具软件,还有Java程序编写所需的文档和demo例子程序。在运行Java时起作用的四个文件夹:bin、include、lib、 jre。bin:最主要的是编译器(javac.exe),include:java和JVM交互用的头文,lib:类库。
  • JRE是Java Runtime Environment的缩写,是Java运行环境。包含了Java虚拟机,Java基础类库。
  • JVM是Java Virtual Machine缩写,是Java虚拟机。Java实现跨平台的最核心的部分,能够将 class 文件中的字节码指令进行识别并调用操作系统向上的 API 完成动作,JVM是Java能够跨平台的核心。

这三者是一层层的嵌套关系,JDK>JRE>JVM。

2

什么是跨平台性?

所谓跨平台性,是指Java语言编写的程序,一次编译后,可以在多个系统平台上运行。跨平台特性也被称为可移植性、平台无关性,或者一次编写、处处运行。

实现原理:Java程序是通过Java虚拟机在系统平台上运行的,之所以能实现跨平台的特性,主要得益于Java虚拟机(JVM),JVM解释器在运行Java应用时根据当前平台进行解释,解释成符合当前平台规范的机器码,所以可以实现同样的应用在不同平台上运行。

3

Java中IO流分为几种?

  • 按功能来分:输入流(input)、输出流(output)。
  • 按类型来分:字节流和字符流。

字节流和字符流的区别是:字节流按 8 位传输以字节为单位输入输出数据,字符流按 16 位传输以字符为单位输入输出数据。

4

Java中的== 和 equals 的区别是什么?

(1)对于基本类型和引用类型 == 的作用效果是不同的:

  • 基本类型:比较的是值是否相同;
  • 引用类型:比较的是引用是否相同;

代码示例:

运行结果如下:

代码语言:javascript
复制
true
false
true
true

代码解读:因为 s1 和 s2 指向的是同一个引用,所以 == 也是 true,而 new String()方法则重写开辟了内存空间,所以 == 结果为 false,而 equals 比较的一直是值,所以结果都为 true。

(2) equals 本质上就是 ==,只不过 String 和 Integer 等重写了 equals 方法,把它变成了值比较。首先来看默认情况下 equals 比较一个有相同值的对象。

实例1:

编写ITesterStudent类

调用ITesterStudent类:

运行结果如下:

代码语言:javascript
复制
false

此时equals方法调用的是基类Object类的equals()方法,也就是和==效果一样,所以返回false。

实例2:

重写下equals()方法,判断年龄相同的学生为同一个人。

调用ITesterStudent类:

运行结果如下:

代码语言:javascript
复制
true

总结 :== 对于基本类型来说是值比较,对于引用类型来说是比较的是引用;而 equals 默认情况下是引用比较,只是很多类重写了 equals 方法,比如 String、Integer 等把它变成了值比较,所以一般情况下 equals 比较的是值是否相等。

5

如何将字符串反转?

使用 StringBuilder 或者 stringBuffer 的 reverse() 方法。实例代码如下:

实例1:StringBuffer reverse

运行结果如下:

代码语言:javascript
复制
栈小试测件软retseTI

实例2:StringBuilder reverse

运行结果如下:

代码语言:javascript
复制
栈小试测件软retseTI

Java自动化考察

1

你是怎么测试接口的?

① 先了解接口的业务功能、入参出参以及接口对应的数据存储。

② 再依据接口测试用例设计方法完成接口测试的设计,没有接口文档,那就需要先跟开发沟通或者可以抓包看接口请求参数,然后整理接口文档。

③ 接口用例设计先业务场景再参数判断,比如参数的边界值、格式、组合等等。

④ 最后依据测试用例使用接口测试工具完成接口测试,并在测试过程中查看日志及数据以确保接口测试结果的正确性。

2

接口测试中的加密参数如何处理?

首先了解参数的加解密方式,常见的有md5、aes、rsa等等,如果是aes的需要找开发要私钥,如果是rsa需要找开发要公钥和私钥,然后在接口测试工具中引用加解密的代码实现参数的加解密过程,实现参数加解密的处理;如果公司有自定义的加密算法则需要找开发要加解密的代码实现,然后在测试工具中使用。

3

简单介绍一下自动化框架应该包含哪些功能?

1、校验

如果没有校验,单纯的执行接口的话,那就谈不上测试了。所以支持对返回值校验是一个必须的功能。

2、数据隔离

数据隔离就是指具体的请求接口、参数、校验等数据做到与代码相隔离,便于维护,一旦需要调整接口用例、新增接口用例时可很快速的找到位置,隔离的另一个好处就是可复用,框架可以推广给其他团队,使用者可以使用相同的代码,只需要根据要求填写各自用例即可测试起来。

3、数据传递

做到数据隔离可维护后,数据传递是另外一个更重要的需求。

数据传递是指接口用例之间可以做到向下传参,例如我们通过创建订单接口创建一个订单,该接口会返回一个订单号,接下来我们要进行调用查询订单的接口,从返回的数据中与创建订单用例中的数据进行校验,此时第二个接口的请求数据是需要从第一个接口用例中的返回中提取的。这样的例子比比皆是,所以支持数据传递是又一个必不可少的功能。

4、动态函数

实际用例场景中我们可能会有随机生成一个手机号、字符串加密等需求,在数据与代码隔离之后,此时我们就需要代码可以支持做到识别对应关键字时可以执行对应的函数进行填充。例如在数据中填写nowTime()时,具体执行时会被替换成当前时间,填写random(5)时,会被替换成一个五位的随机数等等。

5、可配置

有时,我们的需求是用例不单单只能在一个环境上执行,可能需要同一份接口用例可以在QA、预发、线上等多个环境都可以执行。所以框架需要做到可配置,便于切换,调用不同的配置文件可以在不同的环境执行。

6、日志

日志包含执行的具体执行接口、请求方式、请求参数、返回值、校验接口、请求时间、耗时等关键信息,日志的好处一来是可以便于在新增用例有问题时快速定位出哪里填写有问题,二来是发现bug时方便向开发反馈提供数据,开发可以从触发时间以及参数等信息快速定位到问题所在。

7、用例驱动

(1)用例的驱动模式,涉及到怎么存放测试数据,怎么描述用例,又如何复用;

(2)考虑到效率的话还要支持并发;

8、可视化报告

用例执行后,就是到了向团队展示结果的时候了,一个可视化的报告可以便于团队成员了解到每次自动化接口用例执行的成功数、失败数等数据。

当然测试报告不能光记录成功和失败,还有用例执行耗时、接口调用耗时、场景 的通过率等各项数值的统计。

4

接口响应格式是Json,如何用Java代码解析?

在Java自动化测试中解析json的第三方包有很多,比如fastjson、gson等等,如果不使用第三方的话则需要采用java原生的字符串处理方法。

类型

简介

传统Json方式

复杂的Json数据转换成实体类存在缺陷,性能和功能不够完善

Jackson

复杂的Json数据转换成实体类存在缺陷,性能和功能优于传统方式

Gson

功能方面在几种方式中最优,性能方面不如Jackson方式

FastJson

复杂的实体类转换成Json数据存在缺陷,解析json的速度优于其他方式

5

Testng中都有哪些注解?

Testng单元测试框架中有基本的9大注解:

  • BeforeSuit/AfterSuit;
  • BeforeTest/AfterTest;
  • BeforeClass/AfterClass;
  • BeforeMethod/AfterMethod;
  • Test;

其中比较特殊的注解是BeforeMethod/AfterMethod,是在每一个@Test注解执行前后都会被执行。

以上

That‘s all

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-08-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ITester软件测试小栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据保险箱
数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档