本主题解释如何配置 Parasoft 测试产品,以计算作者身份并在整个团队中分配质量任务。
本章包含:
通常有许多不同的团队成员在整个 SDLC 中从事开发项目 — 从应用程序逻辑的开发人员,到 Web 接口的开发人员,再到验证端到端流程和事务的 QA 测试人员。
使用从同行评审工作流自动化、静态分析、到单元测试、到运行时错误检测、到 SOA 策略执行、到单个 SOA 组件的功能测试以及端到端测试场景等技术,Parasoft 测试产品为各个团队成员生成要执行的质量任务。然后,可以根据手动分配或自动检测到的作者数据将这些任务分配给适当的团队成员。
此任务分配用于:
对于开发人员,代码作者数据可以影响测试了多少代码,以及每个开发人员的质量任务视图中显示了哪些测试结果。
通过更改测试配置的范围设置,您可以将测试配置为只覆盖您创建的文件或行,或者只覆盖您在指定日期之后修改的文件或行。此外,如果为用于测试的测试配置设置了 Test only files/lines authored by [your_username] 范围选项所编写的测试文件/行,那么质量任务视图将只显示您所编写的代码中的测试任务,以及重新分配给您的任何其他任务。
对于 QA 人员来说,Parasoft 测试可以通过多种方式基于源代码控制数据分配任务:
如果您在 Parasoft 测试环境中将源文件添加到项目中,您可以看到分配到该源文件的特定行中的团队成员,以及关于上次修改它的时间的信息:
注意,如果不使用源代码控制数据计算任务所有权,则消息将显示文件的修改信息(而不是所选的特定行)。 |
Parasoft 测试可以根据源代码控制数据(来自受支持的源代码控制系统)、@author Javadoc 标签、xml 映射文件(直接文件到作者的映射)和/或当前本地用户分配错误所有权。
如果您使用多个源来确定作者身份,则通过从上到下阅读首选项面板的范围和作者身份页面中的设置来确定作者身份优先级(首先是源代码控制,其次是 @author 标签,接下来是直接映射文件,最后是当前用户)。但是,如果所选选项之一没有确定作者(例如,选择了 @author 标签,但是文件没有 @author 标签),则 Parasoft 测试将根据所选的下一个选项确定作者。如果 Parasoft 测试仍然无法确定作者,则将用户设置为“未知”。同样,如果没有选择这些选项,则将用户设置为“未知”。
如果您将 Parasoft 测试配置为同时使用源代码控制和 @author 标记来计算作者身份,那么将尽可能检查源代码控制,而 @author 将用于不在源代码控制之下的项目和文件。
如果您选择使用当前的本地用户,那么本地用户将被视为作者,而本地修改时间将被视为最后一次修改时间。
Parasoft 测试分配作者身份和任务,如下所示:
若要查看指定给某一行源代码的作者,以及关于最后一次修改时间的信息,请执行以下操作:
注意,如果不使用源代码控制数据计算作者身份,则消息将显示文件的修改信息(而不是所选的特定行)。 |
可以指定作者身份计算设置:
若要使用 GUI 控件更改作者身份计算,请执行以下操作:
有关如何通过 localsettings 设置作者身份设置的更多详情,请查阅 配置 Localsettings。
如果希望直接指定哪些作者负责哪些文件(而不是自动计算作者数量),可以指定文件到作者的映射。这些映射可以自动配置一次,然后按照 跨团队配置 SOAtest中所描述的那样使用自动配置过程在整个团队中共享。
若要直接指定如何分配特定的文件或文件集:
src/**/Test* - 分配“src”目录中名称以“Test”开头的所有文件(例如,“src/some/other/dir/TestFile.c”)
将最通用的路径放在映射的末尾。例如,在这里 /ATM/** 路径是最后一个,因为它是最通用的: /ATM/other/** 用户 2 /ATM/** 用户 3 这表示将 |
或者,您可以通过以下方式直接使用 Parasoft 测试来使用导出的 XML 文件:
scope.xmlmap=true, scope.xmlmap.file=[file],
和 scope.mappings.location
properties (通过 -local-settings
选项,如 配置 Localsettings中所述。这将覆盖 GUI 中指定的任何作者设置。下面是一个示例 XML 作者身份映射文件:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE authorship (View Source for full doctype...)> <authorship> <!-- assigns all files named: "foo/src/SomeClass.java" to "author1" --> <file author="author1" path="foo/src/SomeClass.java" /> <!-- assigns all files whose names starts with any character (except /) and ends with "oo/ src/SomeClass.cs" to "author2" --> <file author="author2" path="?oo/src/SomeClass.cs" /> <!-- assigns all *.c files in any directory to "author3" --> <file author="author3" path="**.c" /> <!-- assigns every file whose path has a folder named "src" to "author4" --> <file author="author4" path="**/src/**" /> <!-- assigns all files located in directory "src" to "author5" --> <file author="author5" path="src/**" /> <!-- assigns all files in directory "src" whose name starts with "Test" i.e. "src/some/ other/dir/TestFile.java" to "author6" --> <file author="author6" path="src/**/Test*" /> </authorship> |
脚本可用于从源代码控制系统生成 XML 映射文件下面的示例 Perl 脚本演示了如何从 CVS 生成作者身份映射文件。如果使用不同的源代码控制系统,请进行适当的修改。
#!perl ############################################################ # GetAuthors.pl # Sample script to generate file --> author mapping. # Note that this is usually run only once, when you first # deploy Parasoft Test . # # This script assumes that you have a list of all the files in the # project. For example, such a list can be obtained on windows # by using "dir /s/b *.c" for c files. ############################################################ sub GetAuthor ############################################################ # Gets the author (person who last modified the file) for # the input file. ############################################################ { my $fileName = shift(@_); my $author = "DontKnow"; system qq(cvs log $fileName > cvslog.txt); open(TMPFILE, "< cvslog.txt") || die "Could not open cvslog.txt"; while (<TMPFILE>) { chop; if (m/(^date.*author:)(.*)(;[\s]*state)(.*)/) { $author = $2; } } close TMPFILE; return $author; } print "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n"; print "<mapping>\n"; ############################################################ # AllCFiles.txt has a list of all the c files in the # project. The following loop iterates through all the # files and assigns owners to each. ############################################################ open(FILELIST, "<AllCFiles.txt") || die "Could not open AllCSFiles.txt"; while (<FILELIST>) { chop; my $fileName = $_; my $author = GetAuthor($fileName); print "<file path=\"$fileName\" "; print "author=\"$author\" />\n"; } print "</mapping>\n"; |
默认情况下,Parasoft 测试假定它检测到的每个用户名值(例如,基于源代码控制数据、系统的本地用户设置、@author 标记、直接映射文件、导入的 scanner.properties 文件)是代码作者的用户名,相关开发人员的电子邮件是 [username]@[mail_domain]。
但是,在某些情况下,您可能希望将检测到的用户名映射到另一个用户名和/或电子邮件地址。例如:
这些作者身份设置可以自动配置一次,然后按照中 Configuring Preferences Overview所描述的那样使用自动配置过程在整个团队中共享概要。
如果尚未从自动配置过程中设置适当的作者设置,或者希望更改/覆盖导入的设置,则可以将检测到的默认用户值映射到其他用户名和/或电子邮件地址,如下所示:
在所有允许输入团队成员姓名或电子邮件地址的 UI 位置(例如,电子邮件通知、重新分配任务、只由测试文件创建等),您可以开始输入姓名/地址,然后选择自动完成建议之一。 例如,如果输入的名称或电子邮件不在 Concerto 数据库中,则会发出警告,以防您输入错误。 |
您还可以在 localsettings 文件中指定作者映射(从命令行或存储在 Concerto 上的 Parasoft 测试首选项中)。 为此:
例如:
|
可以确定是否将 author 值视为区分大小写的值。“区分大小写”设置适用于以下情况中的作者值:
这里的“区分大小写”设置应该与 Concerto 中的“区分大小写”设置匹配。默认情况下,Concerto 区分大小写。关于如何在 Concerto 中配置“区分大小写”的更多详情,请查阅 Concerto 用户指南。
“区分大小写”设置决定同一用户名的多个变体是被视为一个用户还是多个用户,例如:
当团队使用的外部数据库中用户名的情况并不重要时,“区分大小写”模式尤其有用。如果用户名 david
作为 DAVID
存储在数据库中,并且您使用的是“区分大小写”模式,那么为 DAVID
导入的任务将无法与 david
匹配。
您可以在首选项面板中设置“区分大小写”设置(Parasoft> Authors> Ignore case of user names in Parasoft Test platform)。
还可以使用 localsettings 选项 authors.ignore.case=true|false
配置此模式。有关 localsettings 选项的更多详情,请查阅 配置 Localsettings。
如果您和/或您的团队成员使用多个源代码控制系统,但对所有源代码控制系统使用相同的登录名,请按照以下步骤启动产品,以确保从源代码控制计算出准确的作者身份:
jtest -J-Duser.name=your_username ...
SOAtest -J-Duser.name=your_username ...
cpptest -J-Duser.name=your_username ...
eclipse ....
-vmargs -Duser.name=your_username
如果使用“本地用户”数据来确定作者,Parasoft 将默认使用机器上定义的本地用户设置。
如果希望使用不同的用户名,请转到顶层的 Parasoft 首选项页面,清除 Default,然后在 User name 字段中输入合适的名称。