测试篇(二)--------------基础知识

参考引用https://www.zhihu.com/question/19752175/answer/841187738

  1. 软件测试定义:使用人工或自动的手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。
    一个好的测试用例在于它能发现至今未发现的错误,一个成功的测试是发现来至今未发现的错误。
  2. 为什么要进行软件测试: 确保软件完成了它需求的功能,满足性能和效率上的要求,确保是健壮的,适应用户的环境。
  3. 软件测试原则:
    有计划地尽早测试,解决问题的成本越小。
    成功的测试在于发现迄今为止尚未发现的缺陷。
    测试并不能保证软件百分百没有问题。
    测试工作的本质都应追溯到用户需求。
    测试的规模有小而大,从单元测试,集成测试,系统测试,验收测试。
    Good-enough原则,穷举测试是不可能实现的。
  4. 软件生命周期:软件开发的全过程,时从可行性研究到需求分析、软件设计、编码、测试软件发布维护的全部过程。
    常见的开发模型:瀑布模型,螺旋模型,敏捷开发。
  5. 软件测试过程模型:V模型、W模型/双V模型、H模型

敏捷(scrum)开发:以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。再敏捷开发中,软件项目在构建的初期被划分为多个子项目,各子项目的成果都经过测试,具备可视、可集成和可运行使用的特征,换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中,软件一直处于可使用状态。 简言之:适应变化,不断迭代。

特点:快速迭代,快速反馈,快速修正。
早期交付,从而大大降低成本。 及时了解市场需求,降低产品不适用的风险。

一个完整的敏捷开发过程:
产品经理收集需求,形成产品待办列表。
项目团队参与迭代(sprint)计划会,形成迭代任务。
开发团队进行具体的开发任务,每日站会。
开发团队进行成果演示(迭代评审会),产品经理,市场/高层,项目经理参与
评审通过,产品上线,评审不通过,在对产品做修改。
开发团队与项目经理进行迭代回顾会,分析好的地方和需要改进的点。

scrum 开发中的四个会议:
迭代(sprint)计划会:需要做什么,怎么做,什么时间完成
每日站会:昨天做了什么,有什么风险,今天计划做什么。
迭代评审会:大家评审迭代的产出,然后对待办事项做相应调整。
迭代回顾会,讨论哪里完成好,哪里需要改进。

Scrum中的三种角色:
产品经理 Product owner: 产品负责人,明确整个产品的需求和定义。
项目经理 Scrum Master: 敏捷专家或者敏捷大师,确保Team按照Scrum的方式运行。
开发团队 Dev Team:研发人员,包括开发、测试、UI等。

敏捷的四个价值观:
个体与交互胜过过程和工具
可用的软件胜过完备的文档
客户协作胜过合同谈判
响应变化胜过遵循计划

  1. 软件测试分类
    按测试阶段划分:单元测试 集成测试 系统测试 用户验收/确认测试
    单元测试:完成对最小的软件设计单元模块的验证工作。对代码风格和规则、程序设计和结构、业务逻辑等进行静态测试。 白盒测试技术,开发人员自己执行。
    集成测试:通过测试单元模块组装成子系统,然后在进行的测试,主要测试内容时接口。 集成测试大部分时接口测试和交互测试。 自顶向下,自底向上
    系统测试:将整个软件系统全部集成好之后作为一个整体进行的测试。主要包括:
    功能测试:对产品的各功能进行验证,以检查是否满足需求的要求。
    性能测试:通过自动化测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。
    安全测试:检查系统对非法入侵的防范能力。
    兼容测试:测试系统在不同的软硬件环境下是否能够正常的运行。
    用户验收/确认测试: Alpha测试:用户在开发环境下进行的测试,Aplha测试是在一个受控的环境中进行的。
    Beta测试: 由软件的最终用户在一个或多个用户场所来进行的,开发者通常不在现场,用户记录测试中遇到的问题并报告给开发者。

按照对代码可见划分: 黑盒测试 白盒测试 灰盒测试
黑盒测试:又称功能测试或数据去懂测试,是针对软件的功能需求/实现进行测试,通过测试来检测每个功能是否符合需求,不考虑程序内部的逻辑结构。 常见的黑盒测试方法:等价类划分 、边界值分析 、因果图、 错误推测 、场景法
白盒测试: 也称结构测试或逻辑去懂测试,必须知道软件内部工作过程,通过测试来检测软件内部是否按照需求、设计正常运行。 白盒测试方法:逻辑覆盖(语句覆盖、分支覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖)、循环覆盖(简单循环、嵌套循环、串接循环)
灰盒测试:介于黑盒测试与白盒测试之间。

