2021年快要过去了,展望2021年在软件测试和软件工程中有许多值得回忆的地方。
1.对自动化测试有了理性的认识。前几年,无论参加什么测试会议,都是提及自动化测试的。虽然没有说自动化测试是万能的,但是许多人都感觉到好像只要企业上了自动化测试,软件的质量就得到了保障,就不会有Bug出现。从2020年开始,我就发现人们对自动化测试有了理性的认识,深切的感觉到了以功能为主的自动化测试目的在于新版本发布,验证回归测试用例是否能够正确地运行;手工测试仍然是发现缺陷的主力军,对于新功能,新老功能结合的功能,还是需要大量的手工测试;以性能为主测试必须依赖于自动化测试工具,比如LoadRunner、JMeter、Gatling、Locust;以安全为主测试同时依赖于工具和手工,手工测试主要处理与业务相关的安全测试;而工具主要处理与业务无关的安全测试,比如XSS攻击、SQL注入等等。
2.对Agile与DevOps也有了理性地认识。同自动化测试一样,大家也逐渐意识到了Agile与DevOps不是银弹。比如在嵌入式测试领域,小步快跑的持续迭代的Agile与DevOps是完全行不通的,所以在这些领域还是需要使用传统的瀑布模型进行开发。
3.伴随DevOps,出现了许多XXOps和DevXXOps:他们分别有DevSecOps、DevPerfOps、AIOps、DataOps。DevSecOps力图把安全工作伴随软件研发始终;DevPerfOps力图把质量工作伴随软件研发始终;AIOps试图通过AI技术来帮助运维;DataOps力图通过增加数据专家(数据分析师,数据开发人员,数据工程师和/或数据科学家)建立在该概念的基础上,以专注于数据流的协作开发和整个组织中数据的连续使用。另外对于DevTestOps和TestOps我认为与DevOps是重合的概念,因为在DevOps的Dev包括开发和测试,因此DevTestOps和TestOps不应该单独拿出来。
4.ABC测试(AI、Big Data、Cloud)目前还处于探索阶段。融360团队分别在2020年和2021年推出了《机器学习测试》和《大数据测试》,我个人认为在这两本书中大量的笔墨还是用在机器学习和大数据本身,而对机器学习与大数据如何进行测试介绍得还是比较少。说明到目前为止“机器学习测试”和“大数据测试”仍旧处于萌芽阶段,没有形成很好的理论和方法体系。
现在所说的云测试主要指云原生技术测试,云原生是指Cloud+Native二者的组合,Cloud(云)表示应用程序运行于分布式云环境中,Native(原生)表示应用程序在设计之初就充分考虑到了云平台的弹性和分布式特性,就是为云设计的。对于云原生的测试也是2021年一个热门话题。
5.在性能测试中全链路压力测试越来越受到大家的重视,但是全链路压力测试是一项技术难度、管理难度比较高的工作。我认为首先没有足够的必要不要做;其次没有足够的人力资源和资金资源不要做。
6. 测试左移和测试右移越来越受到青睐。关于测试左移,我一直认为不一定实现代码级别的(U)TDD、TDD、BDD或ATDD,但是测试工程师书写出来的测试用例应该让开发人员阅读。最好像华为那样,只要测试用例被设计出来,交付的代码对应的用例的测试均应该是通过的。就像加拿大格言中说的“如果你看见了问题,就离解决它不远了”。测试右移是伴随DevOps兴起而兴起的,测试右移其实是一种亡羊补牢的方法,是一种迫不得已的方法,大家不要因为有了测试右移,而忽视在研发阶段的质量把控,毕竟亡羊补牢是需要一定高额成本的。
7. 精准测试的兴起是时代的必然。精准测试是2014年由洞察云苏州科技有限公司CTO赵明先生在穿线测试基础上提起的。精准测试把对软件的黑盒操作与软件源代码有机地结合起来,从而得到以下的便利:
8. 混沌工程的提出推动了混沌测试。我个人认为混沌测试在中国可能只有少数公司可以实施起来,我个人认为意义不大。
9. 研发效能的提出。我个人认为应该逐步给出如何评定研发效能的方法,比如您的企业适合不适合用敏捷、DevOps、DevSecOps、DevPerfOps、AIOps、DataOps? 研发、测试、运维与安全人员是否在一个团队中还是合并在一起?…