测试面试题四
你负责的项目前期是根据需求说明书测啊还是属于敏捷开发?
需求说明书
启动一个线程的函数?
start()
什么是兼容性测试?
兼容测试主要是检查软件在不同的硬件平台、软件平台上是否可以正常的运行,即是通常说的软件的可移植性
你为什么选择软件测试行业?
因为之前了解软件测试这个行业,觉得他的发展前景很好。
现在有个程序,发现在Windows上运行得很慢,怎么判别是程序存在问题还是软硬件系统存在问题?
1、检查系统是否有中毒的特征;
2、检查软件/硬件的配置是否符合软件的推荐标准;
3、确认当前的系统是否是独立,即没有对外提供什么消耗CPU资源的服务;
4、如果是C/S或者B/S结构的软件,需要检查是不是因为与服务器的连接有问题,或者访问有问题造成的;
5、在系统没有任何负载的情况下,查看性能监视器,确认应用程序对CPU/内存的访问情况
你觉得bugzilla在使用的过程中,有什么问题?
界面不稳定;
根据需要配置它的不同的部分,过程很烦琐。
流程控制上,安全性不好界定,很容易对他人的Bug进行误操作;
没有综合的评分指标,不好确认修复的优先级别。
使用QTP做功能测试,录制脚本的时候,要验证多个用户的登录情况/查询情况,如何操作?
分析用户登录的基本情况,得出一组数据,通过性测试/失败性测试的都有(根据TC来设计这些数据),然后录制登录的脚本,将关键的数据参数化,修改脚本,对代码进行加强,调试脚本。
怎样写测试计划和测试用例?
简单点,测试计划里应有详细的测试策略和测试方法,合理详尽的资源安排等,至于测试用例,那是依赖于需求(包括功能与非功能需求)是否细化到功能点,是否可测试等。
为什要在一个团队中开展测试工作?
因为没有经过测试的软件很难在发布之前知道该软件的质量,就好比ISO质量认证一样,测试同样也需要质量认证,这个时候就需要在团队中开展软件测试的工作。在测试的过程中发现软件中存在的问题,及时让开发人员得知并修改问题,在即将发布时,从测试报告中得出软件的质量情况。
为什要在一个团队中开展测试工作?
因为没有经过测试的软件很难在发布之前知道该软件的质量,就好比ISO质量认证一样,测试同样也需要质量认证,这个时候就需要在团队中开展软件测试的工作。在测试的过程中发现软件中存在的问题,及时让开发人员得知并修改问题,在即将发布时,从测试报告中得出软件的质量情况。
http和https区别,https在请求时额外的过程,https是如何保证数据安全的数据加密传输,是HTTP和HTTPS之间的本质性区别?
传统的HTTP协议通信:传统的HTTP报文是直接将报文信息传输到TCP然后TCP再通过TCP套接字发送给目的主机上。
HTTPS协议通信:HTTPS是HTTP报文直接将报文信息传输给SSL套接字进行加密,SSL加密后将加密后的报文发送给TCP套接字,然后TCP套接字再将加密后的报文发送给目的主机,目的主机将通过TCP套接字获取加密后的报文给SSL套接字,SSL解密后交给对应进程。
做好软件测试的一些关键点?
1-测试人员必须经过测试基础知识和理论的相关培训
2-测试人员必须熟悉系统功能和业务
3-测试要有计划,而且测试方案要和整个项目计划协调好
4-必须实现编写测试用例,测试执行阶段必须根据测试用例进行
5-易用性,功能,分支,边界,性能等功能行和非功能性需求都要进行测试
6-对于复杂的流程一定要进行流程分支,组合条件分析,再进行等价类划分准备相关测试数据
7-测试设计的一个重要内容是要准备好具体的测试数据,清楚这个测试数据是测试那个场景或分支的。
8-个人任务平均每三个测试用例至少应该发现一个BUG,否则只能说明测试用例质量不好
9-除了每天构建的重复测试可以考虑测试自动化外,其他暂时都不要考虑去自动话
vim怎么退出?
q 不保存直接退出
wq 保存后退出
q! 强制退出
如何查看进程状态?
ps -ef | grep 进程名
chown是什么?grep是什么?
chown 改变文件的拥有者和组
grep 查找文件里符合条件的字符串
如何查看日志?
tail -f 日志文件名
如何查看linux端口号被占用?
netstat -a 查看端口状态
不可逆的操作,如何处理,比如删除一个订单这种接口如何测试?
关注接口的返回值是否正常
关注数据库中的订单表的数据是否被删除
关注是否有删除记录表存放相关删除的记录,方便日后可以追溯
一条软件缺陷(或者叫Bug)记录都包含了哪些内容?
一条Bug记录最基本应包含:
bug编号;
bug严重级别,优先级;
bug产生的模块;
首先要有bug摘要,阐述bug大体的内容;
bug对应的版本;
bug详细现象描述,包括一些截图、录像....等等;
bug出现时的测试环境,产生的条件即对应操作步骤;
目前主要的测试用例设计方法是什么?
白盒测试:逻辑覆盖、循环覆盖、基本路径覆盖
黑盒测试:边界值分析法、等价类划分、错误猜测法、因果图法、状态图法、测试大纲法、随机测试、场景法
自动化测试流程是怎么样的:
1、制定测试计划
2、分析测试需求
3、设计测试用例
4、搭建测试环境
5、编写测试脚本
6、分析测试结果、记录测试问题
7、跟踪测试BUG
8、自动化脚本的维护
一台客户端有三百个客户与三百个客户端有三百个客户对服务器施压,有什么区别?
300个用户在一个客户端上,会占用客户机更多的资源,而影响测试的结果。线程之间可能发生干扰,而产生一些异常。
300个用户在一个客户端上,需要更大的带宽。
IP地址的问题,可能需要使用IP Spoof来绕过服务器对于单一IP地址最大连接数的限制。
所有用户在一个客户端上,不必考虑分布式管理的问题;而用户分布在不同的客户端上,需要考虑使用控制器来整体调配不同客户机上的用户。同时,还需要给予相应的权限配置和防火墙设置。
SQL的表连接方式有哪些?
这里有两张表TableA和TableB,分别是姓名表和年龄表,用于我们例子的测试数据
在开发中我们的业务需求有时候是复杂的,多张表联合查询的时候是有多种方式的,面对不同的需求,
灵活使用不同的表连接方式,那么表连接分成哪几种呢?
表连接有几种?
sql表连接分成外连接、内连接和交叉连接。
外连接概述:
外连接包括三种,分别是左外连接、右外连接、全外连接。
对应的sql关键字:LEFT/RIGHT/FULL OUTER JOIN,通常我们都省略OUTER关键字,写成LEFT/RIGHT/FULL JOIN。
在左、右外连接中都会以一种表为基表,基表的所有行、列都会显示,外表如果和条件不匹配则所有的外表列值都为NULL。
全外连接则所有表的行、列都会显示,条件不匹配的值皆为NULL。
左外连接示例:
sql语句: select * from TableA left join TableB on TableA.id=TableB.id
结果:
image.png
注释:TableA(基表)中所有的行列都显示了,第三行的条件不匹配所有TableB(外表)的值都为NULL。
右外连接示例:
sql语句: select * from TableA right join TableB on TableA.id=TableB.id
结果:
image.png
注释:TableB(基表)中所有的行列都显示了,第三行的条件不匹配所有TableA(外表)的值都为NULL。
全外连接示例:
sql语句:select * from TableA full join TableB on TableA.id=TableB.id
结果:
image.png
注释:TableA和TableB的所有行列都显示了,条件不匹配的行的值为NULL
内连接概述:内连接是用比较运算符比较要连接的列的值的连接,不匹配的行不会被显示。sql关键字JOIN 或者INNER JOIN,通常我们写成JOIN
例子:select * from TableA JOIN TableB on TableA.id=TableB.id
结果:
image.png
以上写法等效于:
select * from TableA,TableB where TableA.id=TableB.id
select * from TableA cross join TableB where TableA.id=TableB.id (cross join 后只能用where不能用on)
交叉连接概念:没有where条件的交叉连接将产生连接表所涉及的笛卡尔积。即TableA的行数TableB的行数的结果集。(TableA 3行TableB 3行=9行)
sql语句:select * from TableA cross join TableB
结果:
image.png
注释:返回3*3=9行数据,即笛卡尔积。
以上写法等效于:
select * from TableA,TableB