其他测试分类:
回归测试:对软件进行修改之后进行的测试,目的是检验对软件进行的修改是否正确。一是所做的修改达到了预定的目的,也就是确认测试,二是还要保证不影响软件的其他功能的正确性。
冒烟测试:在软件中,冒烟测试是指测试版本的主要功能,如果能通过测试,才继续进行接下来的其他全功能测试。 对一个新版本进行大规模测试前,先验证一下软件的基本功能是否实现,是否具备可测性,目的是确认软件基本功能正常,可进行后续的测试工作。

  1. 软件测试分类
    按测试阶段划分:单元测试 集成测试 系统测试 用户验收/确认测试
    单元测试:完成对最小的软件设计单元模块的验证工作。对代码风格和规则、程序设计和结构、业务逻辑等进行静态测试。 白盒测试技术,开发人员自己执行。
    集成测试:通过测试单元模块组装成子系统,然后在进行的测试,主要测试内容时接口。 集成测试大部分时接口测试和交互测试。 自顶向下,自底向上
    系统测试:将整个软件系统全部集成好之后作为一个整体进行的测试。主要包括:
    功能测试:对产品的各功能进行验证,以检查是否满足需求的要求。
    性能测试:通过自动化测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。
    安全测试:检查系统对非法入侵的防范能力。
    兼容测试:测试系统在不同的软硬件环境下是否能够正常的运行。
    用户验收/确认测试: Alpha测试:用户在开发环境下进行的测试,Aplha测试是在一个受控的环境中进行的。
    Beta测试: 由软件的最终用户在一个或多个用户场所来进行的,开发者通常不在现场,用户记录测试中遇到的问题并报告给开发者。

按照对代码可见划分: 黑盒测试 白盒测试 灰盒测试
黑盒测试:又称功能测试或数据去懂测试,是针对软件的功能需求/实现进行测试,通过测试来检测每个功能是否符合需求,不考虑程序内部的逻辑结构。 常见的黑盒测试方法:等价类划分 、边界值分析 、因果图、 错误推测 、场景法
白盒测试: 也称结构测试或逻辑去懂测试,必须知道软件内部工作过程,通过测试来检测软件内部是否按照需求、设计正常运行。 白盒测试方法:逻辑覆盖(语句覆盖、分支覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖)、循环覆盖(简单循环、嵌套循环、串接循环)
灰盒测试:介于黑盒测试与白盒测试之间。

