测试模型无处不在,你只有真正理解了“什么是测试架构”、拥有了测试建模能力,才能成为名副其实的测试架构师。

众所周知,“架构(architecture)”一词来源于建筑,具有 “建筑学、体系结构” 等含义。建筑学的内涵要比体系结构丰富得多,但其核心往往关注其造型和体系结构的设计,综合考虑环境需求和使用者的需求,进行空间上合理的功能分配,满足安全、经济、适用、美观等需求,达到人和环境的和谐。

软件体系架构是一个比喻(或称之为“系统隐喻”),类似于建筑物的体系结构,主要指软件系统的基本结构及其设计规范,软件体系架构包括软件系统构成元素及其之间的关系、元素和关系的特性等。例如,一个系统由数据层、数据访问层、服务层、业务逻辑层、展示层等组成,每个层次都是系统的构成元素,各个元素之间不仅有层次关系,而且是通过接口连接起来,以降低系统的耦合性。如果需要提升系统的可靠性,系统还要增加冗余组件。

软件架构也是项目早期必须做出的设计决策,即从体系结构的角度思考软件的核心组成、决定什么是重要的,并能使这些体系结构元素处于良好的状态。而软件架构师是能够识别哪些元素是重要的,能识别出哪些元素不加以控制,可能会导致严重的问题。如果在软件开发早期没有做出基本结构的正确选择或设计出良好的结构,后续软件系统会存在某些质量问题而不得不进行修改,而且这种修改会付出高昂的代价,导致功能的实现更慢、缺陷也更多。所以,软件架构及其设计是非常重要的。

那么软件测试中存在架构或基本结构吗?即软件测试中是否存在一些测试元素及其关系,我们需要研究这些元素、关系,从而能提高测试的效率和质量?其实是存在的,其中一个显著的例子就是自动化测试框架或测试平台的架构,如图1案例所示,虽然它基本符合软件架构的特性,但同时也要满足软件测试的特定需求。所以,软件测试平台的架构不能单单看作是一类通用的软件架构。

图1 阿里云测试平台架构TestMaster示意图

除了自动化测试平台之外,面对一个具体的测试项目,也存在着一系列的测试建模:

  • 测试需求建模(有时也包含了测试设计)——众所周知的基于模型的测试方法(MBT),如相对简单的分类树、黒盒测试方法(如图2所示)、因果图、状态树、有限状态机等,以及更复杂的建模,符号执行、模型检验等,如图3所示;

  • 测试方案的设计,包含着如何识别出测试项、测试风险、测试方法等众多测试元素,以及确定它们之间的关系;

  • 测试用例的结构,如在基于脚本测试中,如何分解测试目标、如何构建测试集(test suite)、如何组织好测试用例(含层次划分)等。

  • 探索式测试的设计,如何将测试目标分解为Mission,再将Mission分解为Session。

  • 自动化测试脚本的设计,如何对测试脚本的封装、层次划分等。

图2  黑盒测试方法抽象为模型

图3  符号执行模型示意图

软件测试离不开业务、更离不开开发,软件测试团队或相关人员需要和业务架构师(或业务分析人员)、产品经理和软件开发架构师进行沟通,参与需求评审和(技术架构和功能结构、UI等)设计评审,理解业务架构、产品结构和技术架构等(如果不了解这些内容,不要急,后续有详细讨论),从而更好地设计出测试方案,更有效地进行测试,如分层测试、精准测试、契约测试等都有测试建模的影子。这里也不仅仅是功能测试,还有性能测试、安全性测试和可靠性测试,像这些专项测试的结果分析,需要对系统的技术结构、产品结构有很深的理解,才能完成缺陷的分析与定位。更重要的是,一些非功能性的缺陷,甚至在技术架构设计评审时就能发现问题,而且这时修复设计缺陷的成本,会远远低于在系统的专项测试之后的修复成本。

测试模型进一步延伸,可以延伸到测试过程建模,如W模型、TMap等,这里给出敏捷测试的过程模型,如图4所示。

图4  敏捷测试过程模型


最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走

面试资料

我们学习软件测试必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

上面是我整理的配套资源,这些资源对于软件测试的的朋友来说应该是最全面最完整的备战仓库,为了更好地整理每个模块,我也参考了很多网上的优质博文和项目,力求不漏掉每一个知识点,很多朋友靠着这些内容进行复习,拿到了BATJ等大厂的offer,这个仓库也已经帮助了很多的软件测试的学习者,希望也能帮助到你。点击文末卡片扫码加入我的软件测试测试交流群,免费领取上方配套资源!群里也有同行大佬一起交流技术学习哦

