以面试形式聊聊:软件测试之功能测试(初级)

自己整理下测试方向的知识

 

1.谈谈你对“测试”的理解?

      软件测试是软件开发过程中必不可少的一部分,它为软件提供质量保证。测试人员不仅要负责软件的需求一致性(软件功能与需求说明书等文档的符合程度),还要关注软件的可靠性、可移植性等等。

      软件测试的过程是严谨、全面而且有条理的。在传统的瀑布式开发模型和敏捷开发模式中,测试的过程也不有所区别的,但最基本的还是:先充分理解文档,熟悉产品;然后制定测试计划、测试范围;编写测试用例、测试脚本,并执行测试用例;最后输出结果也就是测试报告等等。

      软件测试的种类也是多种多样的:单元测试、功能测试、性能测试、安装测试、成品测试等等。


2.上面你提到了“瀑布开发模型”和“敏捷开发模型”,能具体讲一下吗?

瀑布开发模型中,整个开发过程被划分成了6个阶段:需求分析、详细设计、代码实现、测试、集成、维护。每个阶段专注于某种任务。各个阶段的任务质量有了一定的保证,但是单一的流程划分却带来了资源的浪费和失败风险的增加。

敏捷开发避免了瀑布模型的缺点。

敏捷开发的核心为:迭代开发、增量开发。它把整个过程划分成了多个迭代,每个迭代中有主要的设计、开发、测试,并且有相应的产品作为产出。在一定程度上降低了失败的风险。


3.你的实习经历中接触测试工作是什么样的?

在我为期半年的测试实习经历中,主要接触的是web端的功能测试。

流程为:需求确定后,参与需求评审,之后研发和测试分别估期,研发给出开发结束日期,测试给出用例评审日期;制定好测试计划后,开始根据需求说明书编写测试用例,然后发起用例评审会议;等开发完成参加提测会议,提测通过后开始测试;首先进行冒烟测试,执行部分关键用例,冒烟通过后根据计划开始详细测试;测试环境测试通过后,申请更新到模拟环境进行测试,模拟环境测试通过后,联系项目经理确定可以更新到线上环境的时间,然后通知运维人员在对应时间更新到线上环境,开始最后在线上环境的测试。

除了基本的功能测试,还会通过postman进行少量接口测试、jemter进行少量性能测试。


4.测试环境、模拟环境、线上环境都有什么不一样?模拟环境可以去掉吗?

测试环境基本和开发人员的开发环境是一致的,最新的修改都会先更新到测试环境上进行验证。测试环境连接的数据库是测试库,其中的测试数据有时为测试人员mock的几条数据,有时为从线上库拉下来的几条真实数据(脱敏后)。测试环境是bug的第一道“渔网”,60%~70%的bug都会在测试环境被暴露出来,但是测试环境仍有局限性,其数据量较少,分页控件、大数据量的加载效果等等在测试环境都无法测试到。

模拟环境是另一套环境,当测试环境的bug数量收敛到一定程度,就会更新到模拟环境进行测试。模拟环境的数据库有时为真实数据若干条,有时模拟库的数据量能接近线上库的数量,如此模拟环境就更贴近线上环境了,这对我们的测试工作是十分有利的。(数据的支持来自于各客户的意愿)

线上环境则是测试的最后一道环境,在模拟环境测试通过后,才可更新到线上环境,由于线上是有用户在实时使用的,所以更新一定要谨慎。


5.模拟环境和线上环境差不多,能不能把模拟去掉直接上线上?

当线上有用户使用时,完全不行;当线上环境无用户使用时,为了规范,建议不要直接上线上。

因为在模拟环境仍然是一个提bug、改bug、更新、验证bug的循环,在修改bug的过程中,极有可能导致各种错误情况,甚至系统崩溃,这种风险是绝对不可以上升到有用户使用的线上环境的。否则非常影响用户对产品好感度与质量的信任度。


6.有没有遇到过模拟环境没测出,线上出了问题的bug?如何解决?

