如果你有过汽车行业的从业经验,你就应该知道,过去汽车行业只做测试,而不做开发。汽车制造商的主要任务(从工程角度看)是将来自数百家供应商的数千个零部件组装在一起。考虑到现代软件的复杂性和客户的“挑剔”,最终产品要达到高质量是非常困难的。
在本文中,我想谈谈作为汽车行业工程师可能会遇到的一些软件测试问题。
招聘软件测试工程师时背景重要吗?
既重要又不重要。
让我们考虑一下你的特定行业背景真的很重要吗?
如果你以前的经验只涉及一个特定领域,并且只包括手动测试程序,那么转到另一个行业将是非常痛苦的。很多做法对你来说都是全新的。就像APP的手动测试与汽车的手动测试完全不同。
如果一个人拥有很强的测试自动化技能和软件测试的基础知识,那么事情就会变得简单得多。测试自动化意味着掌握编程、逻辑、分析、故障追踪等技能。这反过来又带来了无限的可能性和应用经验的领域。此外,一个领域的经验还能为另一个领域带来一些新方法。
给职员的建议:学习测试自动化,即使你还没有发现在日常工作中实施它的方法,它迟早会到来的。
给雇主的建议:如果您想聘用一名测试自动化专家,不要过于关注其背景,而应更多地关注其基本技能。
自动化还是不自动化?
答案是肯定要的。但你必须始终牢记测试自动化的成本。无论你从事哪个行业,测试金字塔都是你必须遵循的黄金法则。
如果可能,较低层次的测试都应完全自动化,而较高层次的测试则必须在自动化之前进行全面评估,因为自动化的成本可能会很高。也许你的工程师可以做得更快、更便宜或更有效。
另一种代表测试金字塔的方法称为“左移”。
其目的是一样的--大部分测试必须尽早进行。
单元测试、单元集成测试、组件测试、系统测试--所有这些层次的测试都必须在汽车制造之前完成,当然,目标是尽可能实现高度自动化。
此外,有些测试必须保持手动,例如在生产中使用特殊工具的程序。因此,工程师必须验证这种特殊工具的使用方式是否与工厂员工在生产中使用的方式相同。
给职员的提示:不要等到有了成熟的软件才开始自动化测试。从交付第一个原型开始,然后随着软件包的增长,增加测试自动化的装备。
给雇主的建议:从一开始就将测试自动化纳入测试策略和思维模式。为测试自动化提供工具和支持,使其成为 "完成定义 "的一部分。
持续集成(CI)
这是测试自动化真正带来真正好处的地方,但没有什么是免费的。
要实现CI,至少需要三个先决条件:思维方式、测试自动化和基础设施。让我们逐一讨论:
-
思维模式。汽车行业的许多工程师习惯于以传统方式工作,而不了解世界正在以几乎不可预测的方式快速发展。在这种混乱的环境中,没有持续的测试是绝对不可能的,我所说的 "持续 "是指每天或每次更改软件或从供应商处收到新版本时。这种方法必须是必不可少的,并得到组织的支持。在每一个时间点,你都应该能够知道软件集成的状态。这些信息将在项目交付过程中带来难以置信的好处。
-
测试自动化是实现CI的第一步。因此,在决定全面进入 CI 之前,请确保至少在某种程度上已经实现了测试自动化。持续集成的目的是进行回归测试,提供软件的当前状态,确保向客户交付经过验证的产品。而只有测试自动化才能快速、持续地为您提供此类数据。
-
基础设施。使CI价格昂贵的并不是昂贵的设备(各种类型的测试台和计算机,它们的功能仅限于你的想象力),而是开发和维护 CI 环境的人员。根据公司的特定需求开发和维护 CI 环境的人员,这才是关键。由于需求量大、可用性低,CI 开发人员(或 DevOps)在就业市场上相当有价值。CI 机器的规模越大,需要的 DevOps 工程师就越多。
但是,一旦你准备就绪并正确使用了所有部件,你就会比尚未准备好使用 CI 的竞争对手获得难以置信的优势。这些是 CI 最明显的优势:
-
不仅在单元或组件层面,甚至在系统或车辆层面,都能获得有关软件状态的实时信息
-
低质量(或失败)软件将不会发布到下一级集成中
-
向测试人员和开发人员提供更快的反馈意味着更快的错误修复
-
不间断测试。由于测试活动是自动化的,因此即使在非办公时间,测试过程也不会停止。
软件测试的后续步骤(ML、数据分析)
机器学习、数据分析、人工智能……这些流行词即使对于非 IT 人员来说也是众所周知的,但我还没有看到上述技术在软件测试中得到充分的使用。我预见的可能用途是在测试结果分析中使用机器学习/数据分析。基于特定逻辑(数据分析)或将测试结果连续反馈给系统(ML)。
这可能会减少故障追踪的工作量,但所有这些都是猜测,没有经过我这边证实的例子。
给职员的提示:密切关注实际情况,不要错过成为行业第一的机会,但也不要着急。
给雇主的提示:倾听员工的意见,他们可能最了解社区中流传的事情。
测试是职业生涯的死胡同吗?
我在软件测试社区多次看到有人提出这个问题。测试人员并不清楚如何才能实现自我价值。我认为这在很大程度上取决于公司的文化。如果测试人员得不到与其他员工同等的尊重,并将生产中的错误归咎于测试人员,那么这样的公司文化无疑是比较糟糕的。
在其他情况下,测试人员可以自由选择职业道路。他们可以是高度专业化的专业人员或开发人员(嵌入式 SW 开发人员、测试工具开发人员、DevOps 工程师)。测试人员也可以选择管理职业。但项目和产品管理需要一些额外的教育和对公司业务的了解。
给职员的建议:永远不要停止学习。走在你最感兴趣的领域的最前沿,多阅读学习。
给雇主的建议:不要低估软件测试人员,他们的批判性思维、对细节的关注和洞察全局的能力(软件测试人员的共同特点)是非常宝贵的技能,可以很好地运用到其他领域,培养你的团队伙伴。
如果你对上述主题有任何看法,请在评论中告诉我。
感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取