思路:什么是软件测试→软件测试的含义

什么是软件测试:在规定的条件下对程序进行操作,以发现错误对软件质量进行评估的一个过程。

软件测试的意义:提前发现潜在的安全隐患,避免出现损失,降低风险。

要做好软件测试工作还要从以下方面着手

①一方面打造提前发现问题的能力

  • 对业务知识的熟练掌握
  • 提前介入测试
  • 推进更完善的质量把控制度
  • 不断的提升自身的技术能力 ②另一方面提前规避同类问题的发生,提高软件的稳定性
  • 2.软件测试的基本原则是什么?

    核心原则:基于用户的角度考虑问题,发现问题,提升用户使用系统的体验感。

  • 更早的介入测试
  • 遵守二八原则,重点覆盖出现更多bug的模块
  • 提升用例设计的覆盖度,正向,反向,异常等都需要覆盖到
  • 更多考虑到上下游等未在需求中表现出来的因素
  • 3.软件测试一般要做哪些测试?

    软件测试的类型

    ①. 功能测试

  • 功能逻辑实现准确性测试
  • 兼容性测试
  • 易用性测试
  • ②. 自动化测试

  • web自动化测试
  • 接口自动化测试
  • ③. 性能测试

  • 高并发性能测试
  • 稳定(可靠性)测试
  • 4.软件测试有哪些类型?

    软件测试的类型

  • 黑盒测试:完全不清楚代码逻辑,只按照需要设计输入数据,然后对输出进行验证的过程。
  • 白盒测试:完全清楚代码逻辑,针对代码进行的测试。
  • 灰盒测试:介于白盒和黑盒之间的一种测试类型,偏向于接口测试的感觉,即了解逻辑但又不完全针对代码实现逻辑进行测试。
  • 5.软件测试有哪些类型?

    缺陷的来源分类

  • 新增功能bug
  • 修复bug引起的关联bug
  • 需求变更引发的bug
  • 模块对接的bug
  • 兼容性bug
  • 6.请阐述完整的测试流程?

    开发提测→准入测试(冒烟测试)→功能测试(系统测试)→bug跟踪和管理→集成测试→验收测试→上线→线上回归测试

    7.如何测试一个水杯?

  • 功能性:装水漏不漏,容量有多大
  • 可靠性:水杯扔到地上会不会碎了
  • 易用性:容不容易使用,有没有把手
  • 兼容性:可不可以装饮料,沸水,冰水等
  • 可维护性:是否容易清洗
  • 安全性:是不是会伤到手,是否有毒等
  • 8.如何得到4升水?

    给你一个3升的杯子和一个5升,怎么得到4升水

  • 装满3升的杯,然后倒入5升杯中
  • 再装满3升的杯,然后再倒入5升杯中
  • 5升杯中倒掉,3升杯中剩余的1升水倒入5升杯中
  • 装满3升的杯,然后倒入5升杯中,共计4升
  • 9.测试用例包含的要素有哪些?

    10.bug的生命周期?

    11.bug生命周期中的状态管理?

    12.黑盒测试用例设计方法有哪些?

    黑盒测试用例设计方法有等价类划分法,判定表驱动法,场景分析法,边界值分析法,因果图,正交实验法,错误猜测法。

    13.软件测试流程

    系统测试相关规范和标准的流程:熟悉产品/项目,需求评审,测试需求,测试计划,测试方案,测试用例,预测试,第一轮正式测试、第二轮回归测试、第三轮测试,测试报告,测试总结,测试指南。

    14. 如果你提的BUG开发不认为是BUG怎么办?

    参考答案:

    (1)首先测试人员要确保这确实是个bug(如果是误测,那只能测试人员自己背锅了);

    (2)在测试环境将BUG复现出来,保存好截图、相关测试数据,发给开发人员,或直接给开发人员演示一遍;

    (3)如果开发人员还认为不是BUG,或者是由于技术问题很难修改的BUG,可以叫上产品经理、开发负责人,一起讨论一下;

    (4)对于等级比较低的建议性BUG,可以先记录到BUG管理系统,暂时不用说服开发去修改,后续再进行跟进。

    15. 你对测试最大的兴趣在哪里?为什么?

    答:我对未知的事物充满好奇心和挑战性。

    我觉得在找到一个bug会让我兴奋,能够完善一个项目,让项目不出问题也是我很开心的一个地方。

    解析:多从性格入手,可以自由的增加自己的看法,多往好的方向去说。

    16. 开发说这个不是bug的时候该怎么解决?

    答:首先要把自己检验出来的证据提交给开发工程师,和开发工程师积极沟通,遇到不能复现的bug,就要自己在去利用抓包、截图等方式去存证。如果和开发工程师沟通无果后,要让产品经理来确定是否属于bug。

  • 和开发沟通
  • 留存好bug的理由
  • 如果无法解决,很多事情去找产品经理去解决
  • 17. 从什么时候介入测试最好?

    答:从项目需求阶段就开始介入最好,当我们介入测试越早,那么遇到的问题越少,我们在需求阶段就开始编写计划,方案,然后根据计划,方案进行测试用例编写,越能及时找出bug。

    解析 :越早越好,并编写相对应的文档。

    18. 说下你测试之后的发展规划?

    我要把功能测试这块熟悉好,然后不断的提升自己,能够独立负责一个项目的整体功能测试。

    学会自动化测试,能够对项目进行自动化测试,节省回归测试的时间。

    学会带领一个测试团队,分工,能够解决一个大型项目的测试工作…等等

    解析:重点是思路要清晰,要清晰自己需要学什么,每一个阶段要去学什么东西。

    19. 为什么进入测试行业?

    答:因为测试行业是一个新兴行业,现在测试在互联网行业的比重越来越高,并且它需要很多样的技能,需要专心,耐心,与人沟通的技巧,也需要编程能力,相对开发要更加全面性。

    解析:按自己的想法去打,前面说这个行业前景,后面就说自己的性格或者这个测试所需要的能力很多样。

    20. 怎么才能够全面的测试到每一个点?

    答:在项目伊始阶段,就要开始进行测试工作,测试计划一定要多方位,全面性的去考虑测试的策略,测试用例的编写等。

    解析:及早介入项目测试,文档要编写的全面。

    21. 你都用什么测试方法?

    答:根据模块细分的功能不同,使用不同的测试方法,大方面是黑盒和白盒,然后我们黑盒测试的时候,设计测试用例根据不同的功能使用不同的设计方法(等价类划分、正交等),要保证测试的覆盖性。

    解析:大部分测试都是在用黑盒测试,那么一般就要包括测试用例,而测试用例里几大设计方法要注意。

    22. 测试用例通常包括哪些内容?

    答:用例编号、用例名称、优先级、测试步骤、测试数据、预期结果、最终结果等。

    解析:这个根据公司项目来定义,一般只需要有这几块就足够。

    23. 如何定位前后端BUG?

    答:可以通过以下几种方式

    简单的去看请求响应定位

    通过查询日志,如果日志无内容,说明前端问题,反之后端。

    抓包工具去定位接口,查找数据。

    解析:面试官问这个问题主要是看你怎么解决一个问题的思路,实际工作中很少会遇到这种情况,并且遇到也是很好去定位的。

    24. 账号注册成功,但是登录的时候失败,怎么定位bug?

    答: 调用登录的接口,看输入正确的账号是否成功,如果成功,登录接口无问题。那么注册接口,可能注册数据未存入数据库,或者注册接口验证等等都有问题。提交bug即可。

    解析:简单的去测试一个功能点怎么定位bug,讲出自己的思路即可。

    25. 软件质量是什么?

    答:软件产品可以符合用户的需求,功能实现即可。

    解析:满足用户的需求、功能是最重要的。

    26. 测试用例的设计方法?

    答:分为黑盒测试和白盒测试

    黑盒测试:等价类划分法、边界值分析法、 因果图分析法、正交实验法、判定表法、场景法、功能图法、错误推测法

    白盒测试:逻辑覆盖、循环覆盖、基本路径覆盖

    解析:正常答出这些点即可。

    27. 所有的bug都能够修复吗、都需要修复吗?

    答:理论上所有的bug都是能够去进行修复的,但是有一些bug并不需要修复。有一些细微,并不影响程序运行,功能的bug可以不修复,先把大型bug,重要的bug去进行修复,然后最后再进行修复。

    解析:重点是先修复大bug,再修复小bug。

    28. 软件的完全测试有可能吗?

    答:不可能的。测试工作主要是找出bug,但是不能保证没有bug,因为在测试过程中,完全测试需要的测试数据量特别大,人力物力是要消耗特别多的。所以我们会见到不同的软件有内测,公测,需要很多人来完成这个测试。

    解析:做什么事都没有完美的,测试也是。

    29. 测试过程中发现需求文档不完善怎么处理?

    答:找产品经理及时沟通,要找到不完善的地方,然后准确的提交给产品经理,这样才有说服力。

    解析:核心就是标注出不完善的地方。

    30. 开发修复bug后,如何保证不影响其他功能?

    答:追加场景法设计测试用例,对一些功能进行场景测试,业务测试。

    解析:用多种方法进行追加测试。

    31. 什么时候功能测试?

    答:从测试介入一开始,就可以进行功能测试了,功能测试是软件测试的核心,保证在一段时间内运行所有的功能,并找出bug。

    解析:功能测试是整个软件测试的核心,最早进行介入。

    二. mysql数据库刷题库

    最基本的要求是数据库记录的增删改查(insert、delete、update、select),表结构的增删改查(create、drop、alter、describe)、存储过程、触发器等。

    1. 查询数学成绩与语文成绩高的同学

    select s.student_id,student_name,
    s.course_id,c.course_name,s.score
    from student st
        join score s
      on st.id = s.student_id
        join course_id = c.id
      on s.course_id = c.id
    where c.course_name ="数学"
    

    2. 查询平均成绩大于80分的学生

    select student_name from student
    where id in
    select student_id
    from score
    group by student_id
    having avg(score) > 80
    

    3. 学过体育课程的学生的年龄

    select s.student_name,
    datediff(curdate(),student_birthday)/365
    from course c join grade g
    on c.grade_id =g.id
    join class cl on cl.grade_id =g.id
    join student s on s.class_id =cl.id
    where c. course_name = "体育"
    

    4. 主键、外键作用,索引的优点与不足

  • 表中的唯一标示键
  • 作用:保证实体的完整性,加快数据库的操作速度。
  • 主键的从属,表示两个表之间的联系
  • 作用:作用外键可以建立数据之间的关联,避免冗余
  • 通过创建唯一性的索引,保证表中数据唯一性
  • 加速数据的检索速度
  • 加快表与表之间的连接
  • 使用优化隐藏器,提供系统性能
  • 创建索引需要时间,
  • 索引需要占用物理空间
  • 当对表中数据进行修改时,索引也要动态维护,减低数据的维护速度。
  • 5. 表的创建语法

       create table 表名(
       属性名1 数据类型 [约束条件],
       属性名2 数据类型 [约束条件],
       属性名3 数据类型 [约束条件]
    

    6. 删除表

    drop table 表名;
    

    7. 删除多个表

    drop table 表名 1,表名 2 ...
    

    8. 修改表结构

    8.1. 添加列(属性)

    alter table 表名 add 属性名 数据类型;
    

    8.2. 删除表(属性)

    alter table 表名 drop 属性名;
    

    8.3. 修改属性:数据类型

    alter table 表名 modify 属性名 数据类型;
    

    8.4. 修改字段名

    alter table 表名 change 旧字段名 新字段名 数据类型;
    

    3.3数据库增删改查

    create alter drop desc主要针对表结构来说的
    insert delete update select 主要针对表中的数据来进行操作的
    

    9. DML-INSERT

    9.1.insert 插入 值和列一一对应关系

    格式 1:
    insert into 表名(列名 1,列名 2 ...) values(值 1,值 2 ...);
    格式 2:
    insert into 表名 values(值 1,值 2 ...);
    格式 3:
    insert into 表名 values(值 1,值 2,值 3 ...),(值 1,值 2,值 3 ...);
    

    9.2.删除 delete

    格式 1:代表清空表内的数据
    delete from 表名;
    格式 2:
    有条件的进行删除:delete from 表名 where 条件;
    

    9.3.DML–UPDATE 更新

    update table_name set 字段=值; update table_name set 字段=值,字段=值; update table_name set 字段=值,字段=值 where 条件;

    9.4.select 查询

    9.4.1.基本格式:

    select 列名 from 表名;
    select 列名 1,列名 2,列名 3 ... form 表名;
    

    9.4.2. 使用关键字 distinct 查询

    在查询返回结果中删除重复行
    语法:select distinct 列名称 from 表名称;
    只针对一个列去重
    

    9.4.3.使用别名查询

    根据需要对数据显示的标题进行修改
    格式:select 列名1 '别名',列名2 '别名',... from 表名;
    AS 关键字连接列表达式和指定的别名
    select 列名 as '别名' from 表名;
    

    9.4.4.条件查询

    格式:select 列名 from 表名 where 条件;
    如果在查询过程中,有多个条件,可以使用 and 或 or 进行连接
    and 连接 —》同时满足; or 连接 ------只满足其一
    

    9.4.5.范围搜索范围

    在范围之内
    select 列名 from where 列名 between 开始值 and 结束值
    不在范围之内
    select 列名 from 表名 where 列名 not between 开始值 and 结束值;
    

    9.4.6.列表搜索条件

    in: 只要匹配到括号里任意一个值就会有查询结果;
        格式:select 列名 from 表名 where 列名 in (值 1,值 2,值 3 ...)
    not in:
        格式: select 列名 from 表名 where 列名 not in(1,值 2,值 3);
    

    10. 数据库表连接查询:子查询、内连接、外连接

    10.1. 多表查询

    select [distinct] A.列名,B.列名,C.列名,... from C 
    oin A on A.key=C.FKeyA 
    oin B on B.key=C.FKeyA and B.key=A.key
    [GROUP BY 字段名]
    
    select [distinct] A.列名,B.列名,C.列名,... from 表A,
    where 表A.字段1 = 表B.字段1 and
    表B.字段2 = 表C.字段2 and ....
    [GROUP BY 表名.字段名]
    
    select  A.列名,B.列名,C.列名,... from C 
     join A on A.key=C.FKeyA 
     join B on B.key=C.FKeyA and B.key=A.key
    [ORDER BY 表名.字段名]
    

    10.2. 子查询

    子查询只返回一个值

    子查询首选使用in做匹配

    子查询在其他查询结果的基础上提供了一种有效的方式来表示where字句的条件 。

    子查询的selec查询总是使用圆括号括起来。

    对于子查询来说,外查询条件要什么,子查询就查什么。 一一对应的关系。

    子查询结果分类:

    ①.标量子查询(子查询结果为单个值):

    子查询返回的结果是单个值〔数字、字符串、日期等)

    常用操作符:= <> > >= <= < ②.列子查询(子查询结果为一列):子查询返回的结果是一列

    常用操作符:in、not in、any、some、all

      	select 列表名 from 表名 where 字段名 > all (子查询语句);