面试时间:2020/7/14 20:05 面试时长:30分钟

面试岗位:测试开发工程师

 

面试题目:

Q1:你对测试岗位的理解和想法?

A1:测试和开发一样重要,软件测试的定义等等。

Q2:软件测试的过程是什么?

A2:

Q3:你觉得在开发过程中,测试人员应该做什么?

A3:

Q4:假设现在有一个登录页面,包括用户名和密码两个输入框,你认为怎么测试这个页面?

A4:首先是功能测试,什么都不输入,点击提交按钮,看提示信息。输入正确的用户名和密码,点击提交按钮,验证是否能正确登录。输入错误的用户名和密码,验证用户登录失败,是否会显示提示信息。 登录成功后是否能跳转到正确的页面。 用户名和密码,如果太长或太短,应该怎么处理。(是否有提示,密码的安全性,太短是否可以) 用户名和密码前后是否有空格处理。 密码是否加密显示。 如果登录需要验证码,验证码图片是否可以点击更换,更换后的验证码是否可用。登录界面中的切换另一账号时是否会清空账号信息。 用户名和密码是否大小写敏感。输入密码时,大写开启是否有提示信息。 用手机号登录,是否可以在规定时间内将验证码发送到用户手机。输完用户名之后按Tab键是否能到输入密码的框,输完密码之后按回车能否登录。如果有记住用户名密码的功能,下一次打开页面,是否默认有用户名密码。用户首次登录时是否会提示修改密码。退出登录、忘记密码是否可以跳转到正确的链接。如果验证码具有时效性,需要分别验证时效内和时效外验证码的有效性。首次打开登录页面,默认焦点是否定位在用户名输入框中。如果有多种登录方式,各种登陆方式是否相互影响。若使用初始密码登录时是否会提示修改密码。 

其次是性能测试,打开登录界面,需要的时间。 输入用户名和密码,点击登录按钮,跳转到使用界面需要的时间,登录后页面的响应时间是否在可接受范围内。网络延迟、弱网、断网等情况下登录页面的显示。还有界面测试,界面布局是否合理,文本框和按钮是否对齐。文本框的长度和高度布局是否合理,按钮的大小是否易于点击。 登录界面是否清晰合理美观,无乱码(文字简洁、无错别字)。安全性测试,在登录页面,输入的密码是否隐藏显示。用户名、密码能否支持复制、黏贴。密码复制粘贴功能是否可用。密码在网络传输中,日志中,后台存储中是否加密。在浏览器中直接输入登录成功后的URL地址,验证是否会重新定向到用户登录界面。密码输入框内的密码是否都可以在页面源码模式下被查看。用户名和密码是否通过加密的方式,发送给Web服务器。 用户名和密码的验证,应该是用服务器端验证,而不仅仅是在客户端用javascript验证。 错误登录次数限制,防止暴力破解。 考虑是否支持多用户在同一机器上登录。 考虑同一用户在多台机器上登录。不登录的情况下,在浏览器中直接输入登录后的 URL 地址,验证是否会重新定向到用户登录界面。用户名和密码的输入框中分别输入典型的“SQL 注入攻击”字符串,验证系统的返回页面。用户名和密码的输入框中分别输入典型的“XSS 跨站脚本攻击”字符串,验证系统行为是否被篡改。同一账号在相同浏览器,不同浏览器,不同终端登录时的互斥性。涉及资产风险的,对登录设备和地区检测。是否可以用抓包工具抓到的请求包直接登录。

另外还有,兼容性测试主流的浏览器下是否显示正常以及功能正常使用。(IE,Firefox,Chrome,Safari等)不同平台下是否能正常工作,如Windows,Linux。 移动设备上是否正常工作,如Iphone,Andriod。 不同的分辨率。易用性测试,用户界面是否符合标准和规范。 是否满足用户的使用习惯。 页面跳转时间是否满足一般用户的用户体验。 登录窗口是否可以最大化、最小化、改变窗口的打小,并移动。 输入用户名,密码后回车,是否可以正常登录。是否可以全用键盘操作,是否有快捷键。输入框能否可以以Tab键切换。以及本地化测试,不同的语言环境下,页面的显示是否正确。

Q5:假设现在发现了一个BUG,你如何定位这个BUG是前端还是后端?

