目录

1、什么是测试覆盖率吗?

2、提交的缺陷包含什么内容?

3、你们的测试流程是怎样的?

4、你写过测试计划么,包含什么内容

5、如何设计登录模块的测试用例?

6、总结

7、重点:配套学习资料和视频教学


1、什么是测试覆盖率吗?

测试覆盖率通常被用来衡量测试的充分性和完整性,从广义的角度来讲,测试覆盖率主要分为两大类,一类是面向项目的需求覆盖率,另一类是更偏向技术的代码覆盖率。

  • 需求覆盖率是指测试对需求的覆盖程度,通常的做法是将每一条分解后的软件需求和对应的测试建立一对多的映射关系,最终目标是保证测试可以覆盖每个需求,以保证软件产品的质量。需求覆盖率统计方法属于传统瀑布模型下的软件工程实践。互联网测试项目中很少直接基于需求来衡量测试覆盖率,而是将软件需求转换成测试需求,然后基于测试需求再来设计测试点。

  • 代码覆盖率是指,至少被执行了一次的条目数占整个条目数的百分比。

代码覆盖率常用的指标

  • 行覆盖率又称为语句覆盖率,指已经被执行到的语句占总可执行语句(不包含类似 C++ 的头文件声明、代码注释、空行等等)的百分比。这是最常用也是要求最低的覆盖率指标。实际项目中通常会结合判定覆盖率或者条件覆盖率一起使用。

  • 判定覆盖又称分支覆盖,用以度量程序中每一个判定的分支是否都被测试到了,即代码中每个判断的取真分支和取假分支是否各被覆盖至少各一次。比如,对于 if(a>0 && b>0),就要求覆盖“a>0 && b>0”为 TURE 和 FALSE 各一次。

  • 条件覆盖是指,判定中的每个条件的可能取值至少满足一次,度量判定中的每个条件的结果 TRUE 和 FALSE 是否都被测试到了。比如,对于 if(a>0 && b>0),就要求“a>0”取 TRUE 和 FALSE 各一次,同时要求“b>0”取 TRUE 和 FALSE 各一次。

代码覆盖率的价值

统计代码覆盖率的根本目的是找出潜在的遗漏测试用例,并有针对性的进行补充,同时还可以识别出代码中那些由于需求变更等原因造成的不可达的废弃代码。

代码覆盖率的局限

即使你所设计的测试用例已经达到 100% 的代码覆盖率,软件产品的质量也做不到万无一失。其根本原因在于代码覆盖率的计算是基于现有代码的,并不能发现那些“未考虑某些输入”以及“未处理某些情况”形成的缺陷。

总结来讲,高的代码覆盖率不一定能保证软件的质量,但是低的代码覆盖率一定不能能保证软件的质量。

2、提交的缺陷包含什么内容?

相同问题:如何提一个高质量的 bug 单?

  • 缺陷标题

首先,对“什么问题”的描述不仅要做到清晰简洁,最关键是要足够具体,切忌不能采用过于笼统的描述。描述“什么问题”的同时还必须清楚地表述发生问题时的上下文,也就是问题出现的场景。

其次,标题应该尽可能描述问题本质,而避免只停留在问题的表面。

最后,缺陷标题不易过长,对缺陷更详细的描述应该放在“缺陷概述”里。

  • 缺陷概述

缺陷概述通常会提供更多概括性的缺陷本质与现象的描述,是缺陷标题的细化。这部分内容通常是开发工程师打开缺陷报告后最先关注的内容,所以用清晰简短的语句将问题的本质描述清楚是关键。

  • 缺陷影响

缺陷影响描述的是,缺陷引起的问题对用户或者对业务的影响范围以及严重程度。

缺陷影响决定了缺陷的优先级(Priority)和严重程度(Severity),开发经理会以此为依据来决定修复该缺陷的优先级;而产品经理会以此为依据来衡量缺陷的严重程度,并决定是否要等该缺陷被修复后才能发布产品。测试工程师准确描述缺陷影响的前提是,必须对软件的应用场景以及需求有深入的理解,这也是对测试工程师业务基本功的考验。

  • 环境配置

环境配置用以详细描述测试环境的配置细节,为缺陷的重现提供必要的环境信息。比如,操作系统的类型与版本、被测软件版本、浏览器的种类和版本、被测软件的配置信息、集群的配置参数、中间件的版本信息等等。

需要注意的是,环境配置的内容通常是按需描述,也就是说通常只描述那些重现缺陷的环境敏感信息。

  • 前置条件

