高级测试面试题

未来你如果入职了,你去做测试,你的侧重点在哪?

对于产品类公司,测试的侧重点就在过程上。

首先入职以后,学习企业文化,我在会学习本公司我们的测试工具有哪些,
我们的测试方法都用到了哪些,我们如何做工作日志,如何写测试计划,
我把我的测试流程这一套搞清楚,我给自己两个星期时间,搞清楚以后,我
了解我们软件了,了解我们项目了,这大概就是一个月的时间,然后,我下
一步做的就是软件过程,提高软件过程的质量。

(1)关于String,String Buffer,StringBuilder的异同
String 不可变序列 version 1.0
String Buffer 可变字序列 1.0
String Buikder 可变字符序列 1.5
(2)线程安全.
再多线程访问一个资源时。
String Buffer是线程安全的,它和方法被synchronised修饰。
String Builder是非线程安全的
所以String Builder执行速度比String Buffer快
(3)执行速度 String Builder > String Buffer >String
特例.
String str="A"+"B"+"C";
String Builder sb=new String Builder("A")
append("B").append("c");
str 比 sb 快得多
是因为JVM认为 String str="A"+"B"+"C";
就是 String str="ABC";它们都在常量池连接
而换是 String str1="A";
String str2="B";
String str3="C";
String str=str1+str2+str3;
JVM就会一个个的生成对象

mybatis 使用insert插入一行数据如何获得自增id值

在Mappen.xml中的设置属性2个
use Generated keys="true"
key Property="id"


mybatis中查询的结果集与属性名不一致怎么解决?
SQL语句中给结果集字改别名
在Mapper.xml中,用来映射,字段<=>属性。

/
/

测试流程的理解:
需求分析---需求评审(项目需求人员,开发人员,测试人员)
---定排期(开发人员制定开发计划,测试人员制定测试计划)
---开发人员进行代码开发,同时测试人员编写测试用例--开发
人员开发完成提交代码--测试人员showcase用例评审--运维人
员部署软件测试线--测试--开发修Bug--测试完成,提交测试报告
----上线---线上检查---邮件抄送给组内进行上线通报

selenium2原理的理解:
 Selenium2将浏览器原生的API封装成WebDriver API,可以直接操作浏览器页面里的元素,甚至操作浏览器本身(截屏,窗口大小,启动,关闭,安装插件,配置证书之类的),所以就像真正的用户在操作一样。
Webdriver的工作原理:
● 启动浏览器后,selenium-webdriver会将目标浏览器绑定到特定的端口,启动后的浏览器则作为webdriver的remote server。
● 客户端(也就是测试脚本),借助ComandExecutor发送HTTP请求给sever端(通信协议:The WebD

river Wire Protocol,在HTTP request的body中,会以WebDriver Wire协议规定的JSON格式的字符串来告诉Selenium我们希望浏览器接下来做什么事情)。
● Sever端需要依赖原生的浏览器组件,转化Web Service的命令为浏览器native的调用来完成操作。
the WebDriver Wire Protocol是Selenium自己设计定义的协议,几乎可以操作浏览器做任何事情,包括打开、关闭、最大化、最小化、元素定位、元素点击、上传文件等。
WebDriver Wire协议是通用的,也就是说不管FirefoxDriver还是ChromeDriver,启动之后都会在某一个端口启动基于这套协议的Web Service。
11、请分别针对性能测试、负载测试和压力测试试举一个简单的例子?
性能测试例子:公司开发了一个小型项目管理系统,上线前需要做负载、压力、大数据量、强度测试等。
负载测试:逐步加压,从而得到“响应时间不超过10秒”,“服务器平均CPU利用率低于85%”等指标阀值。
压力测试:逐步加压,从而使“响应时间超过10秒”,“服务器平均CPU利用率高于90%”等指标来确定系
统能承受的最大负载量。
12.你常用的性能测试工具有哪些?
Loadrunner,Jmeter除外:HyperPacer之后,发现它免费开源、比较容易入门、资源消耗少(一台机器能支持到6万并发)。
能够测手机端APP的性能、支持生成测试数据、支持数据持久化,修改脚本也比之前简单,录制的时候就能自动添加关联。
还有阿里云PTS,是一个SaaS性能测试平台,具有强大的分布式压测能力,可模拟海量用户真实的业务场景,让应用性能问题无所遁形。
QA Load:Compuware公司的QALoad是客户/服务器系统、企业资源配置(ERP)和电子商务应用的自动化负载测试工具。QALoad是QACenter性能版的一部分,它通过可重复的、真实的测试能够彻底地度量应用的可扩展性和性能。

13.有5台配置为处理器:Intel Pentium 4 1.6G,内存容量 512MB,硬盘容量 40GB的机器,
如何较好的利用这些机器完成一次并发用户数为1000人的性能测试工作?
答:1台做应用服务器,1台做数据库服务器,1台运行控制器并承担一部分负载生成任务,2台负载生成器。
14.HP-UX与AIX操作系统中,监控CPU、内存、磁盘I/O的命令分别是什么?
查查netstat、lanadmin、sar的manpage。
15.客户交付一个性能测试项目,请阐述你的实施流程:
测试设计阶段:
(1)了解被测系统的性能需求,定义测试目标与范围:
(2)了解系统的技术信息,如系统架构
(3)确定测试方案,进度安排,并制定测试计划,场景设置方案及需收集的测试数据
(4)同相关人员协商讨论测试方案
(5)准备测试收集模板,不同项目的性能测试,需收集的数据不同,针对性的

