软件测试的世界每天都在变化。与现在的测试方式相比,测试团队在一二十年前进行测试的方式完全不同。早期的测试实践主要是手动测试,由于人为错误,很容易出错。但现在市场上有许多自动化测试工具,它们不仅可以加快你的测试阶段,还可以帮助我们收集准确的测试结果。
这是手动测试人员从错误中吸取教训后软件测试发展的最佳例子之一。换句话说,由于手动测试可能容易出错,因此,在从这些经验中学习后,传说发明了测试自动化工具以获得具体的测试结果。
我认为100%测试自动化不是实现最佳测试结果的整体解决方案,但必须明智地选择特定测试任务的手动和自动化测试的范围。
接下来,它取决于软件测试方法的类型。假设你正在使用SDLC(即软件开发生命周期模型),那么测试团队已经给出了具有确定持续时间的完整阶段。SDLC模型中的测试团队应该选择他们实际需要的测试。他们应该评估可以自动化的测试用例以及可以手动执行的测试用例,以便获得最佳测试结果。
测试的未来
另一方面,如果项目使用Agile方法,那么测试团队可能没有特权从头开始设计自动化框架并为当前Sprint(冲刺)自动化测试。我认为敏捷模型中有两种可能性来应对这种情况。如果项目在自动化框架中投入了很多,那么在即将到来的sprint中,可以使用这样的框架,并且可以在很短的时间内自动化测试用例。如果同一个项目之前没有开发自动化框架就没有办法,那么可以实现快速自动化,但强烈建议进行手动测试以满足Sprint测试的最后期限。
软件测试方法每天都在发展,没有人可以说我们将始终坚持使用SDLC或敏捷模型,但也有混合方法。例如,如果某个特定项目非常复杂,那么将该项目分解为多个模块是明智的,并且根据最佳可行性,这些模块中的一些可以采用SDLC,而另一些模块可以遵循敏捷方法。同时,一些测试用例可以手动执行,其他测试用例可以自动执行。如果需要在应用程序或系统的上游和下游模块之间进行集成测试,那么最好手动测试集成或连接(即联调),因为自动化有时可能不是最佳选择。
再一次,我说的是我的经历,但是和许多人一样,我也碰到过失败,而且我从那些失败中吸取了教训。作为QA经理,我总是确保我的团队成员不会重复这些错误。
软件测试是一项非常具有创新性的工作,我要说的是,如果没有测试团队对某个特定项目进行测试或签字认可,该项目就无法上线。因此,测试团队责任重大,直接影响到软件产品的组织声誉。软件测试是创新工作需要有经验测的试人员,他们可以在根据他们过去可能面临的故障来判断当前的测试方法后,为实际项目方法增加价值。没有测试人员想一次又一次地重复同样的错误。因此,测试人员了解他们的失败并指导团队不做什么。它们有助于确定适当的测试方法,这就是决定任何项目的测试未来的方式。
不仅如此,如果这种方法在商业化时恰好具有创新性,或者它可以成为标准实践。一些标准的功能测试方法是 BDD (行为驱动测试)、数据驱动测试等。在这些测试实践成为标准之后,我们开发了专门的测试工具,帮助我们在很短的时间内实现我们所需的测试目标。这就是测试的未来如何决定的,它将与来自资深测试人员的创新想法一起实现。
在Sprint规模非常小的大型组织中,在用户故事中,开发和测试的任务必须在很短的时间内完成。测试团队决定是否可以重复使用现有的测试用例,无论它们是自动化的还是手动的,但测试结果应该是准确的,具有尽可能高的测试覆盖率。如果当前的项目测试需要测试 API 中的大量数据,或者它是一个数据迁移项目,那么由于数据庞大而手动比较可能不是一个好主意,相反,应该开发一个测试脚本来批量执行数据文件并获取自动测试报告。这种测试方法是一种动态方法,涉及手动和自动测试的混合。
结论
软件测试领域仍有许多领域需要探索新的测试技术,以期为未来的测试提供良好的形态。人工智能的进步需要进入并促进软件测试。自动化测试还应具备人工智能,通过公开在编写或执行测试用例期间未捕获的区域来促进软件测试。这绝对是一个附加组件,它将适应短跨度冲刺的最佳方式,并为敏捷方法提供新的维度。
由 ruink 译自 《Future of Testing – How to fail and learn from it》 一文。