本主题介绍如何配置 SOAtest,以计算作者身份并在整个团队中分配质量任务。
章节目录:
通常有许多不同的团队成员在整个 SDLC 中从事开发项目 — 从应用程序逻辑的开发人员,到 Web 接口的开发人员,再到验证端到端流程和事务的 QA 测试人员。
使用从同行评审工作流自动化、静态分析、到单元测试、到运行时错误检测、到 SOA 策略执行、到单个 SOA 组件的功能测试以及端到端测试场景等技术,SOAtest 为各个团队成员生成要执行的质量任务。然后,可以根据手动分配或自动检测到的作者数据将这些任务分配给适当的团队成员。
此任务分配用于:
SOAtest 可以通过多种方式基于源码控制数据分配任务:
如果您在 SOAtest 环境中将源文件添加到项目中,您可以看到分配到该源文件的特定行中的团队成员,以及关于上次修改它的时间的信息:
注意,如果不使用源码控制数据计算任务所有权,则消息将显示文件的修改信息(而不是所选的特定行)。 |
SOAtest 可以根据源码控制数据(来自受支持的源码控制系统)、@author Javadoc 标签、xml 映射文件(文件到作者的直接映射)和/或当前本地用户分配错误所有权。
如果您使用多个源来确定作者身份,则通过从上到下阅读首选项面板的范围和作者身份页面中的设置来确定作者身份优先级(首先是源码控制,其次是 @author 标签,接下来是直接映射文件,最后是当前用户)。但是,如果所选选项之一没有确定作者(例如,选择了 @author 标签,但是文件没有 @author 标签),则 SOAtest 将根据所选的下一个选项确定作者。如果 SOAtest 仍然无法确定作者,则将用户设置为“未知”。同样,如果没有选择这些选项,则将用户设置为“未知”。
如果您将 SOAtest 配置为同时使用源码控制和 @author 标记来计算作者身份,那么将尽可能检查源码控制,而 @author 将用于不在源码控制之下的项目和文件。
如果您选择使用当前的本地用户,那么本地用户将被视为作者,而本地修改时间将被视为最后一次修改时间。
SOAtest 分配作者身份和任务,如下所示:
若要查看指定给某一行源码的作者,以及关于最后一次修改时间的信息,请执行以下操作:
注意,如果不使用源码控制数据计算作者身份,则消息将显示文件的修改信息(而不是所选的特定行)。 |
可以指定作者身份计算设置:
若要使用 GUI 控件更改作者身份计算,请执行以下操作:
有关如何通过设置来设置作者身份的详情,请参阅配置设置。
如果希望直接指定哪些作者负责哪些文件(而不是自动计算作者数量),可以指定文件到作者的映射。这些映射可以自动配置一次,然后按照跨团队配置 SOAtest中的说明使用自动配置过程在整个团队中共享。
若要直接指定如何分配特定的文件或文件集:
src/**/Test* - 分配“src”目录中名称以“Test”开头的所有文件(例如,“src/some/other/dir/TestFile.c”)
将最通用的路径放在映射的末尾。例如,在这里 /ATM/** 路径是最后一个,因为它是最通用的: /ATM/other/** 用户 2 /ATM/** 用户 3 这表示将 |
或者,您可以通过以下方式直接使用 SOAtest 来使用导出的 XML 文件:
scope.xmlmap=true、scope.xmlmap.file=[file]
和 scope.mappings.location
属性(通过 -settings
选项,如配置设置中所述。这将覆盖 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 脚本演示了如何从 Git 生成作者身份映射文件。如果使用不同的源码控制系统,请进行适当的修改。
#!perl ############################################################ # GetAuthors.pl # Sample script to generate file --> author mapping. # Note that this is usually run only once, when you first # deploy C++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(@_); return `git log --pretty=format:"%an" -1 $fileName`; } 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); if ($author eq "") { $author = "DontKnow"; } print "<file path=\"$fileName\" "; print "author=\"$author\" />\n"; } print "</mapping>\n"; |
默认情况下,SOAtest 假定它检测到的每个用户名值(例如,基于源码控制数据、系统的本地用户设置、@author 标记、直接映射文件、导入的 scanner.properties 文件)是代码作者的用户名,相关开发人员的电子邮件是 [username]@[mail_domain]。
但是,在某些情况下,您可能希望将检测到的用户名映射到另一个用户名和/或电子邮件地址。例如:
这些作者身份设置可以自动配置一次,然后按照配置首选项概述中的说明使用自动配置过程在整个团队中共享。
如果尚未从自动配置过程中设置适当的作者设置,或者希望更改/覆盖导入的设置,则可以将检测到的默认用户值映射到其他用户名和/或电子邮件地址,如下所示:
在允许您输入团队成员姓名或电子邮件地址的所有用户界面位置(例如,电子邮件通知、重新分配任务、只测试指定作者的文件等),您可以开始键入姓名/地址,然后选择其中一个自动完成建议。 例如,如果输入的名称或电子邮件不在 DTP 数据库中,则会发出警告,以防您输入错误。 |
您还可以在设置文件中指定作者映射(从命令行或存储在 DTP 上的 SOAtest 首选项中)。 操作步骤:
例如:
|
可以确定是否将作者值视为区分大小写的值。“区分大小写”设置适用于以下情况中的作者值:
这里的“区分大小写”设置应该与 Concerto 中的“区分大小写”设置匹配。默认情况下,Concerto 区分大小写。关于如何在 Concerto 中配置“区分大小写”的详情,请参阅 Concerto 用户指南。
“区分大小写”设置决定同一用户名的多个变体是被视为一个用户还是多个用户,例如:
当团队使用的外部数据库中用户名的情况并不重要时,“区分大小写”模式尤其有用。如果用户名 david
作为 DAVID
存储在数据库中,并且您使用的是“区分大小写”模式,那么为 DAVID
导入的任务将无法与 david
匹配。
您可以在 Parasoft 环境中为 SOAtest 处理用户名的方式设置大小写敏感性。
还可以使用 authors.ignore.case=true|false
设置选项来配置此模式。有关设置选项的详情,请参阅配置设置。
如果您和/或您的团队成员使用多个源码控制系统,但对所有源码控制系统使用相同的登录名,请按照以下步骤启动产品,以确保从源码控制计算出准确的作者身份:
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 首选项页面,清除默认,然后在用户名字段中输入合适的名称。