全栈软件测试能力培养(一)

《开学第一课》的全栈软件测试能力培养(1)?

《开学第一课》的全栈软件测试能力培养(2)技术和分析能力

《开学第一课》的全栈软件测试能力培养(3)管理、思维能力和软实力

现在人工智能都要走入小学生课堂了,好学好动又好问的软件测试师们,再不搬板凳学习,就要Out啦。

近期拜读软测界大师朱教授的关于软件测试能力图谱的文章,无论深度还是广度,都干货满满!

全新亮相:软件测试能力图谱

AI测试:让软件测试变得聪明伶俐(上)

AI测试:让软件测试变得聪明伶俐(下)

朱大师的软件测试能力图谱非常全面了,许多概念是高屋建瓴的,从基础到专项,从技术到思维,从业务到管理,进行了全方位的剖析与提炼。受其启发,依据此蓝图,本文在大数据、人工智能等专项测试方面做了一些小小的拓展,梳理了一份“全栈软件测试能力培训”的思维导图。

为直观起见,先来看这张层次框架图,是个总体框架:

总体来说,软件测试能力从内到外分为三个层次:基础知识+核心技能+外延能力。

基础知识包括前期课程的知识储备和软测基础知识;核心技能是测试人员最重要的部分,包括测试设计能力、测试技术能力、测试分析能力和测试管理能力;具备了这些能力后,外延能力包括思维能力和软实力,才能真正得以展现和发挥作用,而训练有素的外延能力又可以反过来有效的提升测试的核心技能。

全栈软件测试师,要掌握六大能力:测试设计能力、测试技术(开发)能力、测试分析能力、测试管理能力、测试思维能力和软实力。

整理成思维导图,如下。

还是乱如麻看不清,接下来会本文逐个主题展开

1.前期知识储备

一直以来数学,在测试领域仿佛很少被提及,但是现在时代不同了,随着大数据、人工智能、中大型软件、高密度持续交付快速更新管理的涌现,用严谨的数学进行科学的分析和管理将是软件测试领域非常重要的课题。

 

离散数学对于软件测试是必学课程,数理逻辑、代数结构、组合数学、图论对于后续的软测设计能力和管理能力的培养不可或缺。

形式化分析,是将语言描述性的内容进行公式化数学化。许多学者都在致力于研究,如何把需求进行形式化分析,需求一旦能完全用严格的数学语言表示出来进行数学推导和求证,那么后续的开发、测试和维护都可以在一个非常严谨的监控下有序完成。然而时至今日,这件事的完全实现,仍然是一个梦,也许随着AI的到来,分布式表征(Distributed Representation),应用在形式化表示上,可能是一种可行的思路。另外学习形式化分析,对软件和测试建模的逻辑思维很有帮助。

算法学习,是针对人工智能(AI)的前期准备。现在我们国家准备把人工智能纳入小学教育!“过去10年我们在忙于打造移动为先的世界。未来10年,我们将步入AI为先的世界。”(谷歌CEO Sundar Pichai,2016年10月),从亚马逊到Facebook,再到谷歌和微软,全世界最顶尖、最有影响力的技术公司都将目光转向了人工智能(AI)。作为一名准备迎接挑战的测试人员,各种与AI有关的算法的学习是必备。

数理统计中的数学期望、大数定理、似然估计、假设检验、马尔科夫链(马尔科夫链是怎么预测未来的)等等理论,在大数据测试、缺陷分析与预测、AI测试、可靠性分析等软件测试分析能力方面都将大有作为。

软件测试的前续课程是软件工程毋庸置疑,但是随着软件测试在软件开发流程中的不断左移(Left-Shift),软测与开发的持续互相渗透和融合,单单软件工程课程不足以支撑软件测试的知识储备了,软件体系架构、软件建模和设计模式,也是软测人员必备的课程。

数据库课程一直是测试人员非常重要的前续学习,了解数据库的运行原理,了解代码与数据库之间的层次结构,能有效的帮助测试人员深入的功能用例设计、缺陷定位和数据库测试等。

网络原理的是任何一种类型的软件测试人员都必须了解的,无论从事性能测试、安全测试、功能测试、大数据测试等,这类课程可以帮助测试人员理解中间件概念,了解Web软件、理解接口测试、更合理的设计和应用安全测试、性能测试等。

还有一门,是朱教授的能力图谱中提到的心理学,这个很重要。本人深有体会,测试工作做得好不好,拼到最后,为人处世(沟通与协作)占很大的比重。

