2020年发表于《测试技术与质量管理》
摘要
随着软件系统规模的持续增大,业务复杂度的持续增加,软件测试的复杂度也随之越来越大。而软件测试工作复杂度的直接体现,就是测试用例编写、维护、执行和管理,所以编写易读、易维护和易管理的测试用例可以有效的降低测试工作的复杂度。
本文主要系统的介绍了测试用例的几种管理方法,包括每种的特点,适用场景以及实例。帮助不同的项目和团队,根据自己的情况选择适合的测试用例编写和管理方法,从而降低测试工作的复杂度,提高测试工作的效率。
正文
在软件测试工作中,测试用例是其最为重要的基础。一个良好的测试用例可以帮助测试人员更容易阅读,理解,修改并管理它,从而提高测试工作的质量和效率。
要编写一个好的测试用例,首先需要对业务需求和验收条件(AC)进行深入的分析,并确定业务需求和验收条件的正确性和合理性。然后对其进行测试分析,并完成整体测试用例的设计和编写,其中包括功能测试用例,E2E测试用例,异常测试用例等等。
对于设计好的测试用例需要进行分类并管理,然后根据不同的分类进行分层测试。通常情况下可以将测试分为端到端测试(E2E Testing),功能测试(Functional Testing),集成测试(Integration Testing),单元测试(Unit Testing)等。根据这个分类方法,可以方便进行测试分层管理,就是某些测试用例放在端到端测试类型里面,而有些测试用例则放到集成测试类型里面。
而根据测试用途还可以将某些类型的测试分类成回归测试(Regression Testing),验收测试(Acceptance Testing), 健全测试(Sanity Testing)以及冒烟测试(Smoke Testing)等。由于一个测试用例可能既属于回归测试,又属于冒烟测试,所以这种情况下就需要一个良好的测试管理系统或者管理方法来对大量的分类后的测试用例进行管理。
编写和管理测试用例是测试用例工作中工作量最大,最为繁琐的部分。其质量的高低直接影响到测试工作是不是能高效和顺利的进行和完成。所以结合产品的类型和团队的情况,选择适合自己团队的用例编写和管理方式,从而事半功倍。
测试用例的管理
测试用例需要具有以下特性:易阅读,易维护,易执行,易管理。而难点也比较突出,其中包括语言的歧义性和多样性导致的不易阅读和理解;手动测试和自动化测试用例很难统一管理和统一执行。
当测试数量很大的时候,如果测试用例管理系统不易用,测试用例的复用性也不高,则会导致测试用例不易维护,从而会极大的增加了其管理成本。
测试用例管理是一项繁琐的工作,现在业界存在四种经典方法,分别是文件管理,系统管理,代码活文档和系统活文档。与编写用例一样,没有一种用例管理方法是银弹,适合所有不同的团队和不同的项目。所以了解它们的特点,再根据自己团队和项目的实际情况,选择适合的才是最佳实践。
方法一:使用如Excel,Word,Mindmap等文件管理
本方法是中小型项目中比较常见的测试用例管理方法。其优势是简单易用,而劣势是需要自己对测试用例模版进行定制,并且当测试用例过多的时候管理成本会急剧增加。其次对于本地文件模式,则很难让多人进行协作编写(Google Sheets这种在线文档没有这个问题)。下面是一个Excel实例。
[caption id=“attachment_14653” align=“aligncenter” width=“700”] Excel管理实例图[/caption]
方法二:使用itest,TestLink等系统管理
本方法一般是中大型项目中最为常用的管理方法。它的优势是管理系统提供了强大的管理和协作功能,比如协作编写用例,协作执行用例,测试步骤管理,截图管理,测试迭代管理以及丰富的测试用例和测试结果报表等。所以它有一定的学习曲线,并且基本上都是界面操作,相对比较繁琐,有些修改很难跟踪,比如测试步骤和测试数据的更改等。
其次这种系统一般需要一个独立服务器来部署和运行,如itest,TestLink等。下面三张图是itest最为典型的支持执行管理、用例管理和用例编排管理的界面。
[caption id=“attachment_14654” align=“aligncenter” width=“700”] itest 用例管理实例图1[/caption]
[caption id=“attachment_14655” align=“aligncenter” width=“700”] itest用例管理实例图2[/caption]
[caption id=“attachment_14677” align=“aligncenter” width=“700”] itest用例管理实例图3[/caption]
方法三:使用Cucumber,RF,SVN和GIT等代码活文档、自动化测试框架和代码版本工具
本方法适合于有足够软件技术工程实践的团队和个人,因为它需要使用到代码版本管理工具,集成开发环境(IDE),自动化测试框架,持续流水线等实践才能高效的编写,维护,执行,管理测试用例,测试日志和测试结果。
本方法的优势是可以同时管理自动化测试用例和手动测试用例,并且更容易跟踪测试用例和测试数据的更改。而劣势是需要测试工程师有足够的工程技术能力来实现。下面是用Cucumber写的一个Demo的截图,左边是集成开发环境中测试用例的管理文件,每个Feature文件就是一套测试用例。而右图是通过Jenkins生成的测试用例活文档(Test Case Living Document),通过它可以统一的展示出手动测试用例和自动化测试用例的测试结果。
[caption id=“attachment_14656” align=“aligncenter” width=“700”] Cucumber测试用例管理和活文档示例图[/caption]
方法四:使用系统活文档
本方法是将代码活文档和系统管理结合,通过测试管理系统编写和管理测试用例,然后会自动生成代码模式的测试用例。也可以只编写代码模式的测试用例,然后自动同步到测试管理文档中。自动化测试在持续集成流水线执行,通过流水线进行展示并同步到测试管理系统中。
手动测试人员执行了手动测试后,将测试结果通过测试管理系统或者在测试代码中进行记录,并最终汇总到测试管理系统的进行统一展示,从而实现了让不同人员可以一起协作分析,设计,管理,和执行测试用例的工作。下面是本方法的架构设计图。
[caption id=“attachment_14661” align=“aligncenter” width=“700”] 系统活文档架构图1[/caption]
[caption id=“attachment_14662” align=“aligncenter” width=“700”] 系统活文档架构图2[/caption]
总结
测试用例是测试工作的根本,不管是手动测试还是自动化测试的成功,都十分依赖于测试用例的质量。但是只有充分的做好测试分析,设计,编写和管理才能产出一套合格甚至优秀的测试用例套件。从而保证测试工作可以高效正确的进行,为产出高质量软件保驾护航。
|