首页 > 其他 > 详细

软件测试基础

时间:2021-03-10 08:33:34      阅读:30      评论:0      收藏:0      [点我收藏+]

1:什么是软件 

  软件是计算机的灵魂。软件又可以分为两大类:系统软件和应用软件。
  系统软件:系统软件是生成、准备和执行其他程序所需要的一组文件和程序。如操作系统Windows, 数据库SQL-Server,驱动程序,java语言系统编译环境等。
  应用软件:计算机用户为了解决某些应用的问题而购买、开发或研制的各种程序或软件包。如APP, QQ,微信等。(会有具体的应用场景)

2:什么是软件测试

  百度的定义:为了发现程序中的错误而执行程序的过程。
  那么对于我们,我们应该怎么去定义这个问题呢?
  为了发现软件的错误而操作软件的过程,比如说发现微信的问题,就要去操作它,在不同的场景去操作它才能发现有没有问题
  it里面把每一个软件称为产品,

3:软件测试的分类

  如果真要认真的考虑软件测试这个职业,对分类了解清楚,也会对自己之后职业方向选择是个不错的起点。 

  按测试执行阶段划分:

    单元测试(代码层面)、集成测试(功能测试)、系统测试(产品完成了称为一个整体的系统再去做测试)、

    验收测试(产品完成之后由软件测试工程师或者用户对产品 进行验证)  正式验收测试、Alpha测试、 Beta测试

  按测试技术划分:

    白盒测试(代码)、黑盒测试(无代码)、灰盒测试(两者之间,)

  被测试对象是否运行划分:

    动态测试(程序是否再运行)、静态测试(不运行产品进行文档检查、代码走查、界面检查)

  按不同的测试手段划分:

     手工测试、自动化测试

  按测试包含的内容划分:

    功能测试(产品或者软件的功能进行测试)、
    界面测试(界面的颜色,按钮颜色是否正常)、
    安全测试(漏洞,后门,能不能被攻击,能不能修改用户密码等)、
    兼容性测试(一个软件能不能在各种系统里面使用和不同浏览器等上面使用)、
    易用性测试(对于用户来说操作是否简单,容易理解,)、
    性能测试、
    压力测试、
    负载测试、
    恢复测试(当我的软件出现问题的时候,最长多久时间能够自己恢复过来,需要对产品和系统进行攻击,

          dos攻击ip攻击,如果攻击被垮了什么时候能恢复过来,什么时候切到备用的服务器上去)

  其他测试:

    冒烟测试、

    回归测试、

    探索性测试/自由测试(测试思维)

4:软件的生命周期

  软件测试服务的对象是软件和产品,

  软件生命经过下面六个阶段: 

  一:问题的定义及规划(市场调研)
    主要确定软件的开发目的及其可行性。制定项目总体开发计划。

  二、需求分析(确定这个产品可以做了之后,要做哪些功能,哪个功能具体是那样的,产品的demo,产品大概是什么样子)
    在确定软件开发可行的情况下(经过市场调研了),对软件需要实现的各个功能进行详细分析,

    明确客户的需求,输出需求规格说明书初版(原型图),提交评审  

  三、设计
    把需求分析得到的结果转换为软件结构和数据结构,形成系统架构。
    概要设计:主要是架构的实现,指搭建架构、表述各模块功能、模块接口连接和数据传递的实现等项事务
    详细设计:对概要设计中表述的各模块进行深入分析等,其中需要包含数据库和表的设计说明。

  四、编码
    按照详细设计好的模块功能表,编程人员编写出计算机可运行的程序代码

  五、软件测试
    在软件设计完成后要经过严密的测试,以发现软件在整个设计过程中存在的问题并加以纠正。

      测试的方法主要有白盒测试跟黑盒测试两种。建立详细的测试计划并严格按照计划进行。

    单元测试:主要是测试程序代码,为的是确保各单元模块被正确的编译,比如有具体到模块的测试,

        也有具体到类,函数、方法的测试等。    单元测试一般是开发来完成

    集成测试:单元测试后,将各单元组合成完整的体系,测试软件单位之间的接口是否正确、数据能否正常传递。

         比如说注册和充值这两个功能是否能够连通
        不同的功能模块之间,他们之间如果有功能的关联,看一些功能是否可以走通的--集成测试

    系统测试:把软件系统搭建起来,按照软件规格说明书中所要求,测试软件其性能功能等是否和用户需求相符合,

        在系统中运行是否存在漏洞等。根据测试用例,进行完整的系统测试。
        软件所有的研发完毕了,不针对单个功能进行测试,所有的功能已经成为一个完整的产品了我们去进行测试(根据测试用例进行完整的测试)

    验收测试:主要就是用户在拿到软件的时候,在使用现场,会根据前边所提到的需求,以及规格说明书来做相应测试,以确定软件达到符合效果的。

        用户对软件进行验收。

  六、运行维护

    纠错性(用户在使用产品过程中发现了问题,需要对他进行修复),

    改进性(用户觉得这个软件不好用,需要改善一下才更好用  去改进))
    软件维护是软件生命周期中持续时间最长的阶段。在软件开发完成并投入使用后,由于多方面的原因,软件不能继续适应用户的需求。
    要延续软件的使用寿命,就必须对软件进行维护。软件的维护主要包括纠错性维护和改进性维护两个方面。
    比如微信不停的更新版本,修复bug,开发一些新的功能,
    只要软件还在运行,测试就不能停,看软件是否正常运作,如果用户提出问题,需要去复现一下问题

  测试得工作体验在和六个阶段