有时由于模拟环境数据不够丰富,有些功能在测试环境和模拟环境都无法验证,但是该功能的上线日期已经快到,无法丰富数据,只能直接上到线上环境进行初次测试,结果测试未通过导致其他功能也出现崩溃(表格样式错误、文本大量重叠)。

线上出现问题,而且还有用户在使用时,一旦发现问题就通知运维立刻进行紧急回滚。

将下次更新在线上测试的时间改至用户下班不再使用该软件的时候。(医院产品,医生下班后都不怎么用)


7.实习中接触的测试流程是怎样的呢?

(1)通过需求评审获得产品的需求;

(2)分析需求,熟悉产品功能;

(3)制定测试计划,包括测试的范围、各测试阶段的排期、风险;

(4)测试计划评审;

(5)编写测试用例;

(6)测试用例评审;

(7)提测后,开始测试,多轮次迭代;

(8)测试结束后,编写测试报告,包括缺陷分析,风险评估。


8.有编写过测试用例吗?编写测试用例时会用到什么方法?

(1)等价类划分

(2)边界值分析

(3)场景假设

(4)错误推测

(5)因果图法

(6)流程分析


9.测试用例包含哪些信息?

用例编号、测试点、子功能、前置条件、输入数据、操作步骤、预期结果、实际结果、备注等。

实际中测试用例包含的内容是灵活的,必要时可加上优先级、重要等级等信息。


10.功能测试中会用到哪些策略或方法?

 


11.写测试报告的话,会有哪些主要内容?

测试工作基本信息:测试开始及结束时间、测试轮次的日期记录、测试人员;

测试内容:本次测试相关的内容都有什么;

缺陷信息:缺陷数量-等级之间的关系分析(是否p0bug占比较大?),缺陷状态的分析(待解决个数、解决中个数);

风险评估:是否有测试未覆盖的功能、是否有下版本再解决的问题、是否有大数据量操作响应时间长但无法优化的问题、是否存在浏览器不兼容等等。


11.实习期间提交过多少个bug?主要的等级情况是什么样子?

大概提交了近400个bug,印象中js的项目从开始到首次上线期间提交bug数在150左右。

p0的个数在1/10,不会很多,前期冒烟测试问题多的话,会打回不进行测试;主要都是p2、p3的bug,p4的不会提太多,组长有要求要在p0、p1、p2、p3这里面,提的太低会不被重视。


12.有没有让你印象深刻的bug?或者逻辑性很强的bug?

印象很深的有一个源数据相关的bug。

在患者信息搜索页,可用患者姓名、门诊号、住院号、身份证号进行结合搜索,但结果展示区将门诊号和住院号没有分开展示,而是展示在一个字段“住院门诊号”中,如图:

 正常情况:

1.输入姓名张三-》显示张三患者最近一次住院/门诊的信息,若最近一次为门诊,住院门诊号一栏就显示最近次门诊的门诊号;

2.输入张三,指定门诊号为123-》显示张三门诊号为123的就诊信息,点击进入详情页高亮该次就诊;

错误情况:

1.输入张三,指定住院号为123(无住院号为123,123为某次门诊号)-》搜索不到结果;

bug:

输入李四,指定门诊号为456-》结果区里的住院门诊号显示为222,虽然命中了,但是222不是我指定的门诊号456.

经过个开发人员的排查,发现该患者在某次门诊就诊数据中,存在两个门诊号字段,值分别为222和456,虽然均为一次门诊,但是存在了两个门诊号的值,导致拿456搜索可以命中,但是显示时却随机显示,有时显示222有时显示456.

解决:

经沟通,确定该bug要从数据上进行修改,数据中一次就诊中门诊号/住院号只能有一个字段。


13.实习中主要负责测试什么样的业务?

 


7.测试能否达到“完全”呢?不能完全覆盖时如何保证质量?

由于受时间、人力等资源的限制,大多无法进行完全的测试。那么要想保证质量则要确定好测试的关注点,清楚测试范围内各功能的优先级与用户使用频率,适当配合风险分析来降低产品在用户手中出现bug的概率。


8.谈谈对白盒测试与黑盒测试的理解吧?

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值