软件测试面试知识点

发表于:2019-2-03 14:45

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:zhusongziye    来源:CSDN

  第一部:
  1、接口(api)测试在什么时候使用的?
  1、新接口:当开发的后台程序开发完毕,交付给测试之后(没有测试测试之前,可能还没开发好这个接口),交付是有前提的,
  一般情况下,开发会提供接口文档,后面就用 postman....等接口测试工具测试。
  2、老接口:新接口测试(新功能测试),做回归测试,这个时候,新老接口一起做,目的是为了验证新的接口是否对老的接口
  产生影响。
  3、api测试就是 接口测试
  2、还有断言 在讲一遍(jemeter)
  断言:某行代码或者某行脚本 之前加上 断言,如果不出错,则程序继续往下执行。如果出错呢?那程序就会抛出异常提示,
  告诉你,程序出错,并且终止此次执行。
  3、SVN能做哪些事情,是干嘛用的?
  svn:版本管理工具,它和git本质上一样,它们两者的区别,就相当于禅道和jira的区别。他两本质上都是文档管理。
  代码:
  java 代码:xxxx.java
  python 代码:xxxx.py
  普通文件:
  word、excel、ppt、text....
  本质:都是文件,都是存储字符串,只是存储的方式不一样。
  SVN:存放代码、存放普通文件。git也是一样的功能。
  svn在什么时候使用?
  1、提交代码的话,当开发人员代码开发完成,就会把代码提交到svn上。
  2、提交文件,比如测试用例编写完毕(excel)、测试报告(word)....
  为什么要使用svn(git)工具?
  1、方便统一管理
  2、实现资源共享
  3、版本管理的功能、这个只能在代码管理,体现比较大
  4、有权限控制,每个team都有对应的文件夹权限
  4、敏捷测试
  1、为什么要有敏捷测试?
  因为每个公司的项目,不是一次做完就扔掉,后续还会有需求更新和bug。当项目前期做完之后,如果后续还有新的需求或者
  需求变更,或者bug,会再次开发,bug修复,再上线。
  2、在敏捷测试里面,会有看板?
  看板在哪里看到:小公司在物理看板(搞一个白板)
  看板进度的追踪:项目经理
  看板状态:待开发、开发中(开发人员);待测试、测试中(测试人员);产品验收、关闭(产品经理)
  5、有一个客户,买了一百种物品,但是反应有一个单品算错了。
  (1)怎么在后台找到这个bug
  1、第一反应:我单独测试这个单品,看是否正确,如果正确,看是不是跟其他商品组合的时候,才会算错
  如果单品出错的话,那就是这个商品的算法有问题
  如果是组合出错的话,那么这个单品在组合的时候算法有问题。
  2、考虑业务:
  1、看此单品是否参加促销活动,如果促销活动,跟开发确认是否把促销活动的优惠算进去。
  2、本身存在的bug,去数据库查看,是否是因为数据的原因的导致,可能就是脏数据
  (2)怎么用接口测出来这bug
  1、用fiddler抓取这个接口,结算接口
  2、结算:参数:商品,商品数量、商品的价格
  3、然后根据上述提供的思路测试一下(postman)
  6、项目难点在哪里
  项目的难点:工作流(核心)
  1、一个系统操作流程,一个系统如果没有工作流的话,她跟excel的功能没有区别。
  2、什么是工作流?
  顾名思义:就是业务流程
  电商系统:
  1、前台的数据和后台公用
  2、后台的数据依赖前台
  3、测试环境的数据可以直接在数据库中去造,利用insert into语句
  项目问的问题?
  1、项目的工作流
  2、在测试项目过程测试流程
  3、在项目的测试过程用过哪些测试技术
  7、用户的权限怎么测
  1、用户和用户组
  2、用户单个用户权限和用户组权限
  3、管理员权限(最高权限)
  8、执行测试怎么执行的、详细的步骤。
  需求评审(产品经理) -> 测试计划(测试leader) -> 编写测试用例 ->
  执行测试用例 -> 发现bug提交到禅道,追踪bug生命周期 -> 编写测试报告
  9、怎么定位bug?
  1、什么是bug
  不满足需求的
  (1、根据需求本身,2、比如我查询功能(抓包),3、只要到后台日志里面根据debug信息,提取出对应的sql)
  存在程序错误 (2、到后台日志里面:存在 error 级别的错误信息)
  不符合用户需求的 (1、竞品分析(去比对类似产品东西))
  第二部:
  数据库:
  1、比如student
  删除一张表里面是所有内容:
  delete from student
  左联:
  以左表为基准,右表数据不存在的时候,则显示null
  1、数据库,数据库数据是存在磁盘里面的
  2、一个数据库实例,有多个数据库,一个数据库下一张到多张表
  3、数据库有范式,因为是关系型数据库:
  第一范式:一张没有任何约束,数据可以无限的重复。
  第二范式:在第一范式的基础之上,多了一个主键约束。
  第三范式:在第二范式的基础之上,增加了外键的约束。
  ....
  4、sql语句:
  对表数据的操作:
  1、简单的sql查询:
  查询(select):
  select a.* from student (as) a where ....  #*:表示当前表中的所有字段
  select id,name from student (as) as where ...
  更新(update):
  update  student set age=18 where ....
  删除(delete):
  delete from student where .....
  因为数据是一行一行的删除,而 * 代表的是字段,所以 delete 后面千万不要加*。
  增加(insert):
  insert into student(字段) values(值)
  2、对表的操作:
  创建表和数据库:
  创建/删除student表:create/drop table student
  创建/删除数据库: create/drop database db1
  对表结构的操作:(特殊的关键字,需要加table关键字)
  alter table student add column api_pay_no varchar(32) not null unique comment
  3、复杂sql:
  1、嵌套:
  course_name="数学"
  选的课程为数学的学生:
  select * from student where course_id in (
  select id from course where course_name = "数学")
  in :表示 条件数据 1个到多个
  = : 相等于的数据只有一个
  select * from class where id in (select class_id from student where
  course_id in (select id from course where course_name="数学"))
  2、左联、右联、内联
  左联(left join):
  以左表为基准,与右表比较值不相等,右表的数据显示为null
  select s.* from student s
  left join course c  on s.course_id = c.id
  where ....
  右联:(right join)
  以右表为基准,与左表比较值不相等,左表的数据显示为null
  select s.* from student s
  right join  course c on s.course_id = c.id
  where ....
  内联:((inner) join )
  以左表为基准,只显示匹配与右表相等数据
  select s.* from student s
  (inner) join course c on s.course_id = c.id
  where ....
  3、在sql的查询中,遵循一个原则: 一切皆表
  select * from (
  select * from (
  select * from student where course_id in (
  select id from course where course_name = "数学") ) as a
  left join (
  select s.* from student s
  left join course c  on s.course_id = c.id
  where .... ) as b on a.id = b.id
  where ... ) as a
  .....
  一个复杂的sql,有几大原则:
  select 后面的永远是 字段
  from 后面永远是 表
  where 后面的永远是条件。
  4、分组(group by)
  select sum(course) from course group by name having name = "张三"
  order by sum(course) desc(asc)
  Linux
  为什么要学Linux?Linux在我们工作当中什么时候使用?
  Linux在我们公司里面 999.99999999...%应用都是部署在Linux。
  Linux 上面服务都已经部署完毕,我们在排除程序上bug的时候,会去看日志。
  1、搭建环境:
  jdk、Tomcat、Apache、PHP、mysql、、小游戏
  1、jdk :  java程序运行环境
  1、jdk   /usr/local/java/
  2、配置环境变量  /etc/profile
  2、Tomcat:web应用服务器,可以部署在Linux(.sh),也可以部署在Windows(.bat),部署在mac
  Tomcat目录:
  - bin 存放执行脚本的文件夹 #启动方式: sh startup.sh 或者 ./startup.sh
  - conf 存放程序配置文件 配置Tomcat端口等配置文件
  - lib  存在程序所调用的jar包
  - logs 存放日志信息
  - temp 临时文件夹 存放临时文件
  - webapps 存放我们的应用程序
  - work  存放我们程序的进程号
  3、apache(nginx):web服务器
  目录结构:
  ....
  2、常用命令:
  1、创建文件:touch
  2、删除文件:rm(remove)
  3、查看文件:cat
  4、复制: cp(copy)
  5、创建文件夹: mkdir(make directory)
  6、剪切或者重命名:mv(move)
  7、压缩解压缩: tar
  8、查看:ls  list
  9、编辑: vi/vim
  10、查看当前路径:pwd(Print Working Directory)
  11、切换用户:su   switch user
  12、创建用户:useradd
  13、删除用户:userdel
  14、创建用户组: groupadd
  15、删除用户组:groupdel
  16、查找: find
  17、修改权限: chmod(change mode)
  18、查看进程: ps  process
  19、杀进程: kill
  20、查看日志:tail
  1、Linux的每个命令,是一个或者多个英文单词的缩写。
  2、拷贝: cp 文件1  文件2   cp -r 目录1  目录2
  3、杀进程: kill -9 进程号
  4、查看日志: tail -f catalina.out -n 300
  查看命令的使用:
  tail  --help
  man tail
  接口测试:
  postman
  断言:在程序前加上一个断言,当程序没有出错,则正常往下执行,如果出错则,给出异常提示,程序终止。
  http协议:
  http协议属于应用层协议,分为请求和响应
  请求:请求头(header)和请求体(body)
  响应:响应头(header)和响应体(body)
  请求,请求方法:
  post、get...
  1、post和get方法:
  1、post 请求参数 放在 body 里面,get的请求的参数 放在 header里面的。
  2、post请求参数的是没有字数限制,get请求参数是有字数限制的
  3、post和get向服务器发送请求,没有本质安全可言,通过抓包都可以抓取到,只不过向服务器发送请求的时候
  ,一个放在手上,一个放在口袋。
  2、http请求的状态码:
  1xx: 消息
  2XX: 成功  200
  3XX: 重定向 302
  4XX: 客户端错误 404 403
  5XX: 服务端错误  500
  第三部:
  项目理论
  一、项目的职责与分工
  产品经理: 设计产品的prd,整理需求的人员
  项目经理:管理整个项目的生命周期的,项目立项,项目在开发测试过程中协调,进度追踪,流程优化...
  开发人员:
  后台开发:Java开发(开发接口)
  前台开发:安卓开发、ios、前端开发...(开发界面)
  测试人员:
  web测试(前端页面)
  移动端测试(ios,安卓)
  配置管理人员:
  负责搭建测试环境、负责管理jar版本、负责管理线下配置文件、负责测试环境工具的稳定,负责管理代码
  运维人员:
  负责把测试环境的程序包放到生产上,负责生产环境的稳定。
  DBA(数据库管理员):
  负责测试环境和生产环境数据库的稳定和优化
  二、项目立项
  是由项目经理主导,管理整个项目的生命
  为什么要立这个项目,解决的什么问题。
  此次立项参与的人员(产品经理、开发人员、测试人员)
  三、测试流程
  1、参加需求评审会
  2、测试leader编写测试计划
  3、测试用例的设计和编写测试用例
  4、评审测试用例
  5、执行测试用例 -> 发现bug 提交 到禅道上
  6、测试leader整理测试报告
  7、上线(校验你能校验的)
  四、测试人员
  测试人员在我们工作当中,需要干些什么?
  1、熟悉业务:
  1、产品prd
  2、熟悉web应用服务器部署
  3、熟悉数据,数据的访问地址,跟业务相关的数据库表结构。
  2、制定测试计划
  测试计划是由测试leader制定,参与编写测试计划
  3、设计测试用例
  借助 xmind 工具,设计测试用例
  (等价类、边界值、场景法等)
  4、编写测试用例
  5、发现bug,提交到禅道
  bug的定义:
  1、不符合需求
  2、程序本身报错
  3、不符合用户的使用习惯。
  6、编写测试报告
  测试leader写的,测试人员,参与编写测试报告
  1、简要
  2、测试结果的分析
  1、测试用例覆盖率
  2、测试用例通过率,失败率
  3、发现bug严重程度的统计,每个模块的bug数的统计。
  4、当前遗留的bug数
  5、负责此项目的测试人员的测试用例
  6、上线标准
  3、本次测试过程中遇到风险
  4、总结
  7、编写发布单
  8、上线发布的流程

      上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号