制定一个模板更
符合需要
测试环境准备:
(1)技术准备:选择性能测试工具,测试方案中设计到的技术问题;测试数据的收集方案实现;
如:如何监控系统资源等;
(2)搭建测试环境
(3)创建初始数据:如虚拟用户使用的账号等;
测试执行阶段:
(1)录制脚本
(2)调式脚本
(3)执行场景
(4)收集初始数据:并简单整理
测试分析阶段:
(1)分析测试数据
提交测试报告
16.查看占用内存最大的 5 个进程
ps -aux|sort -k4nr|head -n 5
17.查看 3306 端口被谁 占用
lsof -i:3306
18. 查看 Linux 系统当前加载的库文件
lsof |grep /lib
19.把 /usr/local/ 替换成其他的目录
sed -i 's//usr/local// 目录 /g' 文件
20.建立软链接(快捷方式),以及硬链接的命令
软链接: ln -s slink source
硬链接: ln link source
21.寻找名称为mytest.log的文件
find /-type f -name "mytest.log"
22.查看启动了哪些端口?
netstat -nltp
23.查看某个服务的日志:
tail -100f /APP/web/logs/log.log
24.查看某个服务是否启动,执行:
ps -aux|grep 服务名

25.网络时间同步命令:
ntpdate -u 210.72.145.33

性能测试工具Locust gatling
26.批量插入100条数据
delimiter $$
create procedure myproc ()

begin
declare num int ;
set num = 1 ;
while num < 100 do
insert into emp (id, `name`, sex)
values
('', concat("name", num), 1) ;
set num = num + 1 ;
end
while ;
end$$
27.往表test1000w中的某个字段id插入1-100000000,
实现方法是用存储过程,循环插入。可以设置每10000条提交一次。
create or replace procedure p_insert_part
is

--批量提交参数
num number
begin
num:=0;
for i in 1....10000000
loop
insert into test1000w(id)
values(i);
num:=num+1
if mod(num,10000)=0 then
commit;
end if;
end loop
commit;
end;
28.查看内存的命名:
free -h
29.请问该如何避免线上版本发生问题
(1)测试从按次测试改成按轮测试,整轮开始之前记录版本号,整轮结束之前不接受提交代码修改
(2)sonar规则扫描,每次出问题花时间跟到代码层追溯,整理成sonar的规则;建议初期用findbugs排除低级错误
(3)测试过程数据分析:建议全部测试开始前清理掉数据库和日志,测试过程中全部保留,最后测完之后分析,比如测试环境限制了邮件发送,那么发送记录表里面就不能有成功的记录;再比如主数据与关联数据关系应该是1:3,做个联表group找找有没有关系不对的;日志里面所有的异常必须全部过一遍、另外,对各个流程节点关键日志进行统计,在某一个节点数量大幅增加的可能就是有bug的
(4)推动jenkins和docker,部署脚本建议测试维护,确保上线环境与测试环境一致
(5)埋

点提前预测线上bug,这个一两句很难说完,建议自己查资料
30.请描述一下fiddler的工作原理
Fiddler是以代理WEB服务器的形式工作的,浏览器与服务器之间通过建立TCP连接以HTTP协议进行通信,
浏览器默认通过自己发送HTTP请求到服务器,它使用代理地址:127.0.0.1, 端口:8888. 当Fiddler开启
会自动设置代理, 退出的时候它会自动注销代理,这样就不会影响别的程序。不过如果Fiddler非正常
退出,这时候因为Fiddler没有自动注销,会造成网页无法访问。解决的办法是重新启动下Fiddler。
31.计算2015年以后雇佣的员工个数
select count(*) from employee where year(hire_date) >2015;
32.工资大于9000的员工编号,姓名和工资
select employee,employee.employ_name,salary.salary from employee,salary where
salary >9000 and employee.employee.employee_id=salary.employee_id;
33.计算各个部门的员工个数,表头显示为:部门,员工个数
select department as 部门,count(*) as 员工个数 from employee group by department;
34.按工资的高低列出工资表
正序
select * from salary order by salary;
倒序
select * from salary order by salary desc;


create or replace procedure proc1
as
begin
for i in 1..100000
loop
excute immediate
'insert into t values('||i||')';
commit;
end loop;
end;
/
批量插入·数据
create or replace procedure proc_casekey_upstate
as
casekey char(14);
begin
for i in 1...100000 loop
casekey:='TMP' || lpad(i,7,0);
insert into TMP_UPSTATE_CASEKEY values(casekey,1,sysdate);
end loop;
commit;
end;

begin
proc_casekey_upstate();
end;

create or replace proc3
as
begin
for i in 1..100
loop
insert into student values(id,'name',sex);
end loop;
commit;
end;
/

sql面试题
(1)计算2015年以后雇佣的员工个数
select count(*) from employee where year(hire_date)>2015;
(2)工资大于9000的员工编号,姓名和工资
select employee.employee_id,employee.employee_name,salary
from employee,salary where salary >9000 and employee.employ_id
=salary.employee_id;
(3)计算各个部门的员工个数,表头显示为:部门,员工个数
select department as 部门,count(*) as 员工个数 from employee group
by department;
(4)按工资的高低列出工资表
select * from salary order by salary;

相关文档
最新文档