软件测试基础知识

软件测试官⽅的定义

  描述⼀种⽤来促进鉴定软件的正确性、完整性、安全性和质量的过程。 换句话说,软件测 试是⼀种实际输出与预期输出之间的审核或者⽐较 过程 。

    正确性 1、一个软件的正常功能 2、一个软件的异常功能,也就是说的容错性

    完整性 1、需要验证(测试/考虑)到一个软件使用的各个方面(维度),它的标准就是考虑需要周全 2、既然是完整性那么也就需要考虑一个软件的正常的使用和异常情况下的容错的能力 3、                        本地化也是需要考虑到的(国际化)

    本地化:产品是国际化的,那么本地化指的是产品全部使用一种语言(韩文/日文/英语),这个时候你依然具备测试的能力。

    安全性: 1、产品在非功能使用情况下是否存在数据泄露,以及其他的隐患情条件 2、需要考虑的是通过渗透测试的技术来验证产品是否存在支付,数据,以及其他的安全审计

     质量

测试需要具备的综合素质

  1、对内能够很好的和各个不同的角色沟通来解决需求以及逻辑问题(产品经理/开发/项目经理,以及公司其他职能团队的人)

  2、对外能够很好的解答客户的问题并且协助客户解决问题 

  3、能够通过技术的手段来提升测试的效率

当我们第一次参加工作需要注意的事情

  每日例会:

    1、昨天干了什么?

    2、今天准备干什么?

    3、存在什么问题需要解决的

  第一天上班该干什么

    1、熟悉环境,熟悉身边的人,梳理清楚谁是你的负责人。

     2、安装电脑的常用软件(java环境,Python环境,postman,jmeter,offer办公软件,思维导图软件,foxmail,git)

     3、看需求文档

需求文档的核心

  1、产品是给谁服务的?

  2、产品的核心流程是什么? 核心流程最好使用思维导图的模式把流程梳理出来

  3、如果产品里面有专业术语(咨询产品或者是自己百度搜索)

  4、梳理出产品哪些逻辑不是很清楚,梳理出来后,专门约产品经理或者是其他测试,让对方协助我们来讲解下这部分

为什么要需求分析

  软件测试需求是设计测试⽤例的依据。 有助于保证测试的质量和进度 软件测试需求是衡量测试覆盖率的重要指标

软件测试需求分析步骤

  列出需求⽂档中的具有可测性的原始需求 对每⼀条需求进⾏细化分解,形成可测试的分层描述的测试点 对形成的每⼀个测试点,从软件产品的质量需求来分析,确定测试执⾏时需要实施的测试类型。 建⽴测试需求跟踪矩阵,对测试需求进⾏管理

测试点分析

  通过分析需求描述中的输⼊、输出、处理、限制、约束等,给出对应的验证内容(功能测试) 各个模块之间的业务顺序,和各个功能模块之间传递的信息和数据,对存在给你交互的功能项,给出对应的验 证内容(功能业务测试) 考虑到需要的完整性,要充分覆盖软件需求的各种特征,包含隐性需求的验证,⽐如界⾯的验证,异常情况 (界⾯、易⽤性、兼容性、安全性、性能)

测试和开发对需求产生不同意见时

  头脑风暴

测试⽤例步骤

  拿到需求文档 -> 分析需求(画思维导图) -> 编写⽤例 -> 划分⽤例优先级

测试用例编写特征

编写测试用例的三种方式:

  1、思维导图 结构化看起来非常的好,但是不够细

  2、使用excel,特点是写起来非常浪费时间,但是非常细

  3、checklist 只考虑被测对象的大概的点

测试⽤例组成元素

⽤例ID:

⽤例名称;

测试⽬的;

测试级别;

参考信息;

测试环境;

前提条件;

测试步骤;

预期结果;

设计⼈员。

环境:

  1、测试环境:给测试使用的环境,指的是一个产品还没上线前测试的环境

  2、预发布环境:介于测试环境与线上环境中间,但是它也是可以给客户使用的环境,一般不开放,只供研发内部人员使用

  3、线上环境:给真实的用户使用的环境

测试的工作内容是什么?

  1、质量管理:能够结合沟通的能力,和各个不同角色的人来沟通解决工作过程中存在的问题。

  2、测试效率提升:通过自动化测试的技术手段来提升测试的工作速度(效率)

软件测试流程:

  1、评审需求文档

  2、开发这边编写代码来实现需求,测试这边编写测试计划和测试用例

  3、测试这边编写完测试用例后,进行测试用例的评审(评审参与人:产品经理,开发,测试,项目经理等)

  4、开发完成后,进行转测,测试这边进行冒烟测试,冒烟测试通过后,进入到测试阶段

  5、测试阶段测试完成后,准备产品的上线.

 

  传统的测试只参与到测试阶段,其他阶段很少关注,但是新型的测试,需要在整个流程中(需求从提出到产品上线)都全部的参与进去。

软件测试的目的:

  测试程序˙执⾏的过程,⽬的在于发现错误

    1、界面的提示信息的错误

    2、界面交互的错误

    3、在不同浏览器的兼容性的错误(Chrome,Firefox,edge)

    4、底层服务的稳定性,和可用性

  ⼀个好的测试⽤例在于能发现⾄今未发现的问题

    探索性测试:根据自己的主观意愿来产品进行随机的,无目的性的来测试产品,目的是发现产品中可能存在的其他问题。

  ⼀个成功的测试是发现了⾄今未发现的错误的测试

