• 软件测试基础


    在这里插入图片描述

    请添加图片描述

    ⭐️前言⭐️

    🍉博客主页: 🍁【如风暖阳】🍁
    🍉精品Java专栏【JavaSE】【备战蓝桥】、【JavaEE初阶】【MySQL】【数据结构】
    🍉欢迎点赞 👍 收藏留言评论 📝私信必回哟😁

    🍉本文由 【如风暖阳】 原创,首发于 CSDN🙉

    🍉博主将持续更新学习记录收获,友友们有任何问题可以在评论区留言

    🍉博客中涉及源码及博主日常练习代码均已上传码云(gitee)GitHub


    请添加图片描述

    请添加图片描述

    🍅1.软件测试的生命周期

    在上篇文章【软件测试基本概念4】中,我们认识到了软件的生命周期,即需求分析、计划、设计、编码、测试、运行维护,因为软件测试需要贯穿软件的整个生命周期,所以软件测试也有与软件生命周期对应的周期。

    软件测试的生命周期如下图所示:
    在这里插入图片描述
    测试人员需要在上图中所展示的各个阶段做以下的事情:

    • 需求分析阶段:
      站在用户的角度,查看需求逻辑是否正确,是否符合用户的需求和行为习惯。
      还需要站在开发人员的角度,思考需求是否可以实现,或者实现起来难度大小。

    • 测试计划阶段:
      制定测试计划(包括但不限于测试的工时,人力的安排)

    • 测试设计、测试开发阶段
      设计测试用例,经验丰富的白盒测试人员可以开始单元测试

    • 测试执行阶段:
      参考测试用例来执行测试

    • 测试评估阶段
      测试人员需要记录测试,做好缺陷管理,然后进行测试的评估

    🍅2.再谈bug

    2.1 如何描述一个bug?

    提bug并不是简简单单的指出错误,需要有完整的体系来指出一个bug,通常描述一个bug应该具备以下内容:

    • 发现bug的版本
    • 发现bug的环境
    • 发现bug的步骤
    • 期望的结果
    • 实际的结果
    • 其他(bug类型、bug等级)

    下边我们来具体提出一个bug:

    在这里插入图片描述

    标题:微软浏览器打开首页后,在缩放为110%时,第一个banner页上面的二维码被登录注册控件遮蔽住,导致无法扫描

    发现bug的版本:Microsoft Edge版本 107.0.1418.56 (正式版本) (64 位)

    发现bug的环境:win10 Microsoft Edge

    发现bug的步骤:1.打开Edge浏览器,访问首页链接https://www.101eduyun.com/sunrise/login/login.do
    2.调整页面缩放

    期望的结果:首页的第一个banner上的二维码清晰可见,可以通过手机扫描

    实际的结果:首页的第一个banner上的二维码被登录注册控件遮蔽住了,导致手机扫描二维码失败。

    其他:(bug类型:前端/后端问题,bug等级:次要…)

    2.2 bug的等级

    bug的定义每个公司都不一致,在定义级别执行前都需要查看公司规范。

    以下为样例:

    1.崩溃
    阻碍开发或测试工作的问题;造成系统崩溃、死机、死循环,导致数据库数据丢失,与数据库连接错误,主要功能丧失,基本模块缺失等问题。

    这种级别的bug很少见,基本不可见

    2.严重
    系统主要功能部分丧失、数据库保存调用错误、用户数据丢失,一级功能菜单不能使用但是不影响其他功能的测试。

    这种级别的bug也比较少见

    3.一般
    功能没有完全实现但是不影响使用,功能菜单存在缺陷但不会影响系统稳定性。

    4.次要
    主要就是一些优化建议类的问题。

    一般和次要的bug更为常见

    2.3 bug的生命周期

    以下是bug的生命周期图
    在这里插入图片描述

    • New:新发现的bug,未经评审决定是否指派给开发人员进行修改。
    • Open:确认是bug,并且认为需要进行修改,指派给相应的开发人员。
    • Fixed:开发人员进行修改后标识成修改状态,有待测试人员的回归测试验证。
    • Rejected:如果认为不是bug,则拒绝修改
    • Delay:如果认为暂时不需要修改或者暂时不能修改,则延后修改。
    • Closed:修改状态的bug经测试人员的回归测试验证通过,则关闭bug。
    • Reopen:如果经验证bug仍存在,则需要重新打开bug,开发人员重新修改。

    🍅3.常见面试题

    3.1 软件测试和软件开发的区别

    • 软件测试的工作主要是保障产品质量
    • 软件开发的工作主要是编写业务代码

    软件测试还分为纯测试和测试开发两个方向,两个方向的主要工作都是保障产品质量,但测试开发方向还需要开发一些测试效能的工具,来提升测试效率。

    3.2 走测试岗位为什么还需要学习开发的知识?

    测试人员也需要进行代码的编写,如自动化测试、性能测试、效率工具等等。测试人员能够看懂代码,了解框架、代码中的数据走向,才能够更好的从代码层去发现问题。

    学好开发知识能够提高测试质量。

    3.3 为什么不走开发岗位而走测试岗位?

    从以下三方面来展开:
    1)个人兴趣爱好
    2)对测试的理解
    3)为什么走测试还需要学习开发知识

    3.4 测试人员需要具备哪些素质?

    综合能力

    • 表达能力 :不管什么方向,都应该具备良好的表达能力(也是情商的体现)
    • 文字能力:测试人员需要编写测试用例(测什么、怎么测);测试人员需要提bug(描述一个bug);写测试报告
    • 开发能力:开发能力掌握的越好,越能够更好的协助提高测试质量
    • 快速学习的能力:更快的上手干活
    • 探索性思维、兴趣、责任感和压力

    优秀的测试用例设计能力
    测试用例是测试人员执行测试的工作的重要依据。

    掌握自动化测试技术
    自动化测试是中大厂企业必不可少的技术事务之一。

    3.5 和开发产生争执怎么办?

    这个问题是经常会出现的面试题。

    1.应该具有批判性思维,多反思自己是不是bug描述的不清楚(无效的bug)

    2.bug等级一定要有理有据(提出了一个bug是严重级别,开发不认可)

    3.合理友好的沟通,站在用户的角度反问:如果你是用户,你能接受这样吗?
    (开发对你说bug可不可以不改,小问题)

    4.不仅仅能够提出问题,最好也能够给出解决方案。

    5.组织bug评审
    邀请代表参加bug评审:产品代表、开发代表、测试代表,进行以下工作:
    1)如何解决bug?
    2)如何预防类似的bug?

    🍅4.测试分类

    4.1 按照测试对象划分

    在这里插入图片描述

    性能测试以前的测试都有讲述过,下边主要介绍博主博客中并未提及的其他按照测试对象划分进行的测试方法。

    4.1.1 可靠性测试

    可靠性即可用性,是指系统正常运行的能力或者程度,一般用正常向用户提供软件服务的时间占总时间的百分比表示。

    可靠性=正常运行时间/(正常运行时间+非正常运行时间)*100%

    如果可用性达到99.99%,对于一个全年不间断(7*24的方式)运行的系统,意味着全年(252600min)不能正常工作的时间只有52min,不到一个小时。
    如果可用性达到99.999%,意味着全年不能正常工作的时间只有5min。

    不同的应用系统,可用性的要求是不一样的,非实时性的信息系统或一般网站要求都很低,99%和99.5%就可以了,但是军事系统,要求则很高。

    4.1.2 容错性测试

    容错性测试是指系统能够处理异常,用户的错误操作而不至于系统崩溃,从而能提高系统的可用性。

    4.1.3 安装卸载测试

    应用的安装和卸载在任何一款APP中都属于最基本功能。一旦出错,就属于优先级为紧要缺陷。

    开发产物不应该遗漏安装和卸载的测试。

    4.1.4 内存泄漏测试

    从用户使用的角度来看,内存泄露本身不会造成什么危害,一般用户可能根本不会感觉到内存泄露的存在。
    但是内存泄露是会累积的,只要执行的次数足够多,最终会耗尽所有可用内存,使软件的执行越来越慢,最后停止响应。

    造成内存泄漏的原因有很多,最常见的有以下几种:

    • 分配完内存之后忘记回收
    • 程序写法有问题,造成没办法回收(如死循环造成无法执行到回收步骤)
    • 某些API函数的使用不正确,造成内存泄漏

    内存泄漏的检测方法:

    • 人工静态法:代码走读,人工查找未被回收的内存
    • 自动工具法:借助相应测试内存泄漏的工具,记录每次内存分配,清楚告诉用户内存是如何泄漏的。

    4.1.5 弱网测试

    所谓弱网测试指在信号网络带宽比较差的情况下来模拟真实用户APP端的测试,该测试的实现需要借助Fiddler工具来模拟实现弱网环境。

    实现步骤如下:

    1.打开弱网设置选项
    在这里插入图片描述
    2.打开设置弱网的脚本

    在这里插入图片描述
    在这里插入图片描述

    3.计算2G和3G的上下行速率

    1KB = 8kb

    2G网络:

    上行:2.7K
    下行:9.6K
    上行:[1/(2.7/8)]X1000=2962ms
    下行:[1/(9.6/8)]X1000=833ms

    模拟2G,修改为如下图所示:

    在这里插入图片描述

    3G网络:

    电信:上行:1.8M 1.8x1024
    下行:3.1M 3.1x1024
    上行:{1/[(1.8x1024)/8]}x1000=4.34ms
    下行:{1/[(3.1x1024)/8]}x1000=2.52ms

    移动:上行:384k
    下行:2.8M
    上行:[1/(384/8)]x1000=20.8ms
    下行:{1/[(2.8x1024)/8]}x1000=2.79ms

    联通:上行:5.76M
    下行:7.2M
    上行:{1/[(5.76x1024)/8]}x1000=1.35ms
    下行:{1/[(7.2x1024)/8]}x1000=1ms

    相应修改上方步骤二对应的数值就可以模拟2G和3G进行弱网测试了!

    4.打开菜单栏【Rules】-【Performance】勾选【Simulate Modem Speeds】后生效,如下图:

    在这里插入图片描述

    4.2 按照是否查看代码划分

    在这里插入图片描述
    面试题:

    为什么不能让灰盒测试取代黑盒测试和白盒测试?
    灰盒测试没有白盒测试那么详尽,而且灰盒测试没有黑盒测试功能覆盖的广度大,所以灰盒测试不能取代黑白盒测试。

    哪种测试方法用的多?
    黑盒测试和白盒测试两种测试方法,测试人员都会使用到,在工作中根据具体情况来结合白盒测试和黑盒测试。通常情况下,对于测试人员来说,使用黑盒测试相对要多一些。

    4.3 按照开发阶段划分

    在这里插入图片描述


    ⭐️最后的话⭐️
    总结不易,希望uu们不要吝啬你们的👍哟(^U^)ノ~YO!!如有问题,欢迎评论区批评指正😁

    请添加图片描述

  • 相关阅读:
    如何保护数据和恢复感染[thekeyishere@cock.li].Elbie勒索病毒损失
    四维轻云地理空间数据协作管理平台的使用流程介绍
    抖音实战~取关博主
    JVM之VisualVM工具的使用
    CTF-栈溢出-基本ROP-【ret2shellcode】
    MySQL之InnoDB引擎(六)
    利用爬虫技术自动化采集汽车之家的车型参数数据
    git奇怪报错
    number
    【JavaEE--复习】二、整合数据层MyBatis
  • 原文地址:https://blog.csdn.net/qq_60856948/article/details/128105460