测试开发面试题汇总

sql语句应该考虑哪些安全性?

答案:

(1)防止sql注入,对特殊字符进行转义,过滤或者使用预编译的sql语句绑定变量。
(2)最小权限原则,特别是不要用root账户,为不同的类型的动作或者组建使用不同的账户。
(3)当sql运行出错时,不要把数据库返回的错误信息全部显示给用户,以防止泄漏服务器和数据库相关信息。

 

1、项目经验

 

2、介绍下什么是索引

  

定义:关系型数据库中,索引是一种单独的物理的对数据库中的一列或者多列的值进行排序的存储结构,他是某个表中一列或者若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。

 

拓展:

(关系型数据库与菲关系型数据库的区别?你用到的非关系型数据库有哪些?)

索引是一种分散的存储结构。

索引的作用:提高MySQL的检索速度

  • 快速抓取数据
  • 保证数据记录的唯一性
  •  实现表与表之间的参照完整性(表与表之间怎么参照呢?)
  • 使用部分语句进行数据检索时,减少排序和分组的时间

3、京东登录页面怎么测?

  • 分析需求
    • 确定测试范围:(1)二维码登录(2)账户登录(3)三方登录
    • 输入框的规则:(1)手机号/邮箱/其他方式 (2)登录账号的限制,如输入格式、字符长短限制、大小写限制等
  • 界面UI
    • UI显示什么?
    • 文案显示什么?
  • 功能思路分析-功能验证
    • 正向验证,输入正确的账号、密码登录账号,登录成功
    • 反向验证
      • 账号输入框
        • 手机号
          • 正常情况下为11位的数字(需考虑未注册、注销的手机号),登录失败并提示;(手机号后面+空格 ),可成功登录
          • 非正常输入(需考虑10、12位的数字,非数字的英文、中文、特殊符号的输入),登录失败并提示
          • 无输入(账号为空的输入),登录失败并提示
        • 密码框 
          • 正确的账号,错误的密码(不符合格式、错误的数字等),登录失败并提示
          • 无输入(账号为空的输入),登录失败并提示
          • 特殊字符(密码包含空格等),登录失败并提示
      • 按钮操作
        • 清空按钮
          • 点击清空按钮,清空数据  
          • 输入框内为空,无展示
          • 输入框内至少1字符,展示
          • 特殊字符输入(空格),展示
        • 忘记密码
          • 点击后,跳转找回密码页面
        • 登录按钮
          • 有网络的情况下,登录跳转成功
          • 无网络的情况下,跳转失败  
      • 场景法补充不同场景的用例
      • 接口测试   
        • 接口请求时机
        • 接口请求参数是否正确
        • 接口相应展示是否正确:mock方法(??????)
  • 性能分析
    • tps
    • 响应时间
    • CPU的占用率
    • 内存
    • 吞吐量
    • IO的占用等
  • 兼容性
    • 不同浏览器的不同版本或分辨率(常用的分辨率有1920*1080、1280*720)
    • 不同移动设备的不同浏览器
  • 安全性
    • 信息加密
      • 传输过程中关键信息(如 token、cookie等)有没有加密
      • 登录后缓存信息有没有加密  
    • 密码操作
      • 是不是支持复制粘贴
      • 密码框是否加密显示
      • 密码在源代码下是否可见
      • 密码有效期 
    • 注入攻击
      • SQL注入(如何保证SQL安全性?)
      • xss攻击(xss如何操作?)
    • 信息清除
      • 退出后有没有清除用户信息  
    • 是否可绕过登录机制,如直接网页访问
    • 登录限制
      • 登录失败次数
      • 登录失败后的验证码机制
      • 登录互斥
      • 登录超时后是否返回登录页
      • 浏览器前进后退是否需要重新登录 
  • 易用性
    • 焦点定位
      复制粘贴
      页面布局
      提示语容易理解  
  • web自有特性  
    • 链接测试
    • 页面的所有链接是不是都能切换正常
      页面中提供的可链接功能是不是都能正常链接
      多个浏览器同时访问
      用户同时打开多个浏览器,用相同的账户操作,数据一致性,数据同步的问题
      多个浏览器,用不同的账户去操作,cookie中会不会有用户信息显示错乱  

 登录跳转至主页面很慢,分析原因