A5:首先通过经验判断,测试人员负责的项目多了,自然对功能的实现过程有所了解,也就明白如何分类BUG了。其次可以查看日志,当我们发现一个BUG,并不确定这个BUG属于前端还是后端,可以查看后端服务的日志,复现BUG时,查看日志中有没有相关的信息。最后还可以查看接口,大多数浏览器都自带端口查看工具,例如Chrome浏览器,Firefox浏览器等都可以通过F12看到当前页面发送的请求状况。

Q6:MySQL数据库里,想查找A表中B列大于100的前5个降序排列,怎么写语句?

A6:select top 5 B from A where B > 100 order by B desc。

Q7:TCP协议的握手与挥手过程是怎样的?

A7:TCP有三次握手,第一次握手:Client将SYN置1,随机产生一个初始序列号seq发送给Server,进入SYN_SENT状态;第二次握手:Server收到Client的SYN=1之后,知道客户端请求建立连接,将自己的SYN置1,ACK置1,产生一个acknowledge number=sequence number+1,并随机产生一个自己的初始序列号,发送给客户端;进入SYN_RCVD状态;第三次握手:客户端检查acknowledge number是否为序列号+1,ACK是否为1,检查正确之后将自己的ACK置为1,产生一个acknowledge number=服务器发的序列号+1,发送给服务器;进入ESTABLISHED状态;服务器检查ACK为1和acknowledge number为序列号+1之后,也进入ESTABLISHED状态;完成三次握手,连接建立。

TCP有四次挥手,第一次挥手:Client将FIN置为1,发送一个序列号seq给Server;进入FIN_WAIT_1状态;第二次挥手:Server收到FIN之后,发送一个ACK=1,acknowledge number=收到的序列号+1;进入CLOSE_WAIT状态。此时客户端已经没有要发送的数据了,但仍可以接受服务器发来的数据。第三次挥手:Server将FIN置1,发送一个序列号给Client;进入LAST_ACK状态;第四次挥手:Client收到服务器的FIN后,进入TIME_WAIT状态;接着将ACK置1,发送一个acknowledge number=序列号+1给服务器;服务器收到后,确认acknowledge number后,变为CLOSED状态,不再向客户端发送数据。客户端等待2*MSL(报文段最长寿命)时间后,也进入CLOSED状态。完成四次挥手。

Q8:HTTP请求的种类有哪些?

A8:GET方法请求一个指定资源的表示形式,使用GET的请求应该只被用于获取数据。HEAD方法请求一个与GET请求的响应相同的响应,但没有响应体。POST方法用于将实体提交到指定的资源,通常导致在服务器上的状态变化或副作用。

Q9:HTTP和HTTPS有什么区别?

A9:HTTPS是以安全为目标的HTTP通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTPS在HTTP的基础下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。使用 HTTPS 协议可认证用户和服务器,确保数据发送到正确的客户机和服务器。HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,要比 HTTP 协议安全,可防止数据在传输过程中被窃取、改变,确保数据的完整性。HTTPS 是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本。但是,相同网络环境下,HTTPS 协议会使页面的加载时间延长近 50%,增加 10%到 20%的耗电。此外,HTTPS 协议还会影响缓存,增加数据开销和功耗。

Q10:在Linux系统中,查看文件内容可以使用哪些命令?

A10:可以使用vi,cat,more,less,tail,head指令。

Q11:在Linux系统中,如何查看当前的进程?

A11:使用ps命令即可查看当前的进程。

Q12:给定一个长度为N的数组,如何将奇数排到数组的前面,将偶数排到数组的后面?

A12:定义两个指针A和B,指针A从前往后扫描,指针B从后往前扫描,当指针A扫描到偶数时暂停,当指针B扫描到奇数时暂停,此时将指针A和B的数值进行交换,并继续进行扫描和交换的操作,直到指针A和B重合时停止。

Q13:你目前所就读的学校在天津,如果工作地点在四川成都是否可以接受?

A13:可以接受,本人对环境的适应能力比较强,另外本人老家在四川。

 

反问环节:

Q1:请问在实际开发过程中,测试人员和开发人员是否会发生冲突?

A1:基本上不会,这也就是为什么之前问你如何定位BUG和缺陷的位置,这样也方便通知具体的开发人员解决问题等等。

 

面试感想:

面试官非常和蔼,没有那种高高在上的态度,另外在面试过程中他的同事和他说了句话也侧面表现出了面试官的幽默感。

 

面试结果:

初试已通过

原文链接:https://blog.csdn.net/weixin_42634898/article/details/107348595

最后修改日期:2020年7月16日