5:软件测试的工作流程

  目前讲究测试左移:就是测试工作提前,以前是提交了代码和程序之后进行测试,

  现在从开发开始编写计划的时候我们测试就介入写测试计划。然后根据计划分模块分工作
  然后根据功能去写需求,根据需求说明书写用例,用例评审,部署测试环境,冒烟测试(主流程测试,主流程都gg的话那说明软件有问题,不需要继续测试),

  (冒烟测试通过了)正式测试,提交bug管理系统并追踪(让开发进行修改),继续测试,测试通过,发布上线,测试报告

    开发                 测试

    1:需求分析
    2:需求评审
    3:开发编写开发计划 -         测试编写测试计划
    4:概要设计,详细设计          编写测试用例
    5:编写代码自测             用例评审
    6: 提交测试              部署测试环境
                       7: 冒烟,正式测试
                       8: 提交bug并追踪
                       9: 测试通过
                       10: 测试报告
                       11: 发布上线

 

6:软件测试基本流程:  

  1:测试需求分析阶段:阅读需求,理解需求,主要就是对业务的学习,分析需求点。参与需求评审会议  熟悉软件产品
  2:测试计划阶段:主要任务是编写测试计划,参考软件需求规格说明书、项目总体计划,内容包括测试范围
    (来自需求文档、进度的安排,人力物力的分配,整体测试策略的制定,和风险的评估与规避措施有一个制定,

    一 般由测试负责人编写,当然我们可能也会参与相关的评审工作。
    人力物力的安排,不提前安排好人力有限,时间有限那么工作就会做的不好,计划一定要提前做的  出一个软件测试计划

  3:测试设计阶段:主要任务是编写测试用例,会参考需求文档(原型图)、概要设计、           编写测试用例
    详细设计等文档,有不明确的也会及时和开发、产品经理沟通。用例编写完成后会进行评审。
    用例就是覆盖用户的所有使用场景:所有用户可能用到的操作和功能和数据都去模拟一下,

    确保用户使用不出现问题  因为不能确保全覆盖,需要评审

  4:测试执行阶段:首先搭建测试环境,执行预测(冒烟),以判定当前版本可测与否,
    如果预测通过,正式进入正式测试(根据测试用例执行测试),遇到问题提交Bug到缺陷管理平台,
    并对bug进行跟踪,直到被测软件达到测试需求要求,没有重大bug,测试结束。----- (完善测试用例)

  5:测试评估阶段:出测试报告,对整个测试的过程和版本质量做一个详细的评估。确认是否可以上线。

    (测试了哪些功能,有哪些人参与了,修复和发现了多少个bug,还遗留了多少bug,有没有一些上线的风险)

  

  开发人员的工作流程:需求分析——>得知功能组成及设计软件结构、数据结构(概要设计、详细设计)——>编写代码——>单元测试
            ——>代码审查——>打包提交测试部——>等待测试提交bug——>修复bug——>等 待测试回归bug

            ——>... N轮——>版本上线——>面向用户使用

  测试人员的工作流程:  开项目评审会——>领导指定测试计划——>熟悉项目,查看文档,体验产品——>需求分析——>编写测试用例

            ——>评审测试用例——>搭建测试环境——>等待开发研发完成,提交测试包进行测试(酱油期)
            ——>部署测试包——>冒烟测试(预测)——>执行测试用例——>bug跟踪 处理(提交及回归bug) ——>... N轮测试

            ——>版本上线——>面向用户使用

7:软件测试用例设计方法:

  一:等价类:

    等价类划分法的概念

    定义:等价类划分法是一种典型的、重要的黑盒测试方法,是指某个输入域的子集合。在该子集合中,所有的输入数据对于揭露软件中的错误都是等效的。

    划分:等价类划分有效等价类和无效等价类。

    实例1:比如成年人的定义收>=18岁:
      有一个系统根据人的年龄去判断是否成年?怎样设计等价类

      <18未成年:输入:17,16,15,5,4,3,2,1,0都是一样的效果,都是未成年,所以小于18的整数的就算一个等价类

            这个范围内的所有数据输入的结果都是一样的,所以不需要穷举:1输入到18

            不需要这样测试,只要判断有一个年龄符合就可以了

      >=18成年人:18,19,20,21,22,88,99,100,120  这个也不需要穷举,

             所有大于等于18的整数是一个等价类,这个范围里面输入的数据导致的结果都是一样的,

    有效等价类:所以两个等价类:这两个等价类叫有效等价类,就是我的系统可以接受这样的数据(输入的结果的数据是起作用的,系统是支持的:有效等价类)

    无效等价类:  200无效的,假设人的寿命120,大于120不行小于等于0也不行,这些算无效等价类,

          输入的数据是无效的不存在的,不支持你输入这些数据(输入的数据是无作用的,系统不支持的)

    一般涉及到数字输入的时候:对他进行等价类的划分

    实例二:微信红包:0.01-200之间

      一:按数据范围划分:

        有效等价类:   0.01-200(1)

        无效等价类 :  小于0.01 (2)  大于200 (3)    0.01-200区间小数点后超出2位的值(4)

      二:按数据类型组成划分:

        有效等价类:  数字(5)

        无效等价类:  非数字类型,比如:英文、中文、特殊字符、html标签... (6)

      三:按是否为空划分:

        有效等价类:  不为空(7)

        无效等价类:  为空(8)

      一个非常小的可以设计几组进行数据测试,8组数据数据完成测试

  二:边界值,边界值分析法概念

    定义:边界值分析法是对等价类划分法的一个补充,边界值一般都是从等价类的边缘值去寻找。边界值分析的基本.

    思想:正好等于、刚刚大于、刚刚小于边界的值作为测试数据。0,0.01、 200(三个点)

    注意: 0是一个特殊值,我们在考虑边界值的时候同时也要考虑这个特殊值。负数

    边界值的作用:人们从长期的测试工作经验得知,大量的错误是发生在输入或输出范围的边界上,

          而不是在输入范围的内部。因此针对各种边界情况设计测试用例,可以查出更多的错误!

          开发程序设计的过程中很多只考虑等价类里面的数据是不是正常,对边界少有判断,

          所以很容易出现很多问题,输入边界值可能出问题

    实例一:微信红包:最小金额0. 01元,最大金额200元

        边界值: 0  0. 01  0.02  199. 99   200  200. 01,

        特殊值:负数

        微信红包

          数字上来划分

            有效的:   0.01-200

            无效:    小于0.01   大于200     0.01-200区间小数点后超出2位的值

            边界值:  0   0.01   0.02   200   199.99   200.01(按照正好等于,刚刚大于,刚刚小于来考虑边界值)

    边界值使用场景:什么情况下才会使用边界值

      边界值一般涉及到数字的时候就会用到,尤其重要,涉及到数据就一定考虑边界值

    实例二:163的邮箱注册的时候填写邮箱地址

        要求: 1:必填  

            2:6-18个字符,可以使用字母,数字,下划线组合,需要以字母开头(使用等价类和边界值来设计测试用例)

        结果分析:

        等价类划分:

          长度划分:

            有效等价类 :6<= x <=18         

            无效等价类:x<6   x>18   

            特殊值: 0  

          内容划分:

            有效等价类:1:全是字母   2:字母+下划线   3:字母+数字      4:字母+数字+下划线   

            无效等价类:1:全是下划线   2:全是数字   3:数字+下划线  4:除数字字母下划线以外的内容,特殊字符(@#$),中文等都是无效的

          是否必填:

            有效等价类:非空

            无效等价类:空

        边界值划分:  跟数字有关的时候就需要用到边界值(6-18个字符)

          6   18   7   19   5   17(这就是边界值,刚好等于,刚好大于,刚好小于)

          还需要补充这三组数据来测试是否考虑到边界值的情况

  三:错误推测法,从错误操作层面推测是不是正常的

    错误推测法概念:

      基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性的设计测试用例的方法。

    它的要素共有三点:

      分别为:经验、知识、直觉。关于如何使用的问题,我们提炼出两点:

      列举出程序中所有可能有的错误和容易发生错误的特殊情况;

      根据他们选择测试用例

    我们用错误的操作去验证我们软件以及程序的健壮性,我们不可能只考虑到用户正常的操作,还要考虑用户的非正常操作,

      因为每个用户操作可能都不一样,可能不正常去操作软件

      用户傻逼,可能瞎几把操作遇到问题

    简单的概括为:错误推断法是明知不可为而为之

    实例一:某平台登录页面

      既然是用错误猜测法,那么我们首先列出可能导致结果出错的情况,如下:

        1、用户名跟密码的对应关系不对应的情况进行验证(对应知道可以登录成功,那么不对应的话什么情况)   

        2、账号或密码为空(为空)

        3、用户名和密码,如果太短或者太长,应该怎么处理

          安全性,密码太短时是否有提示  格式+满足格式要求但不是正确的(超长或者过短的) 

        4、用户名和密码中有特殊字符(比如空格),和其他非英文的情况(是否做了过滤)(如果用中文呢,)

        5、用户名和密码前后有空格的处理(过滤)

        6、错误登录的次数限制(错误只能登录三次,如果超过三次呢,有没有冻结用户)

        7、提交登录时,网络异常(没网提交会出现啥问题呢)

        8、多次点击提交操作,只能被执行一 次

          登录一般只需要点击一次,如果我点击多次呢,充值只能点一次,如果我点多次呢,发视频只要点一次,我要是点多次呢

      明知不可为而为之,需要熟悉业务和参数,知道这样做是不对的,

        但是用户不知道,充分考虑到用户的一些非法操作,然后用系统提醒用户这样操作不合理的        

        来提高用户的体验以及提升软件产品的健壮性,不管用户做什么操作,

        都会有一套机制去提醒用户这样操作是不可以的,您应该怎样操作

 

    每种方法设计出来的用例都是有重叠的,这没有关系,这样只会让用例越来越完善,越来越体系,测试就会越来越全面,不会出现漏测得情况,

  四:场景法

    场景法概念:

      什么是场景法,通过场景描述的业务流程(业务逻辑),也包括代码实现逻辑,设计用例来遍历场景(图上面所有路径),验证软件系统功能的正确性。  

        考虑所有的业务路径和业务场景来验证软件系统功能得正确性

      一个软件考虑用户的使用场景,每个场景都会去考虑不同分支去处理,模拟用户使用得各个场景,---场景法    

    如何使用场景法   

      画出流程图

        矩形:表示步骤(操作、结果)

        菱形:判断-是、否   

    注意:场录法的重点是测试流程(场景),因此每个流程一个用例验证即可,流程测试没有问题并不能说明系统功能没有问题了,还需要针对单步的功能进行测试,

       只有单个功能点测试过了和流程测试都测试过了,才算是充分的测试,还有其他地方需要进一步用别的方法进行测试,也是有可能的

       当所有的测试过后才能说进行了一次比较完整的测试,

    怎么体现场景法:

      实例分析:根据场景画流程图,

           矩形:表示步骤(操作、结果),

           菱形:判断-是、否,T表示ture,这个条件成立的时候 F表示这个条件false,这个条件不成立的时候,箭头表示流程走向

            1:根据正常流程:主

            2:根据异常流程:备用(非常规操作,非常规场景操作)  场景是很难全面覆盖的,出乎岂料的场景

        普通流程图四条逻辑

                        true           true
          输入a,b,x三个值——>经过判断a<5and b=5——>a=2 or x>2 ——>输出a,b,x           主流程

                      true            false
          输入a,b,x三个值——>经过判断a<5and b=5——>a=2 or x>2——>x=x+1——>输出a,b,x     备用流程

                      false            true
          输入a,b,x三个值——>经过判断a<5and b=5——>x=x/a---a=2 or x>2——>输出a,b,x         备用流程

                      false                 false
          输入a,b,x三个值——>经过判断a<5and b=5——>x=x/a——>a=2 or x>2——>x=x+1——>输出a,b,x   备用流程

       因为true和false的走法不同。一共四个场景:TT  TF  FY  FF 

        TT主流程

        TF  FY  FF 备用流程

        根据判断条件准备数据 

  四种测试用例组合编写得才能组成完整得用例,但是往往测试用例可能重复,去掉就行,这样才能不会在整个测试过程中出现漏测得情况,

    给个业务场景,使用非常清晰得流程来展现得话,需要自己去画这个流程图(流程图的元素:矩形:表示步骤(操作、结果),菱形:判断-是、否)

8:给出一个登录/购物车/支付页面,之间让你尽可能设计多的用例?

  京东,淘宝,等电商平台,

  设计用例:

  分模块:

    登录模块:正常登录(输入正确的用户名和密码) 异常操作(用户名or密码错误  为空 输入特殊字符 )

    购物车:  最多可以添加多少商品? 可以增减删商品? 可以修改选择了的商品的属性(比如说颜色,size尺寸)?

          异常操作:过期商品的添加? 售罄的商品能不能添加? 购物车里面有优惠价会不会显示? 打折会不会显示

    支付:正常操作

        异常操作:

    tips:支付方式?(花呗,支付宝,银行卡还是余额) 余额不够的时候支付? 银行卡不够的时候支付? 代付?

      根据这些去设计

  

  场面就算场景法考虑问题,正常的操作和异常的操作,场景分出来之后根据等价类,边界值,错误推测法去做这个事情,

  比如异常的操作用的过期的商品,售罄的商品,并不是所有的用例都支持等价类边界值去做的

  模块合成在一起进行测试:
    登录后——>添加商品——>支付能不能走通

9:软件需求分析

  测试需求是什么?

  测试需求主要解决“测什么”的问题,一般来自需求规格说明书中原始需求  要测什么

  测试需求应全部覆盖已定义的业务流程,以及功能和非功能方面的需求 

  比如说一个购物网站,具备注册、登录、浏览商品、购买商品、支付等功能。 

    那么在这个例子里面,注册、登录、浏览商品、购买商品以及支付等功能就是这个网站的需求。

  对于这些软件需求,在软件需求说明书文档中,会有详细描述。像这个登录功能,

    会详细描述登录是否支持老用户登录、是否支持手机号码快捷登录、第三方账号登录等等,

    每个功能模块的业务流程、细节都会体现在软件需求说明书里。

  哪些业务逻辑,功能场景需要测试,然后才能写用例,

  需求分析考虑点:

    登录功能: 输入输出有什么要求,有什么限制,有没有约束,对他进行验证这就是功能测试

      分析各个功能模块的业务顺序,还有各个功能模块之间传递的信息和数据,对存在功能交互的功能给出对应的验证功能 

  如何进行软件测试需求分析

    测试需求分析的主要目的:依据需求文档提取测试点,根据测试点来编写测试用例

  这里重点讲一下测试点分析:

    通过分析需求描述中的输入、输出、处理、限制、约束等,给出对应的验证内容: ( 功能测试)
    通过分析各个功能模块之间的业务顺序,和各个功能模块之间传递的信息和数据,对存在功能交互的功能项,给出对应的验证内容; (功能交互测试)
    考虑到需求的完整性,要充分覆盖软件需求的各种特征,包含隐性需求的验证,比如界面的验证,注册账号的唯一性验证(界面、易用性、兼容性、安全性、性能压力)

    

  

    

    

 

      

    

 

  

 

软件测试基础

原文:https://www.cnblogs.com/yuanwt93/p/14509338.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!