应用Visual Studio成功智能化测试
智能化测试的成功
编写智能化测试兴许对很多测试人员来说比拟生疏。所幸的是Visual Studio中为成功智能化测试提供了一系列的工具,单元测试(Unit Test)、编码UI测试(Coded UI Test)、压力测试(Stress Test)、网页性能测试(Web Performance Test)、数据库单元测试(Database Unit Test)等等,让成功智能化测试变得轻松。这里我想着重引见2种最基本的,也是在咱们的产品开发中最罕用的测试:单元测试和编码UI测试。
1. 单元测试
单元测试是Visual Studio中最基本、运行最宽泛的一种测试。通常开发人员可以选用为一个方法或是一个部件创立单元测试,来保障其逻辑正确。
要在Visual Studio中创立单元测试,可以在源代码的高低文菜单当选用“创立单元测试”,并在弹出的窗口当选用须要为其创立单元测试的方法(如图一、图二所示)。这样Visual Studio就会智能创立出一系列单元测试的代码框架,以及针对private/internal等无法间接调用的方法的访问器(Accessor),用户只有修正或减少详细测试逻辑即可。访问器会随着源代码的每一次性编译智能降级,为用户节俭了不少费事。当然,用户也可以经常使用单元测试导游创立,或是间接减少一个单元测试(测试->新建测试)文件再自行减少逻辑代码。
图一 创立单元测试
图二 创立单元测试对话框
单元测试通常以[TestClass]属性来示意一个测试类,在测试类中经常使用5种不同的属性标示方法:[ClassInitialize]、[TestInitialize]、[TestMethod]、[TestCleanup]、[ClassCleanup]。一个测试类中可蕴含多个测试方法(Test Method),然而仅可以有一个类初始化方法(Class Initialize)、一个测试初始化方法(Test Initialize)、一个测试清算方法(Test Method)、一个类清算方法(Class Cleanup)。在测试运转时,类的初始化会被首先调用,而后在运转每一个测试方法之前运转测试初始化,之后运转测试清算,在测试方法运转完结后,类清算方法将被运转。除测试方法外,其余的辅佐方法都不是必定的。大家可以依据实践须要来布置代码逻辑。
成功编译后,一切测试方法都会在测试视图(Test View)窗口中列出,在该窗口中还可以对测试方法启动过滤、查问和排序,选用一个或多个测试方法后,可以运转或调试测试用例。测试的结果(能否经过)会显示在测试结果(Test Result)窗口中,双击恣意一条测试结果都会关上详细的测试结果日志以失掉更详细的消息,如图三所示。单元测试还可以经过间接在测试方法代码中右键选用“运转测试”,或是在命令行中间接口头mstest命令来运转。
图三 测试视图和测试结果
此外,单元测试工具不只可以用作单元测试的目标,也可以作为一种载体,来成功验收测试或是配置测试。咱们在通常中少量应用了Visual Studio对单元测试的治理、运转、日志等配置,经过在测试代码中成功验收测试、配置测试的详细逻辑来成功各种不同类型的测试。
2. 编码UI测试
只管单元测试框架适用于各种不同的测试,不过其自身却没有提供太多对测试代码成功上的允许。关于智能化测试中经常令人无从下手的UI操作的智能化,Visual Studio 2010中减少了一种新的测试类型——编码UI测试,以协助用户克制这一难题。编码UI测试是一种能轻松上手,迅速创立出UI测试的框架。
一种最繁难的创立UI测试的方法是间接从手动测试入手。假设此前咱们曾在Test Manager中创立了测试用例,并曾在手动口头时录制过其测试步骤,那么咱们就可以间接将录制的步骤转化为编码UI测试的代码。在Visual Studio当选用创立一个编码UI测试后,会跳出一个对话框征询用户是经常使用已有的操作录制还是从新录制,选用第二项“Use an existing action recording(经常使用现有操作录制)”后即可经过查问测试用例上班项将相应的测试转化为智能化测试代码(见图四)。
图四 创立编码UI测试
假设之前没有录制过测试步骤,或是想从新创立测试的话,可以在图四对话框当选用第一项“Record actions, edit UI map or add assertions(录制操作、编辑 UI 映射或减少断言)”,这样编码UI测试生成器(Coded UI Test Builder)就会出现。在编码UI测试生成器中,用户可以自在选用为测试录制操作步骤(图五)、手动减少某些UI控件或是断言(图六),而后就可认为这些内容生成代码。这一环节可以经过在代码的高低文菜单当选用“Generate Code for Coded UI Test(为编码UI测试生成代码) ”重复口头,须要提示用户的一点是每一次性一切的代码都将被重重生成,所以手动修正生成的代码是没无心义的,除非尔后不再借助编码UI测试生成器生成代码。
图五 编码UI测试生成器——录制
图六 编码UI测试生成器——减少UI控件和断言
此外,用户还可以不借助Visual Studio提供的这些工具,间接应用编码UI测试提供的API(Microsoft.VisualStudio.QualityTools.CodedUITestFramework等)编写代码,成功UI智能化测试。
编码UI测试的运转方法、运转结果等都与单元测试相似,此处不再赘述。
这里要强调的是智能生成的智能化UI测试并不能处置UI测试固有的不稳固的疑问。尤其是这种编码UI测试是经过UI控件之间的蕴含相关来寻觅控件并对其口头操作的,就造成了假设运转测试时UI陈列与录制时不尽相反时,测试或许无法正确运转。确保运转时UI环境的分歧、在各操作步骤之间减少对UI控件形态的判别、在生成的代码的基础上编写自己的代码是能提高编码UI测试稳固性的一些方法。
3. 其余类型测试
除了上述两种罕用的测试类型之外,Visual Studio针对不同类型的测试以及测试对象,提供了各种其余的测试工具。例如,网页性能测试经过记载用户每一步操作选用的地址和发送的消息来成功网页测试的智能化;负载测试协助用户模拟多用户各种不同测试环境下的负载;数据库单元测试提供了间接针对数据库的测试允许。这里我就不再逐一详细引见了,有兴味的读者可以自己在MSDN上查问经常使用方法或许间接试用这些配置。
智能化测试的治理
关于手动测试,测试用例上班项曾经能很好的形容测试的内容以及记载测试的结果。而智能化测试的不同之处在于其须要代码的允许。咱们通常将测试代码和产品代码一同保留在Team Foundation Server的源代码控制中,这样一方面便于代码的一致治理,另一方面让测试用例也能应用到TFS提供的版本控制、放置集等配置。另外,咱们还可以经过设置TFS的测试用例上班项中蕴含的“关联的智能化测试”域的值将测试方案中的测试用例和实践的代码咨询起来。
小结
在这一篇中,咱们讨论了手动测试和智能化测试各自的长处和局限性,两者互补敌对衡能协助测试人员更好的在矫捷开发的环境中成功测试义务。此外,咱们还了解了如何借助Visual Studio中提供的一些工具来成功并治明智能化测试。在引见了智能化测试的方法和工具后,我将在中进一步为大家引见如何方案和口头智能化的测试用例。
原文链接:
【编辑介绍】