前置条件是指测试步骤开始前系统应该处在的状态,其目的是减少缺陷重现步骤的描述。合理地使用前置条件可以在描述缺陷重现步骤时排除不必要的干扰,使其更有针对性。

  • 缺陷重现步骤

缺陷重现步骤是整个缺陷报告中最核心的内容,其目的在于用简洁的语言向开发工程师展示缺陷重现的具体操作步骤。

这里需要注意的是,操作步骤通常是从用户角度出发来描述的,每个步骤都应该是可操作并且是连贯的,所以往往会采用步骤列表的表现形式。

通常测试工程师在写缺陷重现步骤前,需要反复执行这些步骤 3 次以上:
一是,确保缺陷的可重现性;
二是,找到最短的重现路径,过滤掉那些非必要的步骤,避免产生不必要的干扰。

对于缺陷重现步骤的描述应该尽量避免以下 3 个常见问题:
笼统的描述,缺乏可操作的具体步骤。
出现与缺陷重现不相关的步骤。
缺乏对测试数据的相关描述。

  • 期望结果和实际结果

当你描述期望结果时,需要说明应该发生什么,而不是什么不应该发生;而描述实际结果时,你应该说明发生了什么,而不是什么没有发生。

  • 优先级(Priority)和严重程度(Severity)

严重程度是缺陷本身的属性,通常确定后就不再变化,而优先级是缺陷的工程属性,会随着项目进度、解决缺陷的成本等因素而变动。

缺陷的优先级和严重程度又有什么关系呢?

缺陷越严重,优先级就越高;
缺陷影响的范围越大,优先级也会越高;
有些缺陷虽然从用户影响角度来说不算严重,但是会妨碍测试或者是自动化测试的执行,这类缺陷属于典型的严重程度低,但是优先级高;
有些缺陷虽然严重程度比较高,但是考虑到修复成本以及技术难度,也会出现优先级较低的情况。

  • 测试用例

  • 变通方案(Workaround)

变通方案是提供一种临时绕开当前缺陷而不影响产品功能的方式,通常由测试工程师或者开发工程师完成,或者他们一同决定。

变通方案的有无以及实施的难易程度,是决定缺陷优先级和严重程度的重要依据。如果某个严重的缺陷没有任何可行的变通方案,那么不管修复缺陷代价有多大,优先级一定会是最高的,但是如果该缺陷存在比较简单的变通方案,那么优先级就不一定会是最高的了。

  • 根原因分析(Root Cause Analysis)

根原因分析就是我们平时常说的 RCA,如果你能在发现缺陷的同时,定位出问题的根本原因,清楚地描述缺陷产生的原因并反馈给开发工程师,那么开发工程师修复缺陷的效率就会大幅提升,而且你的技术影响力也会被开发认可。

可以做好根原因分析的测试工程师,通常都具有开发背景,或者至少有较好的代码阅读以及代码调试的能力。

  • 附件(Attachment)

件通常是为缺陷的存在提供必要的证据支持,常见的附件有界面截图、测试用例日志、服务器端日志、GUI 测试的执行视频等。

3、你们的测试流程是怎样的?

OBS

  • 需求评审
  1. 项目组组长串讲该月需求,大概说下设计想法,把一些开发任务进行分解。
  2. 成员记录需求,联系需求方,组长确认,思考如何实现。
  3. 开发成员对自己承担的需求进行反串讲,讲述自己的理解和实现思路。
  4. 测试记录测试需求,对不明白的地方进行提问。
  • 制定测试计划
  1. 确定测试范围和风险,根据测试的风险级别确定测试的重点和优先级。
  2. 确定测试目的
  3. 确定测试方法
  4. 确定测试资源
  5. 计划测试进度
  6. 确定测试入口和出口准则
  • 测试分析和设计
  1. 根据测试需求整理测试点
  2. 申请相关环境的权限
  3. 用例设计,用例内部评审,用例补充修改
  • 测试实现和执行阶段
  1. 搭建和维护测试环境,保证环境可用
  2. 满足测试入口条件后(比如部署成功),执行测试用例,记录测试日志,避免重复执行,如果出现影响测试执行的事件要及时报风险,如果能自己处理则立即处理,如不能处理则上升。
  3. 测试开始编写测试计划。
  4. 测试运行梳理测试点,运用合适的方法设计和编写用例。
  5. 团队内部对测试用例进行评审,提出意见,对用例进行维护和修改。
  6. 测试搭建测试环境
  7. 执行测试用例
  8. 提交缺陷报告并跟踪
  9. 回归测试
  10. 补充和优化用例
  11. 编写测试报告