常常我在上课的时候会问学生,测试人员经常遇到的问题:“如果你提出了一个你认为很重要的Bug,开发人员不以为然,甚至不改!你做为测试人员应该怎么办?怎样才能让开发人员修改呢?”(欢迎您留言分享您的应对方法。

2.软件测试基础知识

基础知识部分,都是传统的软测知识体系,这里就不作详细展开。现在白盒与黑盒测试用例设计技术也有相融合的趋势,重要的是要灵活运用集合论、边界分析和路径分析的图论、组合数学等。

测试策略,可以增加启发式测试策略、探索式测试等快速测试方面的知识内容。测试策略是在测试人员培训和工作中很容易被忽略的一个部分。

3. 软件测试设计能力

测试设计在整个测试过程中,应该是重中之重的,直接决定测试质量,进而可能会影响整个测试工作乃至开发工作的进程。

测试的设计工作多在执行测试之前或者测试执行中进行,主要分成两个部分,顶层设计和用例设计。

顶层设计包括:测试架构设计、测试策略的制定和测试计划的编制。

专项测试领域的设计是各不相同,如:性能测试、安全测试、大数据测试和人工智能测试等各自需要设计不同的测试架构、测试平台、测试策略和独立的测试计划。

大数据测试功能性测试主要分成几个阶段,需要针对不同阶段分别进行不同的设计活动:

  1. 数据输入验证阶段(pre-hadoop)--测试数据源加载到HDFS,对数据装载一致性、准确性、正确性等方面进行测试。
  2. 数据输出验证阶段(MapReduce)--分割后的数据,多节点的正确性,单节点的业务逻辑准确性,键值对的准确度,以及输出文件与期望的吻合度等。
  3. ETL测试--转换规则测试、数据期望测试以及数据完整性测试等。
  4. 分析报告验证--生成报告的正确性和与需求吻合度测试。

大数据测试还包含性能测试(数据摄取和吞吐量、数据处理速度以及子功能的性能)、容错性测试、可用性测试、扩展性测试、稳定性测试、部署方式测试、数据一致性测试和压力测试等等

人工智能测试,还是一个崭新的领域,毕竟人工智能涉猎的范围非常广,相同的输入也可能会产生不同的结果,与传统的测试有许多不同的地方。图灵测试设计,常常用来作为AI的与人“交流”程度的测试;对抗测试(多维测试设计),与AlphaGo对战的李世石,就是一个很好的测试用例,而在其他智能软件测试中,如何能设计与智能对抗的用例呢,这就需要用到多维的设计思路,也就是同样的输入可能有多种不同的输出;算法测试:无论是深度神经网络还是卷积神经网络,人工智能必然是采用某种算法的迭代或者加权筛选的过程,那么最直接的测试就是对算法的测试设计,对算法学习过程的测试设计。

测试用例的设计,则主要分成常规测试用例设计(普适性的设计技术)、根据业务需求的用例设计和专项测试用例设计。

(未完待续)

时间: 2024-08-07 01:28:02

全栈软件测试能力培养(一)的相关文章

如何成为一名全栈工程师?

我是学计算机专业的, 在刚大学的时候,还不知道什么是全栈,反正什么都学.我大学关于编程学的课 程有c.汇编.linux.JavaSE.嵌入式等: 我一直对c++很憧憬,觉得学c++都大神,在大三的时候,要三选一:c++ .c#,.Java.不过我报课的时 候网速不行,没报上c++,报上了java.那时候c++很抢手, 不过上课一段时间后有人就后悔了,转了 Java或者C#.我当时也是了解Java入门简单, 以后工作也好找,就安安心心的学Java了.当时是2012年 ! 大学生活总是过得很快,很充

全栈工程师?

作者:肖文峰链接:https://zhuanlan.zhihu.com/p/20091607来源:知乎 最近参加一个技术社区活动,在讨论到"CTO的技术深度和广度哪个更重要"的话题时,我想起社区里面常常提到的"全栈工程师"的事情,于是表达了一些观点.临场未必能够清晰表达,所以下笔,希望能够引起一些讨论,避免年轻工程师误入歧途. 长期以来,社区就有人在提"全栈工程师",还有一些公司直接挂出名为"全栈工程师"的招聘职位.那什么是全

Web全栈工程师修养

全栈工程师现在是个很热的话题,如何定义全栈工程师?在著名的问答网站Quora上有人提出了这个问题,其中一个获得了高票的回答是: 全栈工程师是指,一个能处理数据库.服务器.系统工程和客户端的所有工作的工程师.根据项目的不同,客户需要的可能是移动栈.Web栈,或者原生应用栈 深以为然,所以,全栈工程师应该分为Web全栈和App全栈.恰巧最近看了本有关Web全栈工程师的书,记录下其中一些观点. 笔记 应该从能力和思维方式两方面来判定一个人是否是一个合格的全栈工程师. 对于一些经理来说,宁可雇佣多个可管

Nodejs系列课程,从入门到进阶帮你打通全栈

本课程由社区博主:Scott 编写 本文通过提供给大家学习的方法,以及我个人录制的一系列视频,帮助你更快更好的学习 Nodejs,了解前后端的 HTTP 知识,以及配置和使用阿里云 ECS 来部署你的 Nodejs 项目,成为那个具有争议的全栈开发工程师. 要不要学习 Nodejs 如果你是前端开发工程师,你本地电脑上不可避免的要安装 Nodejs,作为工具也好,作为服务器也好,要帮助你做掉很多又脏又累的事情,比如 less/scss 的编译,ES6/7 到 ES5 的转换,Javascript

关于全栈测试

摘自云老大的文章 为什么需要全栈测试工程师 需要!非常需要!其实从小白一开始就提到测试工程师本来就全能的.因为在测试这个角度,放大了是质量这个角度,一切能够提高质量的工作都是测试人员应该涉猎的.就好像本来犯法就是应该惩罚的,这个还专门强调一下抢劫警车是犯法的一样,搞得不抢劫警车不犯法了. 在最近的这几年,测试看起来在蓬勃发展,但是其实整体的素质和能力却每况愈下.一方面是低端的没有突破,另一方面却是测试技术化.这里并不是说测试技术化不好,而是很多测试人员在为了技术而学习技术,并没有解决质量问题.更

“全栈”工程师 请不要随意去做

今天我来给大家说说 "全栈工程师" 的事儿. 写这篇文的背景原因: 很简单就是最近越来越多的人想做[全栈工程师],他们的目标就是全栈,他们才入行短短1-2年,甚至刚从培训班出来:我的目标是做全栈,我啥都要学会,啥都会写,这样我就是大牛了,可以挣大钱,就算创业,我也不用招那么多人,一个人搞定一个产品,融资上市 ,CEO白富美,balabala... 我给他的回复是: 去你xx的,你连JS 数组和对象用法都搞不清,抄几个效果,看几个视频教程摸索摸索就要做万能人了? "全栈&quo

全栈工程师

关键开发技能(硬实力) 一.Git/GitHub,必须掌握如何使用Git来掌握和分享你的代码.Git作为关键技能的第一条,是因为它不仅仅是一个代码管理工具,更是一种推荐的工作方式.它使你能在任何地方进行开发,高效地管理任何大小的项目,通过Git还能与其他团队成员进行分布式工作,大大提升工作效率. 二.至少一门编程语音,JAVA.PHP.C#.Python.Ruby.Perl等,因为大多数核心业务处理都需要这门语言来写.不但要掌握这门语言的语法,还需要非常熟透如何基于这门语言进行项目的架构.设计.

快乐死我了,怎么样成为一个全栈程序员(Full Stack Developer) good

受苏格拉底大神的启迪,我也来谈谈全栈.禅师:成为全栈工程师,这个问题等于如何成为全才,有可能吗码农:有可能,不过可能性比较低,因为达芬奇这类人毕竟是百年一遇的奇才.不过,因为我热爱这个行业,也有一定天赋,所以只做好软件全栈的话我想还是可能的禅师:你玩过三国志这个游戏吗码农:我还开发过禅师:你喜欢什么样的武将,诸葛亮怎么样?码农:不错,虽然他武力只有20,不过智力有100,不过游戏出战不是单打独斗,我可以给他搭配武力100,智力20的吕布,在战场上所向披靡禅师:对于一个武力65,智力65的武将,你

全栈JavaScript之路( 二十四 )DOM2、DOM3, 不涉及XML命名空间的扩展

(一)DocumentType 类型的变化新增三个属性: publicId,systemId,internalSubset(内部子集) <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" [<!ELEMENT name (#PCDATA)>] > 通过, document.doc