4、如果一个普通用户,他的百度首页打不开,问题怎么定位?写出定位流程。

  • 检查机器网络是否正常,通过ping或者打开其他网页检查
  • 检查浏览器network设置是否正常,浏览器可以设置模拟3G,4G,offline等,同时切换其他浏览器尝试
  • 检查DNS(domain name system)解析是否正常(如不正常可用刷新DNS的方法,命令为ipconfig/flushdns)
  • 检查ARP协议是否正常
  • 如果网络正常,开始排查服务端问题,检查服务器流量是否正常,是否能够接收到请求日志
  • 接收不到请求日志,查看后端注册中心端口是否正常
  • 如果一切正常,检查是否且服务端日志也接收到且已经返回了,检查客户端接收到response后解析是否出现问题,浏览器控制台是否出现脚本报错

5、问简历上的第一个项目的详细情况,包括测试用例怎么写?怎么判断测试通过?项目的原理?

 

6、如果是做功能测试,能接受吗?

 

7、说一下你们工作中的测试流程

 

8、用她的手机给我看了下百度贴吧的发帖功能的界面,给我张纸,让我写出测试点(只需要考虑内容,表情,添加图片,@功能),写完讲一遍逻辑。

 

9、针对发朋友圈这个功能设计你的测试用例,请给出用例分类与典型用例场景

 

 

 

 

 

原文出处:https://www.cnblogs.com/tudou-22/p/9378805.html

 

10、Java 中的容器有哪些?它们的区别和特性?

 

11、Git 的常见操作,如 git stash

 git stash   用于保存和恢复工作区进度

Git push、Git pull、Git  clon、Git commit、Git init、Git diff

 

12、Java 的接口与抽象类的区别

 

13、TCP 和 UDP 的区别?如何保证 TCP 的可靠性?

 

14、打开一个网页都发生了哪些事?

 

15、对工作上的压力怎么看待?

 

16、继续问项目经验和技术难点

 

17、了解现在的工作环境,背景等

 

18、户口,家庭情况,伴侣工作等

 

19、问上一份工作的公司是做什么的?离职原因?自己的职业发展规划?

 

20、遇到的某个难点是什么?如何解决的?

 

21、自己解决的最亮点的技术难点是什么?

 

22、你用jmeter做什么测试?

 

23、如果有一个登录接口需要服务端返回参数,再带着这个参数去请求才能完成登录,用jmeter 怎么做?

 

24、请问你们公司是如何做接口测试的?

 

25、接口测试质量评估标准是什么?

 

26、对接口测试这块熟不熟?是怎么测的?用的什么工具?为什么用 HTTPClient 类库,觉得它有什么缺点?用 Fiddler 主要做什么?

 

27、请问你们公司是如何做性能测试的?请讲诉性能测试的相关指标?

 

28、压力测试和负载测试的区别

 

29、服务器中一般要监控哪些数据,如何监控的,怎么从监控数据中发现问题?

 

30、性能测试用过吗?什么情况下用的?主要测哪些方面?

 

31、性能测试关注哪些指标?

 

32、对于多环境(联调环境、测试环境、预发布环境)如何让接口用例支持多套环境,说出你的做法

 

33、如果接口返回数十个字段,如何批量校验这些字段的正确性,请说出你的方法?

 

34、假设系统A调用系统B,我把B的接口都mock了,进行性能测试,这样有什么好处和坏处?

 

35、有一天早上打车高峰,滴滴服务端挂了大概30分钟,工程师抢修之后,马上上线,之后又挂了,请问有哪些原因会造成这个情况?

 

36、请问Monkey测试的优缺点?

 

37、如果使用monkey发现了一个毕现闪退,请问怎么使用monkey重现它?

 

38、UI 测试的过程

 

39、自动化测试用例怎么来?

 

40、你项目中有多少case,通过率怎么样?

 

