很多同学自动化测试技术学的差不多了,但是不少人却在面试环节容易卡壳,面对面试官突然提出的问题,突然脑袋一片空白,回答不上来,就会与心爱的工作擦肩而过。
面试的结果决定着去留,也决定着工资的定位,如果回答能让面试官满意,何愁大业不兴。下面跟随小编一起走进面试官的心里。
1、你以前工作时的测试流程是什么?
参考答案:(灵活回答) 公司对测试流程没有规定如何做,但每个测试人员都有自己的一套测试流程。我说下我 1 年来不断改正 (自己总结,吸取同行的方法)后的流程吧。需求评审(有开发人员,产品经理,测试人员,项目经理)-> 需求确定(出一份确定的需求文档)->开发设计文档(开发人员在开始写代码前就能输出设计文档)->想好测 试策略,写出测试用例->发给开发人员和测试经理看看(非正式的评审用例)->接到测试版本->执行测试 用例(中间可能会补充用例)->提交 bug(有些 bug 需要开发人员的确定(严重级别的,或突然发现的在测 试用例范围之外的,难以重现的),有些可以直接录制进 TD)->开发人员修改(可以在测试过程中快速的修 改)->回归测试(可能又会发现新问题,再按流程开始跑)。
描述软件产生内存泄露的原因以及检查方式。(可以结合一种开发语言进行描述)
内存泄露的原因,主要是由于开发过程当中申请了计算机资源(例如对象、内存等),但是使用资源完成 以后没有及时释放资源导致的。例如在 C 语言当中使用了 malloc 申请了内存,但是未使用 free 来释放内存。
2、简述什么是值传递,什么是地址传递,两者区别是什么?
参考答案:值传递主调函数传递给被调函数的是值的拷贝,不是原值;地址传递主调函数传递给被调函数的是值的地 址。区别是值传递被调函数中的操作不改变主调函数的值,而地址传递则不同。
3、结构化程序设计和面向对象程序设计各自的特点及优缺点是什么?
参考答案:(不需要回答如此复杂) 结构化程序设计思想采用了模块分解与功能抽象和自顶向下、分而治之的方法,从而有效地将一个较复杂 的程序系统设计任务分解成许多易于控制和处理的子程序,便于开发和维护。它的重点在于把功能进行分解。 但是由于在实际开发过程当中需求会经常发生变化,因此,它不能很好的适应需求变化的开发过程。结构化程 序设计是面向过程的。 面向对象程序设计以需求当中的数据作为中心,来进行设计,具有良好的代码重用性。 封装性:也叫数据隐藏,用户无需知道内部工作流程,只要知道接口和操作就可以的,C++中一般用类来实现 封装。继承性: 一种支持重用的思想,在现有的类型派生出新的子类,例如新型电视机在原有型号的电视机上增 加若干中功能而得到,新型电视机是原有电视机的派生,继承了原有电视机的属性,并增加了新的功能。 多态性:指在一般类中定义的属性或行为,被特殊类继承之后,可以具有不同的数据类型或表现出不同的 行为。动态联编:指一个计算机程序自身彼此关联的过程,按照联编所进行的阶段不同,可分为两种不同的联编 方法:静态联编和动态联编
4、简述什么是存储过程和触发器?
参考答案: 存储过程:是数据库中的一个对象,Transact-SQL 语句的预编译集合,这些语句在一个名称下存储并作为 一个单元进行处理。(可以理解为 C 语言中的函数,有参数、返回值等函数特性) 触发器是一种特殊类型的存储过程,当使用下面的一种或多种数据修改操作在指定表中对数据进行修改 时,触发器会生效:UPDATE、INSERT 或 DELETE。
5、使用 C 语言编写一个函数,用于交换两个变量的值(地址传递)。
参考答案:
void Swap(int *a,int *b)
{
int temp;
int temp=*a;
int *a=*b; int *b=temp;
}
6、请简述 DNS、活动目录、域的概念。
参考答案: DNS:域名服务,作用是将网络域名解析成 IP 地址; 活动目录:微软提供的目录服务的一种,它存储有关网络上的对象信息,并使管理员和用户更方便的查找和使 用这类信息; 域:网络系统的一个安全边界,在一个域当中,计算机和用户共享一些列的安全信息。
7、在 RedHat 中,从 root 用户切到 userl 用户,一般用什么命令?
参考答案:su su user1 切换到 user1,但切换后的当前目录还是 root 访问的目录 su – user1 切换到 user1,并且当前目录切换到 user1 的根目录下(/home/user1/)
8、你的测试职业发展是什么?你自认为做测试的优势在哪里?
参考答案: 测试经验越多,测试能力越高。所以我的职业发展是需要时间累积的,一步步向着高级测试工程师奔 去。而且我也有初步的职业规划,前 3 年累积测试经验,按如何做好测试工程师的要求自己,不断的更新自己改正自 己 , 做好测试任务 。 优势在于我对测试坚定不移的信心和热情,虽然经验还不够,但测试需要的基本技能我有信心在工作中得以发挥。
9、测试产品与测试项目的区别是什么?
参考答案: 习惯上把开发完成后进行商业化、几乎不进行代码修改就可以售给用户使用的软件成为软件产品,也 就是可以买“卖拷贝”的软件,例如 Windows2000。而通常把针对一个或者几个特定的用户而开发的软件 成为软件项目,软件项目是一种个性化的产品,可以是按照用户要求全部重新开发,也可以修改已有的软 件产品来满足特定的用户需求。项目和产品的不同特点,决定我们测试产品和测试项目仍然会有很多不同 的地方:
质量要求不同。通常产品的质量要高一些,修复发布后产品的缺陷成本较高,甚至会带来很多负面 的影响。而做项目通常面向某一用户,虽然质量越高越好,但是一般只要满足用户要求就可以了。
测试资源投入多少不同。做软件产品通常是研发中心来开发,进度压力要小些。同时由于质量要求 高,因此会投入较多的人力、物力资源。
项目最后要和用户共同验收测试,这是产品测试不具有的特点。 此外,测试产品与测试项目在缺陷管理方面、测试策略制定都会有很大不同,测试管理者应该结合具 体的环境,恰如其分的完成工作。
10、测试工具在测试工作中是什么地位?
参考答案: 国内的很多测试工程师对测试工具相当迷恋,尤其是一些新手,甚至期望测试工具可以取代手工测 试。测试工具在测试工作中起的是辅助作用,一般用来提高测试效率。自动化测试弥补了手工测试的不 足,减轻一定的工作量。实际上测试工具是无法替代大多数手工测试的,而一些诸如性能测试等自动化测 试也是手工所不能完成的。 对于自动测试技术,应当依据软件的不同情况来分别对待,一般自动技术会应用在引起大量重复性工 作的地方、系统的压力点、以及任何适合使用程序解决大批量输入数据的地方。然后再寻找合适的自动测 试工具,或者自己开发测试程序。一定不要为了使用测试工具而使用。
11、测试的数据你放在哪?
参考答案:对于账号密码,这种管全局的参数,可以用命令行参数,单独抽出来,写的配置文件里(如 ini);
对于一些一次性消耗的数据,比如注册,每次注册不一样的数,可以用随机函数生成;
对于一个接口有多组测试的参数,可以参数化,数据放 YAML,Text,JSON,Excel 都可以;
对于可以反复使用的数据,比如订单的各种状态需要造数据的情况,可以放到数据库,每次数据初始化,用完后再清理;
对于邮箱配置的一些参数,可以用 ini 配置文件;
对于全部是独立的接口项目,可以用数据驱动方式,用 excel/csv 管理测试的接口数据;
对于少量的静态数据,比如一个接口的测试数据,也就 2-3 组,可以写到 py脚本的开头,十年八年都不会变更的;
12、如果一个需求没有明确的性能指标,要如何开始进行性能测试?
参考答案:先输出业务数据,如 pv、pu、时间段等,计算出大概的值,然后不断加压测到峰值。
13. 介绍 JMeter 聚合报告包括哪些内容?
参考答案:请求名、线程数、响应时间(50 95 99 最小 最大)错误率、吞吐量
14/15......
但凡在面试之前多看真题,多了解一些自动化测试相关问题,面试的时候那就只剩下别人尴尬了。