你怎么确保你的测试点考虑的是比较周全的?

  工具:头脑风暴(由N个人一起开会,针对某一个特定的事提出不同的解决方案和意见,目的是达成比较中性的解决方案)

  前提是你需要知道被测试的产品是给那些人服务的,那么在实际测试的过程中,需要站在这些人的角度和立场上来思考产品的合理性,以及可用性。

测试前必须明确定义好产品的质量标准

  1、需求文档的定义

  2、在用户的角度针对产品使用的理解度和使用度来衡量产品的可用性,和易用性

必须检查每个实际输出结果

  1、验证每一个点,都需要有结果的结果与预期的结果对比

穷举测试是不可能的

  只测试重点的产品搜索 每一个测试任务:必须有开始时间和结束时间

测试设计决定了测试的有效性和效率

  1、测试设计可以简单的理解就是怎么干这件事,以及干这件事的策略和方法

  2、以京东搜索为案例,如果测试所有的商品搜索,根本不现实,但是商品是有类型的,那么可以针对性的测试每个类型的商品搜索。

注意保留测试设计和说明⽂档,并注意测试设计的可重⽤性

  测试文档有哪些?

    1、测试计划

    2、测试设计方案

    3、测试用例

    4、测试报告

按阶段划分

   软件测试按开发流程的阶段来划分,可以主要划分为如下⼏个阶段,具体为:

    单元测试

      UnitTest 单元测试指的是针对程序最小粒度的测试,主要测试的对象是函数或者是方法。单元测试框架主流的有,Java(Junit,TestNG),Python(unittest,Pytest)。 单元测试又可以说是白盒测试,那么单元测试工程师的薪资是非常高的

      测试内容:模块接⼝测试,程序内部逻辑,路径分⽀测试,局部数据结构测试,错误处理测试,边界测试。

    集成测试

    现代企业使用的是前后端分离的模式

      1、前端:Vue,React等

      2、后端:主流的编程语言

      3、交互:前后端会根据HTTP的协议来进行交互

    后端与后端之间的交互:

      1、淘宝服务

       2、支付宝的服务

      3、服务根据HTTP等协议来进行通信

    集成测试的核心是API测试,也就是接口测试。接口测试主流的测试工具是PostMan,JMeter。集成维度具体为:

      1、前端与后端的集成

      2、后端与后端的集成

      测试的大部分精力主要聚焦于接口测试,因为接口测试的执行速度是比较快的,而且也是由现在的企业软件开发模式来决定的。

    系统测试

      端到端的测试,End To End Test

      系统测试:针对一个系统的业务流程的测试,也就是说从一个流程开始一直到一个流程的结束。针对系统中各个不同模块(集成测试里面的模块)集成到一起后的测试,目的是验证各个独      立的模块集成到一起后,是否能够完整的调用通系统的各个链路。

      测试内容:功能、界⾯、可靠性、易⽤性、性能、兼容性、安全性等

     验收测试

      测试完成后,发送邮件给产品经理,产品经理这边会进行验收测试,产品经理这边验收测试完成后,会回复邮件说明验收测试已经完成,下来测试团队编写测试报告,准备产品的上线。

测试按照代码分类可以分为

  1、黑盒测试

    把测试的对象看成是一个黑色的盒子的,看不到里面内部的结构,是对软件的一种功能性的测试。

  2、白盒测试

    单元测试又可以说是白盒测试

  3、灰黑测试

    它是介于黑盒测试与白盒测试中间,具体的来说就是测试开发工程师(测试工程师)能够看开发的代码,进行代码的走查,和参与开发代码的评审。

当前测试工程师需要掌握的能力

  要求:能够独立的负责一个产品的测试,能够很好的做功能测试,以及在自动化测试需要开展的时候又能够很好的参与到自动化的测试,以及在性能测试开展的时候又能够很好的参与进去。

什么是算法:

  在程序里面,指的是做一件事需要的步骤。

  什么是程序,程序=数据结构+算法。

  数据结构:

    队列:先进先出

    栈:先进后出

冒烟测试

  开发把编写好的程序转给测试的时候,程序首先需要做的是针对转测的程序进行正常流程的测试,这个过程叫冒烟测试。

  针对被测程序的正常流程的测试,目的是验证程序正常流程可以执行通的情况下继续测试被测程序的其他功能

探索性测试

  探索性强调测试⼈员的主观能动性,抛弃繁杂的测试计划和测试⽤例设计 过程,强调在碰到问题时及时改变测试策略。

安全测试

  主要是针对被测软件进行安全的考虑,目前主要使用的技术是渗透测试。

回归测试

  产品都已经测试完成了,在准备上线的情况下,针对产品进行第N次的测试。回归测试目前主要是大量的自动测试来承担这部分的任务。

  测试环境: 1、系统已有功能的测试(回归)

  线上环境: 1、系统已有功能的测试 2、这对本次上线新功能的回归测试

posted @   柏舟0129  阅读(348)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示