数据库

  1. 开发串讲他们要做的功能,我们做记录提问并搞清楚需求
  2. 测试点输出,测试用例评审
  3. 设计用例自动生成工具和用例执行工具
  4. 生成测试用例,提交到代码库
  5. 搭建流水线 ( ** )
  6. 每次合并请求时新建 docker,在 docker 中使用用例执行工具执行冒烟用例 (**)
  7. 代码合并后,部署分布式环境,用例执行工具执行全量用例 (**)
  8. 看护流水线,提交缺陷报告并根据跟踪
  9. 回归测试
  10. 补充和优化用例

4、你写过测试计划么,包含什么内容

写过一次

  • 测试范围

    测试范围中需要明确“测什么”和“不测什么”。

  • 测试策略

    测试策略简单来讲就是需要明确“先测什么后测什么”和“如何来测”这两个问题。测试策略会要求我们明确测试的重点,以及各项测试的先后顺序。

    测试策略还需要说明,采用什么样的测试类型和测试方法。

    第一,功能测试

    对于功能测试,应该根据测试需求分析的思维导图来设计测试用例。主线业务的功能测试由于经常需要执行回归测试,所以需要考虑实施自动化测试,并且根据项目技术栈和测试团队成员的习惯与能力来选择合适的自动化测试框架。这里需要注意的是,通常应该先实现主干业务流程的测试自动化。

    实际操作时,你通常需要先列出主要的功能测试点,并决定哪些测试点适合采用自动化测试,并且决定具体使用什么样的框架和技术。对于需要手工测试的测试点,你要决定采用什么类型的测试用例设计方法,以及如何准备相关的测试数据。另外,你还要评估被测软件的可测试性,如果有可测试性的问题,需要提前考虑切实可行的变通方案,甚至要求开发人员提供可测试性的接口。

    第二,兼容性测试

    对于兼容性测试来说,Web 测试需要确定覆盖的浏览器类型和版本,移动设备测试需要确定覆盖的设备类型和具体 iOS/Android 的版本等

    兼容性测试的实施,往往是在功能测试的后期,也就是说需要等功能基本都稳定了,才会开始兼容性测试。当然也有特例,比如,对于前端引入了新的前端框架或者组件库,往往就会先在前期做兼容性评估,以确保不会引入后期无法解决的兼容性问题。

    兼容性测试用例的选取,往往来自于已经实现的自动化测试用例。道理很简单,因为兼容性测试往往要覆盖最常用的业务场景,而这些最常用的业务场景通常也是首批实现自动化测试的目标。

    所以,我们的 GUI 自动化框架,就需要能够支持同一套测试脚本在不做修改的前提下,运行于不同的浏览器。

    第三,性能测试

    对于性能测试,需要在明确了性能需求(并发用户数、响应时间、事务吞吐量等)的前提下,结合被测系统的特点,设计性能测试场景并确定性能测试框架。

    ...

  • 测试资源

    测试资源通常包括测试人员和测试环境,这两类资源都是有限的。测试计划的目的就是,保证在有限资源下的产出最大化。所以,测试资源就是需要明确“谁来测”和“在哪里测”这两个问题。

    测试人员是最重要的,直接关系到整个测试项目的成败和效率。测试人员的资源通常有两个维度:一是,测试工程师的数量;二是,测试工程师的个人经验和能力。

    相对于测试人员,测试环境就比较好理解了。不同的项目,可能会使用共享的测试环境,也可能使用专用的测试环境,甚至还会直接使用生产环境。

  • 测试进度

    在明确了测试范围、测试策略和测试资源之后,你就要考虑具体的测试进度了。测试进度主要描述各类测试的开始时间,所需工作量,预计完成时间,并以此为依据来建议最终产品的上线发布时间。

  • 测试风险预估

    俗话说,计划赶不上变化,对于测试也是一样的道理,很少有整个测试过程是完全按照原本测试计划执行的。通常需求变更、开发延期、发现重大缺陷和人员变动是引入项目测试风险的主要原因。

    对于需求变更,比如增加需求、删减需求、修改需求等,一定要重新进行测试需求分析,确定变更后的测试范围和资源评估,并与项目经理和产品经理及时沟通因此引起的测试进度变化。

    另外,随着测试的开展,你可能会发现前期对于测试工作量的预估不够准确,也可能发现需要增加更多的测试类型,也可能发现因为要修改测试架构的严重缺陷而导致很多的测试需要全回归,还有可能出现开发递交测试版本延期,或者人员变动等各种情况。

    所以,在制定测试计划时,你就要预估整个测试过程中可能存在的潜在风险,以及当这些风险发生时的应对策略。 那么,在真的遇到类似问题时,你才可以做到心中不慌,有条不紊地应对这些挑战。

