一、为什么从开发转测试
我从年5月开始从一名java开发女程序猿正式转为测试开发工程师,原因除了机缘凑巧之外,当然是因为这个行业对测试工程师的要求已经越来越高,简单做些UI脚本录制和回放的自动化,参考度娘写出框架demo却不知道问题出在哪里的测试人员,已经不能满足企业快速迭代产品,保证产品质量的需求。
当一个产品越来越庞大、用例越来越多,用例如何设置、脚本如何规划、代码结构如何优化,当需求变动时又如何做到高可维护、高健壮性的问题会接踵而来。所以,一名优秀的测试开发工程师是必须具备优秀的代码能力,甚至知识面是需要比普通的开发人员更广的,比如他需要熟悉自动化测试、服务器部署、网络架构、软件性能、软件安全等等方面的知识。
所以开发工程师转测试之后可做的内容非常的多,测试这块领域也需要更多有开发背景的人员加入。
二、前言
背景唠嗑完,我们来说说面试题,由于是开发转测试,首先开发的进阶基础知识是必须要掌握的,面试官也肯定会问(说不定直接是开发组的人面的),接着会问一些功能测试的知识点,但是一般不会多,然后是比较重要的自动化测试部分,做自动化测试框架有很多,每个公司用的也不一样,如果没用过面试官说的,就说自己用过那套的逻辑就好。
如果没有在工作中实践过,非常有必要的告诉大家,在面试之前也一定要多百度熟悉多动手写demo,不要让面试官问的工具和术语你都没听说过,那么还没开始就结束了的面试只会剩下尬聊(哭晕)。
最后前面聊得愉快的话,面试官一般还会继续考察你的其他能力,比如性能、安全、Linux、数据库、软件架构等。下述内容为大家准备了每个知识点比较常见的面试题,大家可以参考并且发散准备,最后记得准备必问题目:为什么从开发转测试?参考我第一章的答案?
三、开发基础面试题
自动化常用的语言是java和python,参考面试题:
(1)JAVA知识
Q1:List、Set、Map之间的区别
List是一个有序并且允许元素重复的集合,它的底层数据结构是数组,数组的优缺点都很明显,就是查询速度很快,但是要做数据移动,比如增加、删除速度就会很慢。
Set是一个无序且不允许元素重复的集合,它的底层数据结构是哈希表,它的优缺点是跟数组完全相反的,既查询速度慢,但是增加、删速度很快。
Map也是集合的一部分,它最大的特点是key-value形的,并且key不能重复出现,但是value可以重复出现,这对我们某些业务,如用户重复处理能起到重要作用。
Q2:ArrayList与LinkedList的区别?
ArrrayList说白了就是个数组,所以自然也是有数据的优缺点的,比如支持随机访问,查询速度快。而LinkedList的底层数据结构是链表,所以是不支持随机访问的,在代码中用下标访问一个元素时,ArrayList的time