范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

十年测试老兵教你构建软件测试知识体系和技能树(附思维导图)

  其实现在网络上关于软件测试的知识很容易得到,各种公众号、各种博客,以及线下各种测试大会,都能方便得到各种实践干货。我也是关注了十几个公众号、很多博客,也经常参加各类测试开发大会。但是,我慢慢发现这些公众号、博客或者大会的分享,往往是关注于某一个点,碎片化很严重。很多时候当时是懂了,但是过后就忘记了,我觉得主要原因还是没有建立自己的知识体系。
  在本文中,我将软件测试的知识体系或者叫技能树分成两部分,一个是计算机基础,一个是专项测试。我把计算机基础叫作内功,专项测试叫作招式。我认为软件测试水平高低往往取决于内功的深厚程度。招式易学,内功难修。
  本文我并没有将需要掌握的每一门知识和技能展开来介绍。因为本文的主要目的是,帮助大家建立属于自己的测试知识体系和测试技能树,就像我给大家搬来了一棵只有树干的大树,需要大家依靠自己平时积累,为这棵大树增加树枝和树叶,让自己的测试技能树枝繁叶茂。 1. 计算机基础知识
  想成为一名合格的软件测试工程师,和其他任何 IT 工程师一样,在工作中扎实的计算机基础知识都是至关重要的。无论是从个人的职业发展角度,还是从公司招聘候选人的角度,计算机基础知识都是必备条件和必考内容。某种程度上说,计算机基础知识掌握的程度,决定了软件测试工作的优秀程度,也决定了软件测试职业生涯的高度。
  从软件测试领域来讲,一定要掌握的计算机基础知识主要包括:操作系统、计算机网络、数据库、编程语言、数据结构和算法以及架构知识。当然,计算机基础知识还包括计算机组成原理、编译原理等基础学科,这些我们要不要掌握呢?从我的经验来看,软件测试工作还没有直接用到过这两门学科的知识,所以,这里我不会介绍它们。
  下面,我就来解释一下软件测试工程师为什么要掌握操作系统、计算机网络、数据库、编程语言、数据结构和算法以及架构方面的知识,并跟大家分享一下我的学习经验。 1.1 操作系统
  这里说的操作系统,特指的是 Linux 操作系统,在计算机行业,Linux 操作系统绝对在操作系统领域占据第一把交椅。首先,对于服务器端软件,70%以上都是部署在 Linux 操作系统上的,其次,客户端的操作系统 Android 也是基于 Linux 内核开发的。现在比较火的前沿技术,比如云计算、虚拟化、容器技术、人工智能、大数据,每一项都离不开 Linux 技术。
  软件测试工作,也是离不开 Linux 操作系统,比如,我们会通过 ssh 登录到服务器上,使用 tail 命令查看日志;我们会通过 ps 或者 top 命令,查看服务器上的进程状态;通过 vim 命令编辑服务的配置文件;会通过 yum、apt-get、rpm 命令安装软件包;某些时候还会编写一些 shell 脚本来自动化和简化我们的工作;在做性能测试时,需要分析服务的性能瓶颈并进行优化。随着软件测试工作的深入,一定会使用到容器、虚拟化、Kubernetes 等前沿技术,而熟练使用和理解 Linux,将会让你更加快速理解和使用这些前沿技术。
  如果大家没有使用过 Linux 操作系统,或者使用起来不是那么顺手,我非常建议大家系统学习一下。这里我推荐大家一本非常适合入门的书《鸟哥的 Linux 私房菜》(基础学习篇)。这本书以 CentOS 7 为例,介绍了 Linux 系统的基本使用和管理方法,主要内容包括系统安装、文件和目录操作、磁盘和文件系统管理、编辑器、Bash 以及 Linux 系统的管理维护等。这些内容非常适合刚入门 Linux 系统的新手,是软件测试工程师必须要掌握的。
  随着容器技术的普及,容器和容器云在软件测试领域的应用越来越广泛。最火的应该属于 Docker 容器和 Kubernetes 容器云技术了。我们可以利用 Dokcer 快速搭建测试环境、部署被测试服务,使用 Kubernetes 作为 Jenkins slave 进行持续集成、快速搭建分布式性能测试环境。因此,掌握 Dokcer 和 Kubernetes 的使用,了解他们背后的原理,一定会让我们测试工作更加高效。
  关于 Docker 容器和 Kubernetes 容器云,我并没有看过纸质版图书。我是照着 Docker 的官方文档,以容器化一个 Python Web 应用的实践掌握了 Docker 的基本使用,大家可以参考我的另一篇博文《通过容器化 Python web 应用了解 Docker 容器的核心功能》来亲手实践一下。
  关于 Kubernetes,我通过学习极客时间的专栏《深入剖析 Kubernetes》,成功地将 Kubernetes 应用到了我们的持续集成和性能测试环境搭建中。
  通过对 Docker 容器和 Kubernetes 容器云的学习和应用,让我更加深信带着目的、通过动手实践的学习方法,是事半功倍的,是最高效的。 1.2 计算机网络
  关于计算机网络,你可能比较困惑,感觉只是在面试时,面试官会问 TCP 和 UDP 的区别、TCP 建立连接的三次握手流程,HTTP 协议是怎么一回事。感觉计算机网络都是偏理论的内容,在实际工作实践中用到的并不多,是不是不需要深入系统的学习呢。如果你这样想,就大错特错了。
  首先,在软件测试面试中,不管是应聘哪一个级别,计算机网络一定是必考的内容。如果面试中还解答不出 TCP 和 UDP 的区别、三次握手四次挥手的流程和状态转移过程、解答不出 HTTP 协议请求头和响应头各字段含义、HTTPS 为什么比 HTTP 更安全的面试问题,那肯定是应聘不到心仪的岗位。所以,就算为了面试,也一定要掌握好计算机网络的知识。
  在日常的软件测试工作中,当遇到网络不通、发现网络请求异常时,计算机网络知识的储备就派上用场了,你需要到 ping 和 telnet 来判断是网络问题还是服务异常,你需要通过 tcpdump 或者 wireshark 抓包分析网络包的异常,需要用 charles 或者 findler 拦截 HTTP 请求分析请求和响应。
  计算机网络概念太多,知识太零碎,一定要建立起知识体系,并加强练习和实操。知识体系的建立可以基于计算机网络的分层体系,理解数据链路层、IP 层、传输层和应用层,这些层各是为了解决哪些网络问题,为了解决这些问题设计了哪些网络协议,网络协议的数据格式是什么样的,执行这些网络协议的是设备是什么,如何通过各种命令配置网络和排查问题。
  计算机行业新技术滚滚而来,也不断被淘汰,而计算机网络知识一定是值得你掌握,让你长期受益。 1.3 数据库
  现代软件服务端越来越复杂,数据越来越多,不同的数据有不同的存储需求、也有不同的应用。因此目前市场上数据库的种类特别多,用得比较多的数据库有 Mysql、Redis、MongoDB。还有一种不能称为数据库,但是在数据处理领域应用特别广泛的 Kafka。
  数据库是我们测试工程师日常工作中用的最多的软件。为了准备测试数据,我们可以在数据库中修改或插入数据;发现接口请求的数据不符合预期,我们需要到数据库中查询存储的数据;发现请求响应特别慢,我们会检查数据库是否有慢查询;为了优化数据库的查询效率我们会优化查询语句、给数据字段增加索引;为了提高并发量、减少响应时间,我们会引入 Redis 作为数据库缓存。在使用 kafka 进行业务隔离的微服务架构中,测试时,我们会通过写 kafka 构造数据或者读取 kafka 校验结果,从而解耦测试时对上下游系统的依赖。
  虽然数据库种类众多,增加了我们的学习任务,但我们可以从最常用的数据库入手,比如 MySQL,详细了解它的常用操作、背后原理及性能优化技巧。我记得我的第一本学习 MySQL 的书,是一本小册子,叫《MySQL 必知必会》,学习完 MySQL 后,再后来遇到 Redis、MongoDB、Cassandra 等其他数据库时,学习起来就快多了。 1.4 编程语言
  提到编程语言,对于部分测试同学来说可能会望而生畏,很多同学也是因为惧怕编程才选择软件测试行业的。但是,我想说的是,软件测试行业发展到现在,编程已经是必备技能了,从事软件测试行业,如果不会编程也是会被淘汰的。
  部分测试同学惧怕编程,我也感同身受,因为当时我也是惧怕,觉得编程太难了,很多语法记不住,语法记住了也不会上手写代码。我不是计算机专业的,和大家一样,在学校时学的唯一一门编程语言是 C 语言,再加上不懂数据结构和算法,做起课程设计、毕业设计真的太痛苦了。所以从上大学时就下定决心了,以后一定要放弃编程这条路了。
  毕业时,和大家一样找了一份软件测试的岗位,工作一年之后,发现测试工作中越来越需要我们编程实现一些小工具辅助测试。编程又回到了我的工作生活中,不过这次我换了一门语言——Java,因为当时公司里面一位前辈给我安利了 Java 的种种好处,有各种现成的工具库,可以快速解决实际中的问题。凭借着在学校时学 C 语言掌握的一些编程基础概念,比如循环、分支、条件、变量等,再配合 Java 中的工具类,我真的将 Java 用到了工作中,这使得我对掌握编程技能重新有了信心。
  到了 2014 年,软件测试自动化已经成为趋势,我认识到要想继续在软件测试领域干下去,一定要掌握自动化测试本领。当时我调研了各种自动化测试工具、测试框架,发现大部分自动化测试工具和框架都支持 Java 和 Python 语言,而且大部分人推荐使用 Python 做自动化测试。从那时起,我就与 Python 结缘,当时我记得 Python 版本还是 2.6 版本,后来使用了很长一段时间 2.7 版本,在 2019 年我和我的团队小伙伴全面迁移到 Pyhthon3.6。相比于 Java,Python 更加简洁的语法,更加丰富的内置库和第三方库,使得我抛弃了 Java,钟情上了 Python 直到现在。
  现在,我使用 Python 进行服务端接口测试、进行 WEB 测试、APP 测试以及性能测试,开发一些测试工具及 Web 系统。Python 3.0 增加的更多新特性,使得我们编写测试代码更加如鱼得水。简洁高效的语法,使得我们可以用最少的代码完成工作任务。不仅仅是软件测试领域,随着人工智能的火爆,Python 语言也成为现在排名前三的热门语言。
  说了这么多,我想告诉大家的是,一定要学会编程,否则真的会被淘汰。之前学不会像 C、Java 编程语言,现在有了简单的 Python 语言,我相信你一定能学会,你看我都学会了,你也一定行的。我记得我当时学习 Python 使用的是一本特别短小的电子书,中文叫《简明 Python 教程》,这本电子书一直在更新,大家有兴趣可以看下。另外,国内比较好的网络教材是廖雪峰在他的个人博客上发布的 Python 教程。纸质书我看过两本,一本是《Python 核心编程》,这本书是基于 Python2 写的,不过里面的核心内容现在也不过时,另外一本是《Python Cookbook》,这本书也有电子版。 1.5 数据结构与算法
  数据结构和算法可以说是我的几次面试碰壁, 才使得我下决心去攻克的。如果去 BAT 这样的大厂求职,数据结构和算法,面试时一定要考的。因为我不是计算机专业,所以在学校里面是没有学过这门课的,我是在工作后,在各种招聘网站的招聘信息中知道这门知识的。
  几次面试碰壁,驱使我有了系统学习一下数据结构和算法的想法,可是并没有找到好的教材,讲授这方面知识的网络课程也不多,我想也可能是由于讲起来太难吧。看了看大学里面使用的教材,感觉都比较晦涩难懂,所以一直没学会。
  但是我平时一直留心收集这方面的学习材料,直到有一天,我遇到一本书叫《图解算法》,让我顿时眼前一亮,里面丰富的插图,细致的讲解,让我花了一周的时间看完后,大呼过瘾。我想有的时候,学习就是这样,只要你一直坚持不放弃,终会有那么一刻让你顿悟,这一时刻可能是遇到一本适合自己的书,也可能是遇到一个高人给你指点了一二。这本书让我对学会数据结构和算法大大增加了信心。另外一本数据结构和算法书也很不错,书名是《大话数据结构》,也推荐大家看看。
  再后来,2019 年时候极客时间出了一门课程叫做《数据结构与算法之美》,课程一出来,我就订阅了,在 2019 年一年中,我大致看了 3 遍。第一遍特别痛苦,第二遍好点,第三遍时我把学习笔记整理到了我的博客上。目前这门课已经累计近 8 万人订阅,我从中确实学会了数组、链表、栈、队列、散列表、树、堆常用的数据结构及其上的算法,还学会了递归、排序、二分查找、字符串匹配和哈希算法这些思想,学完之后真的感觉我脑袋好像变聪明了。
  现在,我平时会在 Leetcode 网站刷刷题,巩固一下所学。通过学习数据结构与算法,使得我对 Python 和 Java 的一些底层原理也有了更深刻的了解,我的编程能力也得到了进一步的提升。所以,很多知识是相通的、相互辅助的。 1.6 架构知识
  2016 年加入蔚来汽车参与车联网系统测试,伴随着微服务架构的转型,对测试策略和方案也提出了前所未有的挑战。各种服务变的越来越小,变的越来越多,服务发现、网关、监控体系、新的 CICD 流程等各种名词和应用,让我突然感觉自己的知识储备不够了。
  在微服务下,准备测试数据、测试解耦、定位和排查问题,与之前的单体应用完全不同。这时,我打算深入了解一下微服务,解开微服务的面纱,探寻微服务下服务端架构的全貌。由于架构因公司而异,因业务而变,看市面上的经典架构方面的书籍可能不太高效,所以我从公司内部的微服务架构出发,了解什么是服务发现,如何做服务发现,网关的作用和价值,微服务下的监控体系如何运作。对这些有一定了解后,作为极客时间的重度用户,我在极客时间上订阅了一门课程《微服务架构核心 20 讲》,这门课从理论到实践,介绍了微服务关键问题。通过这门课程让我对微服务架构有了更加全面、清晰理解。
  你可能会问了,作为软件测试工程师,有必要了解架构知识吗?我觉得非常有必要,因为只有深刻理解了服务端架构之后,你才能设计出合理的测试策略,才有办法解耦服务间依赖,才能针对性的进行测试数据准备,出了问题才能够定位是网关的问题、还是服务发现的问题、还是逻辑代码的问题,你才能理解线上报警意味着什么问题。
  在微服务时代,架构知识也是软件测试工程师需要掌握的基础知识。 2.专项测试技能
  我为什么把各项专项测试技能称为招式呢?因为我觉得他们都是套路。不管是服务端测试、WEB 测试、APP 测试还是性能测试,他们的基本套路是一致的:准备测试数据、搭建测试执行环境、执行测试、校验结果、产生测试报告。
  他们的不同点只是使用的测试工具不同,比如服务端测试 HTTP 协议时,使用使用 request 这个 Python 库,WEB 测试使用的是 Selenium,APP 测试使用的 Appium,性能测试使用的是 Jmeter 或者 Locust。
  这些不同的工具也有很多共同点,比如进行 web 自动化测试的 Selenium 和进行 APP 自动化测试的 Appium 都是基于 webdriver 的,他们的使用大同小异。
  下面,我将这些套路拆解开了给大家看。 2.1 测试基础
  不管是手动测试还是自动化测试,测试工程师的基础工作都是一样的,都要了解软件研发流程,都要编写测试用例,准备测试数据,提交并分析 BUG。
  在软件研发流程中的不同阶段,要及时和完整输出测试工作的产物。通常的敏捷软件研发流程是:需求评审——>方案讨论——>工作排期——>提测迭代——>版本发布——>总结回顾。软件测试工作对应的各阶段产物应该是需求分析、测试用例、测试计划、执行测试、测试报告、测试总结与分析。
  在设计测试用例时,一方面要根据产品的功能需求分析和提炼出测试用例,另一方面也要根据系统的架构设计从技术层面设计测试用例。
  测试数据准备,需要灵活采取多种手段,常用的手段主要有: 基于 GUI 准备测试数据 基于 API 准备测试数据 基于 DB 准备测试数据 基于 MQ 准备测试数据 基于第三方库准备测试数据 综合运用上述方法生成测试数据
  准备测试数据的时机也需要根据实际情况选择在测试执行时或者测试执行前准备。创建耗时比较长的测试数据,不需要经常变动的测试数据,最好提前创建,对于那些经常变动测试数据,最好在测试执行时创建,执行完成后要及时删除测试数据。
  BUG 作为测试工作的一项重要产出,一定要完整、明确提供 BUG 信息,并对 BUG 做出一定的分析,以便开发人员能够更快的定位产生原因和解决 BUG。一个优质的 BUG 应该包含:明确标题、优先级、所属模块、是否必现、重现步骤、必要的日志或者截图,BUG 的原因分析等信息。 2.2 自动化测试基础
  要想开展自动化测试,有三个基本技能。第一,要掌握一门编程语言;第二,要掌握一种单元测试框架。第三,要掌握一种测试报告框架。
  自动化测试,涉及到编写脚本、开发工具,需要掌握一门编程语言才可以。目前软件测试领域常用的编程语言有 Java 和 Python,大家可以选择任意一种来掌握。
  除了编程语言,我们还要掌握相应的单元测试框架,Java 中常用的单元测试框架是 TestNG,Python 中常用的单元测试框架是 Pytest。单元测试框架的价值在于,帮助我们管理测试用例、执行测试用例、方便进行测试参数化,进行断言和输出测试结果。有了这些功能后,我们只需要关注我们测试代码的逻辑编写就好了,可以大大提高开展自动化测试的效率。
  对于软件测试工作来说,测试报告是非常重要的工作产出。一个漂亮、清晰、格式规范、内容完整的测试报告,既是测试工作的产出,又能够减少开发人员和测试人员的沟通成本。目前,市场上特别流行的开源测试报告框架是 Allure,它可以方便的与各种测试框架集成,只需要很少的定制步骤,就可以产出漂亮的测试报告。我之前曾经写过一篇关于 Allure 与 Pytest 集成的博文《用 Pytest+Allure 生成漂亮的 HTML 图形化测试报告》,感兴趣的可以参考。 2.3 代码级质量保障
  代码级质量保障工作,主要是从业务代码静态审查、单元测试角度来执行的。我们知道 BUG 越早发现修复的成本越低,发现的越晚修复的成本越高。因此我们需要在代码编写、提交代码和编译阶段进行代码级的质量保障。
  保障代码质量的一种通常做法是 Code Review 和代码静态扫描,发现代码的缺陷、不符合规范和难于理解地方。开发人员要根据 Review 的反馈和静态扫描的结果,修改和完善代码。
  另外,编写单元测试也是保障代码质量、更早发现软件 BUG 的常用手段。高覆盖率的单元测试往往能提高代码的质量,会有越少的 BUG 在测试工程师测试阶段被发现。
  重视软件质量的团队,一定是重视 Code Review 和单元测试的团队。这样的团队往往能高质量、及时的交付软件。
  代码级的质量保证工作,往往是开发人员来负责,作为测试工程师,可以考虑提供好用的测试数据准备工具、测试环境搭建工具,让开发人员更好的完成自测。 2.4 服务端测试
  服务端测试常见的是 API 测试,也有一些非 API 的服务测试。对于 API 测试我们需要拿到 API 文档,按照 API 文档的描述,调用 API 并校验 Response。对于非 API 的服务端测试,往往是需要根据业务逻辑通过其他手段输入测试数据,并检查服务处理后的结果。
  有的时候,如果拿不到 API 文档或者不清楚服务内部的逻辑,就需要通过抓包、和开发人员沟通、查看业务源代码等方式,明确 API 或者服务的逻辑信息,再进行针对性的准备测试数据、设计测试用例。
  对于服务端测试,发起测试的手段有 Postman、Curl 或者通过编写代码,通常来讲,试验性的查看接口是否能通,会使用 Postman、Curl 这类工具,但是为了更加全面、能够方便与 CI 流水线集成,我们更加推荐使用编写代码的方式发起测试。
  服务端测试的检查点,我们通常要求对响应结果,以及数据流过的所有环节,包括数据库、kafka 等进行校验,这样做的好处是,一方面能够强迫我们要对每一个接口或者处理流程做到心中有数,在服务出现问题时,能够很快的定位到问题所在。另外一个方面,当测试用例执行失败时,也能很快定位失败的位置,提交 BUG 时,就能够很快的给出 BUG 的出错的原因。
  根据现在流行的菱形结构测试体系,服务端测试要尽量做到全面,要有更高的测试覆盖率。 2.5 持续集成
  我们自动化测试用例,不是为了能够在本地电脑上偶尔跑一次,而是为了能够将自动化测试集成到公司整个 CICD 流水线中,持续地进行测试,提高研发部署效率。因此我们的自动化测试,一定要接入到 CICD 流水线。
  现在很多公司的 CICD 流程都是围绕 Jenkins 来开发的,对于测试工程师,要了解 Jenkins 的工作原理,能够搭建 Jenkins 集群,熟练掌握 Jenkins 的 Pipeline 语法,定制测试流程。
  测试工程师还要能够维护好运行自动化测试使用的 Jenkins Slave 集群,目前大部分公司的 Jenkins slave 采用的是虚拟机方式,不过随着容器云技术的普及,也有部分公司采用 Kubernetes 集群作为 Jenkins slave。对于虚拟机方式,测试工程师需要编写脚本,快速初始化 Jenkins slave 并加入到 Jenkins 集群,对于 Kubernetes 方式,测试工程师需要编写满足特定测试需求的 kubernetes 的 Pod 文件。 2.6 WEB 测试
  Web 测试是对基于浏览器的 BS 架构的服务进行测试,通过操作浏览器来检查服务是否满足需求定义。要想做好 Web 测试,需要掌握的知识非常多,要了解 HTMLCSS 以及 JavaScript 的知识,还要了解浏览器的工作原理,能够使用浏览器的开发者工具诊断问题、分析性能。
  Web 页面不稳定、或者在开发初期的项目,通常采用手工测试方法。对于回归测试、UI 长期稳定的页面展开自动化测试。
  如果要做自动化测试,还需要掌握 Selenium 的使用,能够对浏览器元素进行定位和操作,能够使用 Page Object 模型封装页面元素,提高自动化测试用例的可维护性,能够通过 Selenium Grid 进行多浏览器的并行测试提高测试效率。
  将自动化测试脚本与单元测试框架融合,并与持续集成流水线集成到一起,才能发挥 Web 自动化测试的真正威力和价值。 2.7 APP 测试
  APP 测试是目前测试工作中最常见的一个领域,公司可能没有服务端测试、没有性能测试,但是一定会有 APP 测试,APP 作为直接接触用户的产品,软件质量保证工作尤其重要。
  APP 测试比较常见的包括 Android APP 测试、iOS APP 测试、H5 测试、Hybrid APP 测试以及小程序测试等。通常的测试策略是,大部分的手动测试配合部分场景的自动测试。
  APP 的自动化测试方案与 Web 自动化测试方案基本相同,不过使用的测试工具是 Appium,Appium 可以支持 Android 和 iOS 客户端的测试。通过 Page Object 思想,将 APP 页面上的控件进行封装,可以提高测试的可维护性。借助 Selenium Grid 可以进行多机并行测试提高测试效率。
  为了提高测试设备的利用效率,可以搭建 STF 平台,集中统一管理所有的测试设备,所有的测试人员可以通过浏览器来共享这些设备。并且这个平台还可以与自动化测试结合,将其作为一个私有云测平台,进一步提高测试效率和测试覆盖率。
  对于 APP 测试的专项测试也是 APP 测试的重要工作,专项测试包括性能测试、稳定性测试等。目前也有很多测试工具支持这些专项测试,当然也可以根据需要自己开发测试工具。 2.8 性能测试
  通常说的性能测试,基本都是指的服务端的性能测试,伴随着用户的增多,服务端的性能和稳定性至关重要,对其进行性能测试是必要的。
  性能测试通常是借助一定的手段,模拟大量用户的并发请求,观察服务端的响应时间和 QPS 等数据,以判断服务端性能瓶颈,并对其进行优化或者扩容。性能测试通过需要借助测试工具来展开,主流的性能测试工具包括 Jmeter、Locust 等。
  在进行性能测试时候,通常需要大量的机器组成集群一起向服务器发起请求。因此性能测试集群的搭建,在性能测试工作中非常重要。在早期我们通常是申请高配置的虚拟机来组成性能测试集群,不过这种方式有诸多弊端,一个是代价昂贵,二是初始化比较麻烦。所以,伴随着容器云的发展,现在越来越多采用在 Kubernetes 集群中构建性能测试集群。
  性能测试往往需要准备大量的测试数据,所以往往需要编写脚本和工具来自动化生成测试数据。对于测试人员的代码编写能力要求很高。
  收集性能测试结果,是性能测试的关键一环。我们需要得到性能测试结果并对其进行分析。目前常用的收集方式是通过监控系统,比如 falcon、Promethus 等,对服务进行业务监控、资源监控,监控系统会根据各种指标绘制直观的图表,非常便于我们分析。
  对于性能测试结果的分析,真的是一个高深的技能。在这个环节会用上前面介绍的计算机基础(内功)部分各个学科的知识,需要从代码层面、数据库层面、网络层面、操作系统层面找出性能瓶颈的根本原因。这一点非常难,需要多年的实践经验。 2.9 测试平台开发
  测试平台的目的是更好地辅助测试工作,通常我们会为测试工作开发一些测试数据生产平台,Mock 平台、测试执行管理平台、测试报告管理平台。
  测试数据生产平台,作为准备测试数据的统一平台,集成了各种测试数据准备方法,对外提供 Restful API,所有测试数据使用方,可以通过唯一的平台和 API 产生自己所需要的测试数据。
  Mock 平台,方便对依赖服务进行 Mock,以便与依赖服务解耦,专注于本模块、本服务的测试,提高测试稳定性。
  如果需要,可以将所有测试执行集成到一个测试执行管理平台上,这个平台对接 Jenkins,在平台上方便进行测试 Job 的创建和配置,简化测试执行流程。
  测试报告平台作为测试报告的存储、分析和展示平台,可以查询历史上所有测试的测试结果。对被测试服务的历史版本质量进行分析。
  总之,测试开发工作在软件测试工作中,将会占据越来越大的比例,测试工程师要掌握一定的开发技能,比如借助常见的开发框架 Django 或者 Spring Boot,配合前端框架 Vue.js,进行测试平台开发是性价比比较高的方案。 3. 综合素质
  前面介绍了计算机基础( 内功)和专项测试技能(招式),为了更好地做好测试工作和更好的职业发展,一些基本的素质也是非常重要的。
  首先,我觉得测试工程师要保持学习热情,锻炼学习方法,提高学习能力,能够在需要的时候快速学习新的技术。
  测试工程师作为研发团队的一份子,具备良好的沟通表达能力,做好与产品经理、开发人员之间的沟通,及时预警潜在风险,展示项目质量,推动和协调团队解决问题。
  非常建议大家及时总结所学知识,养成写博客的良好习惯,大家都说输出是最好的输入,在写博客进行输出的过程中,其实是对自己的知识进行加固的过程。 4. 总结
  总之,软件测试工作是一项对综合能力要求非常高的工作,对于测试工程师要求的技术面特别广,既要懂得操作系统、计算机网络、数据库、编程和算法等基础知识这些内功,又要掌握多种测试领域的测试套路,还要具有一定的开发能力。既要懂软件测试,还要了解 DevOps。