5、如何设计登录模块的测试用例?

  • 功能

    输入已注册的用户名和正确的密码,验证是否登录成功;
    输入已注册的用户名和不正确的密码,验证是否登录失败,并且提示信息正确;
    输入未注册的用户名和任意密码,验证是否登录失败,并且提示信息正确;
    用户名和密码两者都为空,验证是否登录失败,并且提示信息正确;
    用户名和密码两者之一为空,验证是否登录失败,并且提示信息正确;
    如果登录功能启用了验证码功能,在用户名和密码正确的前提下,输入正确的验证码,验证是否登录成功;
    如果登录功能启用了验证码功能,在用户名和密码正确的前提下,输入错误的验证码,验证是否登录失败,并且提示信息正确。
    用户名和密码是否大小写敏感;
    页面上的密码框是否加密显示;
    后台系统创建的用户第一次登录成功时,是否提示修改密码;
    忘记用户名和忘记密码的功能是否可用;
    前端页面是否根据设计要求限制用户名和密码长度;
    如果登录功能需要验证码,点击验证码图片是否可以更换验证码,更换后的验证码是否可用;
    刷新页面是否会刷新验证码;
    如果验证码具有时效性,需要分别验证时效内和时效外验证码的有效性;
    用户登录成功但是会话超时后,继续操作是否会重定向到用户登录界面;
    不同级别的用户,比如管理员用户和普通用户,登录系统后的权限是否正确;
    页面默认焦点是否定位在用户名的输入框中;
    快捷键 Tab 和 Enter 等,是否可以正常使用

  • 安全

    用户密码后台存储是否加密;
    用户密码在网络传输过程中是否加密;
    密码是否具有有效期,密码有效期到期后,是否提示需要修改密码;
    不登录的情况下,在浏览器中直接输入登录后的 URL 地址,验证是否会重新定向到用户登录界面;
    密码输入框是否不支持复制和粘贴;
    密码输入框内输入的密码是否都可以在页面源码模式下被查看;
    用户名和密码的输入框中分别输入典型的“SQL 注入攻击”字符串,验证系统的返回页面;
    用户名和密码的输入框中分别输入典型的“XSS 跨站脚本攻击”字符串,验证系统行为是否被篡改;
    连续多次登录失败情况下,系统是否会阻止后续的尝试以应对暴力破解;
    同一用户在同一终端的多种浏览器上登录,验证登录功能的互斥性是否符合设计预期;
    同一用户先后在多台终端的浏览器上登录,验证登录是否具有互斥性

  • 性能

    单用户登录的响应时间是否小于 3 秒;
    单用户登录时,后台请求数量是否过多;
    高并发场景下用户登录的响应时间是否小于 5 秒;
    高并发场景下服务端的监控指标是否符合预期;
    高集合点并发场景下,是否存在资源死锁和不合理的资源等待;
    长时间大量用户连续登录和登出,服务器端是否存在内存泄漏。

  • 兼容性

    不同浏览器下,验证登录页面的显示以及功能正确性;
    相同浏览器的不同版本下,验证登录页面的显示以及功能正确性;
    不同移动设备终端的不同浏览器下,验证登录页面的显示以及功能正确性;
    不同分辨率的界面下,验证登录页面的显示以及功能正确性。

6、总结

感谢每一个认真阅读我文章的人!!!

如果下面这些资料用得到的话可以直接拿走:

1、自学开发或者测试必备的完整项目源码与环境

2、测试工作中所有模板(测试计划、测试用例、测试报告等)

3、软件测试经典面试题

4、Python/Java自动化测试实战.pdf

5、Jmeter/postman接口测试全套视频获取

6、Python学习路线图

7、重点:配套学习资料和视频教学

那么在这里我也精心准备了上述大纲的详细资料包含:电子书,简历模块,各种工作模板,面试宝典,自学项目等。如下,需要的评论区留言或者私信我