如何成为名副其实的测试架构师?相关推荐

  1. 测试架构师的目标和价值

    网友邮件问我2个问题:测试架构师的价值怎么量化体现?能否用最少的词描述测试架构师对产品测试组支撑时最主要的工作目标是什么? 问题1回复: 你一切的活动提升产品线整体10%的的测试质量,10%的测试效率 ...

  2. 重读《从菜鸟到测试架构师》--黑色的盒子里有什么(中)

    上一章说到小艾在功能测试组开始了功能测试的学习,然而对产品知识.软件技能和客户意识有了一定了解的小艾,对整个测试依然有着不解之处,这时,导师为他深入浅出的解读了功能测试,导师是怎么解读的呢? 关于黑盒 ...

  3. 测试架构师10年经验分享:测试小工到资深专家必备这5项技能

    这两天一直在和朋友聊软件测试的发展:这一行的变化确实蛮大,从开始最基础的功能测试,到现在自动化测试岗位需求逐渐增多,测试架构师的岗位也随之兴起.我也在软件测试这行摸爬滚打了十多年了,正好有朋友问我:如 ...

  4. 重读《从菜鸟到测试架构师》-- 测试专家的第一步

    无论是大学毕业的第一份工作还是工作多年后重新入职新公司,我们都不可避免的会遇到上班第一天,在这第一天的时间里我们需要完成领设备.装系统等准备工作,当然,不可或缺的还有新人培训,这本书的第一章也直白地使 ...

  5. 重读《从菜鸟到测试架构师》-- 开发团队做的远不仅是开发

    上回说到小艾跟着导师修炼了一段基本功之后,也明确了自己的专业技能学习道路,却在几次转头的瞬间发现身边的每一个人都似乎在做着不同的事情,不是说好的一个团队嘛,为什么你做这个,他做那个呢?小艾还真是疑惑, ...

  6. 测试架构师需要具备哪些能力?

    目录 前言 为什么软件项目需要架构设计? 测试架构师需要解决什么问题? 测试架构师需要具备哪些能力? 测试工程师如何培养架构能力? 前言 相比于我们常见的研发架构师,测试架构师是近几年才出现的一个岗位 ...

  7. 测试开发,测试架构师为什么能拿50 60k呢需要掌握哪些技能呢

    这篇文章是软件工程系列知识总结的第五篇,同样我会以自己的理解来阐述软件工程中关于架构设计相关的知识. 相比于我们常见的研发架构师,测试架构师是近几年才出现的一个岗位,当然岗位title其实没有特殊的含 ...

  8. 【软件测试】资深测试聊一聊,测试架构师是怎么样的,做一名成功的测试工程师......

    目录:导读 前言 一.Python编程入门到精通 二.接口自动化项目实战 三.Web自动化项目实战 四.App自动化项目实战 五.一线大厂简历 六.测试开发DevOps体系 七.常用自动化测试工具 八 ...

  9. 关于测试架构师的解读

    1.什么是测试架构师 测试的发展主要是管理线和技术线 管理线:测试人员管理,项目管理,资源协调等 技术线:测试策略,技术规划,测试方法引入,自动化框架,自动化平台等 测试架构师更多就是技术线的带头人. ...

最新文章

  1. 几十条业务线日志系统如何收集处理?
  2. jq获取after和before伪类的content值
  3. SAP中采购订单状态与MRP的关系
  4. python bs4模块_python爬虫之Beautifulsoup模块用法详解
  5. 前端开发 常用用的静态服务器
  6. 32位hex转浮点 python_python——int()、hex()、oct()、bin()、float()数值类型转换函数
  7. Java 包装类 自动装箱和拆箱
  8. caffe不支持relu6_国产AI框架再进化!百度Paddle Lite发布:率先支持华为NPU在线编译,全新架构更多硬件支持...
  9. 高通发布两款耳机芯片:支持主动降噪和语音助手功能
  10. 【Antlr】cannot create implicit token for string literal in non-combined grammar xx
  11. SQL Server创建计划任务
  12. Ubuntu16.04安装PostgreSQL并使用pgadmin3管理数据库_图文详解
  13. android全息投影,超低成本手机全息3D投影制作教程
  14. java tuscany_Apache Tuscany Java 1.1发布
  15. 查看本地windows密码方法
  16. python提取图片中的文字自动填表,python提取图片中的文字并生成word文档
  17. windows配置代理
  18. Pytorch简单一览表
  19. birt 报表与润乾报表对比
  20. 学一点Wi-Fi:DPP(WiFi Easy Connect)

热门文章

  1. HTML中禁止自动完成和禁用输入法
  2. Enable multi-tenancy on ironic
  3. js海报制作操作步骤缓存思路求解?
  4. Loadrunner11录制含有Ajax请求页面的处理方法
  5. assoc php,PHP array_uintersect_assoc 函数
  6. underflow, overflow, approximation and rounding error
  7. BOM中的history对象和navigator对象
  8. 怎样成为一个PS高手
  9. 核芯物联Command ‘cle‘ not found错误处理
  10. 浅析Python文件操作