其他测试分类:
回归测试:对软件进行修改之后进行的测试,目的是检验对软件进行的修改是否正确。一是所做的修改达到了预定的目的,也就是确认测试,二是还要保证不影响软件的其他功能的正确性。
冒烟测试:在软件中,冒烟测试是指测试版本的主要功能,如果能通过测试,才继续进行接下来的其他全功能测试。 对一个新版本进行大规模测试前,先验证一下软件的基本功能是否实现,是否具备可测性,目的是确认软件基本功能正常,可进行后续的测试工作。

  1. 接口测试
    常见接口类型:
    webService接口:它是简单对象访问协议(soap)通过http传输,SOAP=RPC+HTTP+XML,即采用HTTP作为通信协议,RPC(Remote Procedure Call Protocol 远程过程调用协议)作为一致性的调用途径,
    XML作为数据传送的格式,从而允许服务提供者和服务客户经过防火墙在Internet上进行通信交互,请求报文和返回报文都是xml格式,常使用测试调用工具有SoapUI、jmeter、loadrunner等。
    http api接口:基于http协议,一般通过路径来区分调用的方法,请求报文都是key-value形式的,返回报文一般都是json串,请求方法最常见的为get和post方法,常见的测试调用工具有postman、RESTClient、
    jmeter、loadrunner等。

    接口测试工具:
    Fiddler: Fiddler被称为抓包神器,它是一个http协议调试代理工具,它能够记录互联网之间的http协议通信,可以设置断点,查看所有“进出”Fiddler的数据(如cookie,html,js,css等文件)。Fiddler 要比其他的网络调试器要更加简单,操作便捷,格式显示清晰,这个工具也可以进行接口测试,但是不能写断言,只能用composer构造HTTP请求,需要人工确认返回结果的正确性。
    Postman: 是谷歌开发的一款接口测试软件,它使用简单,功能强大,能够发送任何类型的HTTP请求 (GET, HEAD, POST, PUT..),可以进行文件上传、响应验证、变量管理、环境参数管理,还可以批量管理和运行用例,并支持用例导出、导入,可以进行接口的自动化测试。 缺点是自动化断言不够强大,不能和jenkins、代码管理库进行持续集成测试。
    (使用详解: https://mp.weixin.qq.com/s?__biz=MzI5NzIyMjQwNA&mid=2247484245&idx=1&sn=75d8a9984b4ab45282b7f2429acc687e&chksm=ecb92b3edbcea228cef9bcb2c26d8a0e8a52f618d6bbd0fc2033f897d05a1b6772126f10ddd1&scene=21#wechat_redirect)
    soapUI: 是一个开源测试工具,通过soap/http来检查、调用,实现Web Service的接口和性能测试。该工具既可作为一个单独的测试软件使用,也可利用插件集成到Eclipse,maven2.X,Netbeans 和intellij中使用。
    soapUI pro是soapUI的商业非开源版本,实现的功能较开源的soapUI更多,国外公司使用较多。
    Jmeter: 是一款100%纯Java编写的免费开源工具,主要用来做性能测试,但也可以做接口测试,配合后置处理器与断言,可以满足大部分的接口测试场景,JMeter提供了BeanShell编程能力,可以写出比较灵活的测试脚本,通过jmeter+ant+jenkins可以实现接口和性能自动化测试。
    (使用介绍: 1. https://mp.weixin.qq.com/s?__biz=MzI5NzIyMjQwNA
    &mid=2247484370&idx=1&sn=618ea4d51907d9f2be7bf368acf402e8&chksm=ecb92bb9dbcea2afcc18c913dba917309bb8b2708e421e14baa5abff2e848c5a4b61d89f4209&scene=21#wechat_redirect
    2.https://mp.weixin.qq.com/s?__biz=MzI5NzIyMjQwNA&mid=2247484446&idx=1&sn=50b9499c4d786cda0d951d15022a8aec&chksm=ecb92c75dbcea563cc3f4221ad2633bd9df332bbf12ae352931b19aa0d5d8ac181a922715f03&scene=21#wechat_redirect
    3. https://mp.weixin.qq.com/s?__biz=MzI5NzIyMjQwNA
    &mid=2247484424&idx=1&sn=b49a3f7ed5820335d8c663aa80943992&chksm=ecb92c63dbcea5751fca543ff70ff394ead1bce42168092f174e18135ac599337e927c8b6282&scene=21#wechat_redirect

    代码实现: java代码实现接口测试:java可以通过httpclient.jar包,利用JUnit或者TestNG这样的单元测试工具进行用例编写,结合jenkins实现接口持续集成测试。
    python代码实现接口测试:python可以利用强大的第三方库Requests实现接口用例编写,结合unittest单元测试框架,生成测试报告,也可以和jenkins做持续集成测试。
    https://mp.weixin.qq.com/s?__biz=MzI5NzIyMjQwNA==&mid=2247483925&idx=1&sn=c5323ff5301aa2bdf4f8b6097ce1fc90&chksm=ecb92a7edbcea368644321cfe57c23b7bcab59dcb74a83f23bebaadd864322bb11768ea46791&scene=21#wechat_redirect)

  2. 性能测试:
    定义: 性能测试是通过自动化测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能测试。
    性能测试分类:
    基准测试:再给系统施加较低压力时,查看系统的运行状况并记录相关数为后续性能测试作为参考基准。
    负载测试:通过对被测试系统不断地加压,知道超过预定的指标或者部分资源已经达到了一种饱和状态,一般运行时间比较短。
    压力测试:对被测系统逐渐加压,当达到一定的饱和程度(如CPU、硬盘等已经处于饱和状态),直到系统出现错误或异常,找到系统瓶颈,一般运行时间比较长。
    配置测试:配置测试是通过调整系统软硬件环境,了解各种不同环境对系统性能的影响,从而找到系统的最优配置。
    并发测试:模拟用户并发访问软件系统,测试多用户同时访问同一应用、模块或数据,观察系统是否存在死锁、系统处理速度是否明显下降等其他性能问题。
    稳定性测试: 在给系统加载一定业务压力的情况下,使系统运行一段时间,以此检测系统是否稳定。
    性能指标:
    响应时间:从客户端发起的一个请求开始,到客户端接收到从服务器端返回的相应结束,这个过程所耗费时间。
    平均响应时间: 每个请求request的平均响应时间。
    吞吐量TPS(Transaction Per Second) : 每秒钟系统能够处理的交易或食物的数量。
    并发数: 即并发用户数,指系统可以同时承载的正常使用系统功能的用户数量。
    每秒点击次数HPS(Hits Per Second):指在一秒钟的时间内用系统处理的事务量,它一般和TPS成正比关系,是B/S系统中非常重要的性能指标之一。
    (Jmeter 性能测试: https://mp.weixin.qq.com/s?__biz=MzI5NzIyMjQwNA==&mid=2247484113&idx=1&sn=e54da643b8348871d5ee820c22b6c42f&chksm=ecb92abadbcea3accb31e37be77a0563fb0bf3122b26a64852e0dd9dc0f0724208fd2b51477b&scene=21#wechat_redirect)

  3. 自动化测试:
    python/java 自动化测试工具如selenium/appium ,自动化测试框架,对于接口自动化测试,如果用python实现,则需要掌握requests库和unittest框架的使用。

posted @ 2020-12-03 15:49  小宇宇啊宙  阅读(253)  评论(0编辑  收藏  举报