我敢打赌你一定不知道的软件测试基础知识整理相关推荐

  1. 软件测试基础知识整理,都给你准备好了

    目录 1.软件测试基本概念 2.软件测试分类 3.测试工程师 4.软件测试工具简介 1.软件测试基本概念 1.软件=程序+文档,软件测试=程序测试+文档测试. "程序"是指能够实现 ...

  2. 软件测试基础知识整理(详细版)收藏这篇足矣

    一.认识软件测试 1.1 什么是软件测试? 使用技术手段验证软件是否满足需求 1.2 软件测试的目的 目的:用较少的人力.物力.和财力,找到软件中存在的问题并修复,降低商业风险 二.常见的测试分类 2 ...

  3. 全网最全的软件测试基础知识整理(新手入门必学)

    目录 1.什么是软件 2.软件工程的内容 3.软件的生命周期 4.什么是软件测试 5.软件测试的方法 6.软件测试阶段有哪些任务 7.测试的原则 8.软件测试工作流程图 9.自动化测试 10.自动化测 ...

  4. 软件测试基础知识整理(适用于面试)

    1.软件测试的原则 一:测试标准建立在用户需求之上 二:当质量和时间冲突时,质量放在首位 三:需求分析阶段就应该定义好产品的质量 四:测试用例不是写出来的,是设计出来的 五:测试计划是测试工作的前提 ...

  5. ES6 你可能不知道的事 – 基础篇

    ES6 你可能不知道的事 – 基础篇 转载 作者:淘宝前端团队(FED)- 化辰 链接:taobaofed.org/blog/2016/07/22/es6-basics/ 序 ES6,或许应该叫 ES ...

  6. 软件工程与软件测试基础知识_这是我在软件工程工作九个月中学到的知识

    软件工程与软件测试基础知识 I've been working for about nine months at Dexter as a software developer. I wrote a b ...

  7. 初学者必须要知道的FPGA基础知识

    初学者必须要知道的FPGA基础知识 一.FPGA是什么? 在<FPGA至简设计原理与应用>一书里是这样描述的:『FPGA的全称为Field-Programmable Gate Array, ...

  8. 软件测试基础知识大全【乐搏TestPRO】

    在很多人的认知里,软件测试入门门槛低,简单易学.确实,软件测试基础知识更偏向于理论方法的学习,及部分常用工具的学习. 接下来的70个基础知识讲解,弄明白后这些问题后,软件测试入门也基本掌握了.本篇共分 ...

  9. 软件测试基础知识面试题目(25题英文题目)

    软件测试基础知识面试题目(25题英文题目) 1. Verification is:  a. Checking that we are building the right system b. Chec ...

最新文章

  1. STM32使用GPIO_WriteBit()函数使LED灯闪烁
  2. 看屁股,你是一头大象吧
  3. SASE — Overview
  4. 【原创】开源Math.NET基础数学类库使用(06)直接求解线性方程组
  5. 被上海爱立信录取,GL
  6. iOS底层探索(二) - 写给小白看的Clang编译过程原理
  7. 哪一类人用苹果手机最多?
  8. SLAM 无人车融合 IMU 前与 融合 IMU 后的实测效果演示
  9. java怎么看内存值_【java】内存分析
  10. 软件设计原则(一) 单一职责原则
  11. 调查问卷的JSON模板设计与分数计算的Java实现
  12. 清除Svchost.exe
  13. SpringSecurity认证基本原理与认证2种方式
  14. 波士顿学院计算机,波士顿学院(Boston College)_快飞留学
  15. jquery toggle_响应式WordPress主题教程–第6部分– jQuery Toggle菜单
  16. 在一个字符串中搜索某个特定的字符值
  17. Java中四种XML解析技术之不完全测试
  18. CVPR2019目标检测方法进展
  19. linux服务器离线安装autoconf
  20. Stack Overflow使用总结

热门文章

  1. 2021年金属非金属矿山支柱考试题库及金属非金属矿山支柱找解析
  2. ImportError:attempted relative import with no known parent package
  3. linux r7 4800u,r7 4800u和r7 4800h差距大吗?下面解读可以帮您
  4. 返回一个月中最大的天数(适用于2000年到2099年之间)
  5. Android 竖直滚动广告条、上下滚动广告条,View滚动广告条;
  6. Vue解决warning Emitted value instead of an instance of Error
  7. 常用的用户认证方式详解JWT
  8. igraph 利用节点列表输出子图并存储
  9. alios thing 信号量_AliOS Things内核API
  10. Exynos 4412处理器IIC总线控制器(包括协议)