有智能风扇的夏天才完美,智米直流变频落地扇3黑金版体验分享哏都的气候也特别哏,春秋两季作为最美最舒服的季节,总是嗖的一下就过去了,然后就是漫长的酷暑和严寒。转眼间已经临近4月下旬,过了五一假期,天津的夏季基本就算开启了。虽然空调WiFi西体积小性能强,intel猎豹峡谷NUC11迷你主机体验分享生活节奏快,工作生活压力与日俱增,家班不可避免另外众所周知的原因,网课也在过去的一年里进入我们的生活,并以迅雷不及掩耳盗铃之势普及开来,所以家里一台电脑的话很难满足目前的需求了,但Mesh组网破解多层大户型无线覆盖困扰,领势MX12600Mesh组网实战生活水平提高了,大家都在通过自己的努力不断提升改善自己的生活条件,包括衣食住行等诸多方面。房子对我们来说,是一种安稳的态度,是避风港,也是归宿,不管在外边有多忙,受了多少委屈,回到你真的需要戴森吗?网易严选轻羽无线吸尘器满足低预算清洁需求工作紧张,生活压力大,以地面清洁为代表的家务劳动成为打拼一天后的额外负担,如何省力高效地完成家务劳动,成为摆在我们面前的一个难题,这种情况也变相促进了无线吸尘器的飞速普及。与激增的不止于相机和镜头,这些细节让摄影之路更顺畅!我的摄影装备分享新年伊始,跟大家分享了一些自己这些年来的摄影相关装备,既是一个对过去的总结,也是一个对未来的希冀。总有小伙伴问我,真的单反穷三代吗?听到这样的问题,我都是异常坚定地告诉他,是的!但新姿势实力派腾讯ROG游戏手机5震撼发布2021年3月10日,新姿势,实力派腾讯ROG游戏手机5新品发布会线上举办,行业大咖人气主播电竞明星齐聚盛宴,与粉丝和网友热情互动,共同揭开新一代旗舰游戏手机的神秘面纱。由腾讯深度地面清洁去繁从简,被捧上天的添可芙万无线智能洗地机到底如何?娃从小在家就不爱穿鞋,穿着袜子在地上跑来跑去,虽然现在大了,但是拖鞋依然经常被遗忘,作为老父亲,很是无奈这种情况下,本着改变不能接受的,接受不能改变的的原则,老父亲只能选择尽可能让许妈是相对幸运的反而杜妈是相对不幸的我们现在可以确定的已经确定的消息是姚策和郭威确实错换人生28年,具体是抱错了,还是杜妈偷换了我们暂时还不得而知,从而说明暂时来说,许妈是受害者,杜妈也可能也是受害者(当然也可能是施长九的重要性江西为什么要支持长九高铁的建设?九江做为长江中游的节点城市,也是江西唯一的沿江城市,在省内是唯一,但放到长江沿线,九江要在沿江城市中脱颖而出,交通建设是基础。九江之所以能在和安庆黄让清洁变得更简单,为更懒而生,石头扫拖机器人T7S集尘套装为什么要买扫地机器人?因为它吸地的最干净吗?不是!因为它能边吸边拖吗?不是!那是因为什么?因为它能解放双手!生活不易,更要懂得抓大放小,让自己从纷繁复杂的琐事中抽身,才有精力去做更家用NAS就像玩手机一样简单,绿联私有云DH2100体验分享移动互联以迅雷不及掩耳盗铃之势普及和大数据的飞速发展,一方面让我们享受到了科技发展的红利,另一方面也给我们提出了新的问题庞大的数据,该如何处理?如果说以前关于数据的问题仅仅面向少数
特斯拉车主晒ModelY后台电池数据行驶1。2万公里,电池衰减2。8日前,有特斯拉车主分享了通过Dynotest状态下,可以查看特斯拉后台信息(具体教程附文末)的方法,有不少车主晒出了电池损耗情况。有车主表示,自己的长续航四驱版ModelY目前行驶车主驾车特斯拉自动抢方向盘踩刹车网友不要忘谁是主子在自动驾驶体验方面,特斯拉目前的口碑普遍要比其它车企强出不少。不过,也有车主表示,特斯拉的自动辅助驾驶比较霸道,会强行干预自己的驾车操作。日前,有汽车博主上传视频表示,车主在驾驶特微信提现收的手续费太高,又必须要存银行,你们怎么解决?目前微信提现手续费0。1,教你三招最新微信提现不用一分钱手续费,解决大多数人的困扰,下面我就分享三招微信提现免手续费的具体操作。微信提现免手续费方法一首先打开我们的微信首页,点击微网约车司机自述钱没赚到,老婆还跑没了在2016年,网约车司机成为炙手可热的职业,相比于其他行业,网约车靠着平台的补贴,每月拿着上万的收入,工作时间自由,处处不受限,在当时这是一个美好的职业。很多司机开始在滴滴滴答出行2021年最值得购买的7款旅行无人机1。大疆MavicMini2DJIMavicMini2无人机DJIMavicMini2是我最喜欢的旅行无人机。DJIMavicMini2于2020年11月发布,保持其前身的卖点,高比亚迪8月全系销售67630辆新能源汽车占比约90!9月3日,比亚迪汽车正式对外发布了2021年8月的业绩报告!相关数据显示,比亚迪汽车的乘用车业务在2021年8月份总共卖出汽车67630辆(同比增长90。5环比增长18。7)。其中恒驰汽车夏季测试高调曝光,真的来了吗这两天,恒驰13567夏季测试收官的视频热度不亚于车展恒大的做法依旧那么豪横,别人路试车辆都是这样的,生怕提前泄露。而恒驰这样的车,拍成宣传片迫不及待的广而告之。恒驰汽车的发展历程8月新能源销量出炉蔚小理变为理小哪新势力座次再发生更迭理想汽车千里走单骑仅凭1辆车即将破万小鹏汽车紧随其后,仍居第二位,目前为止一共P7G3iG3三台车看来之前出现的试驾自动驾驶演示爆气囊没啥影响哪吒汽车踩上风火轮极狐阿尔法S长近5米,后排自带双人床,标配加热座椅从目前汽车市场发展来看,新能源车的市场份额所占比例不可谓不高,当然这一领域的市场竞争也越来越激烈,现在各大国产车企都试图抢占更大的份额,并采取了发布高端新能源品牌的战略。例如吉利汽小鹏P7超长续航智能轿跑购车享补贴大礼包!小鹏P7作为小鹏第二代智能汽车,具备四个字方面的领先的能力P7的智能驾驶更适应中国本土化路况和驾驶习惯,具有高速自主导航驾驶和超级记忆泊车功能智能交互小P可实现一次唤醒多次对话随时华为mate40Pro5天前华为手机5G时代,每款永恒经典不容错过Mate40pro正面采用了一块6。76英寸的双曲面屏,分辨率27721344,支持90Hz刷新率240Hz触控采样率,不仅观感细腻,色