什么是软件测试方法论?
软件测试方法论被定义为用于证明应用程序满足期望的策略和测试类型。测试方法有单元测试、集成测试、系统测试、性能测试等。每种测试方法都有定义的测试目标、测试策略和可交付成果。
注意:由于软件测试是任何开发方法论不可或缺的一部分,因此许多公司通俗地使用术语“开发方法论&测试方法论”(Development Methodology&Testing Methodology)。因此,会讨论不同的模式。
在本教程中,将了解-
- 瀑布模型
- 迭代开发
- 敏捷方法论
- 极限编程
- 选择哪种软件方法论?
- 如何设置软件测试方法?
瀑布模型
在瀑布模型中,软件开发过程依次经历了需求分析、设计等各个阶段。 在此模型中,下一阶段仅在前一阶段完成后才开始。
瀑布模型的第一阶段是需求阶段,在开始测试之前,所有项目需求都被完全定义。在此阶段,测试团队集思广益,讨论测试范围、测试策略并起草详细的测试计划。
只有在软件设计完成后,团队才会继续执行测试用例,以确保开发的软件按照预期运行。 在此方法中,只有在前一阶段完成后,测试团队才会进入下一阶段。
优势
这种软件工程模型非常容易规划和管理。因此,预先明确定义和声明需求的项目可以很容易地使用瀑布模型进行测试。
劣势
在瀑布模型中,只有在上一阶段完成后才能开始下一阶段。因此,该模型不能适应计划外事件和不确定性。
此方法不适合需求频繁更改的项目。
迭代开发
在这个模型中,一个大项目被分成几个小部分,每个部分都要经历瀑布模型的多次迭代。该模块集成到软件体系结构中,并对整个系统进行整体测试
迭代一完成,就会对整个系统进行测试。反馈基于从过去迭代中获得的经验,可以减少连续迭代所需的测试时间。
优势
迭代开发的主要优势是测试反馈在每个周期结束时立即可用。
劣势
此模型显著增加了沟通开销,因为在每个周期结束时,必须提供关于可交付成果、工作等的反馈。
敏捷方法论
传统的软件开发方法在整个项目中保持软件需求不变的前提下工作。虽然迭代模型解决了这个问题,但仍然基于瀑布模型。
在敏捷方法论中,软件是在递增的、快速的周期中开发的。客户之间的交互敏捷方法论侧重于响应变化,而不是广泛的计划。
敏捷开发方法中使用了增量测试,因此,项目的每个版本都经过了彻底的测试。这可确保在下一个版本之前修复系统中的所有错误。
优势
可以随时对项目进行更改以符合要求。
这种增量测试可将风险降至最低。
劣势
持续的客户互动意味着所有涉众(包括客户本身、软件开发和测试团队)都面临额外的时间压力。
极限编程
极限编程是一种相信短开发周期的敏捷方法论。来自客户的体验被合并,开发人员继续下一项任务。
在极限编程开发人员中,通常是结对工作。 极限编程用于客户需求不断变化的地方。
测试方法是什么?
极限编程遵循测试驱动开发,描述如下:
- 向测试套件添加测试用例,验证尚未开发的新功能
- 运行所有测试,显然添加的新测试用例肯定会失败,因为功能尚未编码
- 编写一些代码来实现特性/功能
- 再次运行测试套件。这一次,新的测试用例应该会通过,因为功能上已经编码
优势
头脑中有一个非常模糊的软件设计的客户可以使用极限编程
小版本的持续测试和持续集成确保了软件代码的高质量交付
劣势
软件开发团队和客户之间的会议增加了时间要求。
选择哪种软件方法论?
有大量的方法可用于软件开发及其相应的测试。每种测试技术和方法都是为特定的目的而设计的,都有其相对的优缺点。
特定方法的选择取决于许多因素,例如项目的性质、客户需求、项目进度等。
从测试的角度来看,一些方法在开发生命周期的早期推动测试输入,而另一些方法则等到系统的工作模型准备就绪。
如何设置软件测试方法?
软件测试方法论不应该仅仅为了测试软件代码而建立。应该考虑全局,并且项目的主要目标应该满足测试方法。
调度
现实的日程安排是成功实现测试方法学的关键,日程安排应该满足团队每个成员的需求。
交付成果
为了让团队的所有成员保持一致,应该提供定义明确的可交付成果。可交付内容应包含直接内容,不得有任何含糊之处。
测试方法
一旦调度完成并且定义的交付内容可用,测试团队应该能够制定正确的测试方法。定义文档和开发人员会议应该向团队说明可用于项目的最佳测试方法。
报告
透明的报告很难实现,但这一步决定了项目中使用的测试方法的有效性。