41、报告哪里来,主要统计什么?

 

42、做自动化测试的目的?

 

43、如何看待自动化和手动测试?怎样的一个比例才是健康的?

 

44、你们公司的自动化投入产出比怎样?效益怎样?

 

45、自动化测试用例的覆盖率多少?

 

46、完整运行一次自动化用例需要多久时间?

 

47、什么是分层自动化?

 

48、你的测试数据是怎么准备的?

 

49、测试脚本的维护成本是怎么样的?

 

50、问第一个项目的测试框架的搭建、怎么用数据驱动测试?

 

51、Web View 怎么测试?

 

52、请问你的定位策略是什么?

 

53、请问如何实现用例失败或者异常时候需要截图?

 

54、请问如何分布式执行webdriver用例?

 

55、如何在脚本中执行 JavaScript 代码?

 

56、Appium 的定位策略有哪些?

 

57、请简述Appium的原理

 

58、iOS 和 Android 的 UI 自动化的原理是什么?

 

59、当定位策略都失败的时候,你该怎么做?

 

60、UI 测试做的是 iOS 还是 Android?讲讲 iOS 的 UI 怎么测?

 

61、获取 Appium 中的 content-desc 不为空的控件列表,代码不限。

 

62、并行运行 Appium 需要修改哪些参数

 

63、你如何用Selenium测试

 

64、Selenium的工作原理?

 

65、常见的定位方式?

 

66、上传图片的几种方式?

 

67、如何处理动态元素?

 

68、你是怎么开发测试框架的?

 

69、PO模型是怎么做的?

 

70、失败截图的原理是什么?

 

71、你常用的命令是什么?

 

72、用什么查看log?

 

73、如何查找一个文件大小超过5M的文件

 

74、如何查看进程?

 

75、Linux 中查找某个文件并删除它

 

76、Linux 查询 CPU、内存的指令

 

77、使用 Shell 获取 Nginx log 中接口包含 topic 且状态码为 200 的接口平均响应时间(越严谨越好)

 

78、每隔 2s 获取某个进程的 CPU 和 mem 数据并保存到 csv 数据文件

79、快排的实现 (代码实现)

 

80、算数组中查找出现次数过半的数(代码实现)

 

81、查找链表的倒数第三个数(代码实现)

 

82、什么是面向对象编程?

 

83、讲下Java多线程的使用

 

84、有三个线程T1,T2,T3,怎么确保它们按顺序执行?

 

85、Thread 类中的start() 和 run() 方法有什么区别?

 

86、请写一个线程安全的单例模型

 

87、请写出冒泡排序

 

88、1~9999数列中数字3出现的次数,请用递推方法解题。

 

89、从一个数组中找出前4个最大的数,用最优解。

 

90、写一段程序,删除字符串a中包含的字符串b,举例 输入a = “asdw”,b = “sd” 返回 字符串 “aw”,并且测试这个程序。

 

91、写一个方法,把字符串转为数字,比如 str=“1234”,变成 int 1234。并且测试这个程序

 

92 、A、有两个有序链表,将他们组成一个有序链表。

 

93、给一个字符串,字符串里有 (){}[]“”这六个符号,设计一个算法,判断这些符号是否成对匹配,即要检验这些括号是否都是成对出现的。

94、有两个字符串类型的数字,实现一个方法将它们进行相加,并返回相加后的数值。(要考虑数据的长度问题)

 

95、Java 多线程的创建

 

96、算法:二叉树的深度计算

 

96、算法:一亿个无序数找出 Top 100(这个也没写好,空间复杂度高了,应该用堆排序)

 

97、说下左连接和右连接

 

98、给你一张表,根据要求写sql,这个题目比较多,自己百度吧。

 

99、使用sql生产10万条数据

 

100、数据库熟吗?用过哪些数据库?索引会吗?事务了解吗?写一个SQL 查询语句:给一个字段,对其进行从大到小排序,取前十行。

posted @ 2022-02-25 11:29  不想咸的鱼  阅读(2575)  评论(0编辑  收藏  举报