本主题解释如何配置 C++test,以计算作者身份,并在团队中分配质量任务。

各节内容包括:

关于任务分配和作者身份

在整个 SDLC 中,通常有许多不同的团队成员在从事开发项目,从应用程序逻辑开发人员到 Web 界面开发人员,再到验证端到端流程和事务的质量检查测试人员。

使用从同行评审工作流自动化、静态分析、单元测试、运行时错误检测、SOA 策略实施、单个 SOA 组件的功能测试以及端到端测试方案等技术,C++test 可以生成团队成员执行的高质量任务。然后可以根据手动分配或自动检测的作者数据将这些任务分配给适当的团队成员。

此任务分配用于:

  • 允许每个团队成员仅将他或她分配的任务从命令行测试导入到 UI 中。
  • 向每个团队成员提供仅包含他或她分配的任务的报告。
  • 在管理器报告中指出哪个团队成员负责哪些任务。

开发人员任务分配

对于开发人员而言,代码作者数据可能会影响要测试的代码量以及每个开发人员的【质量任务】视图中显示的测试结果。

通过更改【测试配置】的【范围】设置,您可以将测试配置为仅覆盖您编写的文件或行,或者仅覆盖指定日期之后修改的文件或行。此外,如果为用于测试的【测试配置】设置了仅测试由[your_username]范围创建的文件/行选项,则【质量任务】视图将仅显示来自您编写的代码的测试任务以及重新分配给您的所有其他任务 。

QA 任务分配

对于 QA,C++test 可以通过多种方式基于源码控制数据分配任务:

  • 如果要静态分析源码控制系统中的源文件或使用存储在源码控制系统中的测试文件执行功能测试,则可以将 C++test 设置为使用源码控制系统中的数据以进行分配任务。静态分析任务被分配给引入它们的人。测试失败将分配给最后进行相关测试的人员。

如果您已将源文件添加到 C++test 环境中的项目中,则可以看到分配给该源文件指定行的团队成员,以及有关上次修改时间的信息:

  1. 打开相应文件的编辑器。
  2. 右键单击要查看其作者的行,然后从快捷菜单中选择 Parasoft> 在行上显示作者

请注意,如果您不使用源码控制数据来计算任务所有权,则报文将显示文件的修改信息(而不是所选的特定行)。

了解 C++test 的作者和任务分配

C++test 可以根据源码控制数据(来自受支持的源码控制系统),@author Javadoc 标签,xml 映射文件(文件到作者的直接映射)和/或当前本地用户来分配错误所有权。

如果您使用多个来源来确定作者身份,则作者身份优先级是通过从上至下阅读【首选项】面板的【范围和作者身份】页面中的设置来确定的(首先是源码控制,其次是 @author 标签,然后是直接映射文件,最后是当前用户)。但是如果选择的选项之一不能确定作者(例如,选择了 @author 标签,但文件没有 @author 标签),则 C++test 将根据选择的下一个选项来确定作者身份。如果 C++test 仍然无法确定作者,则将用户设置为“未知”。同样,如果未选择这些选项,则将用户设置为“未知”。

如果将 C++test 配置为同时使用源码控制和 @author 标签进行作者身份计算,则将尽可能检查源码控制,而 @author 将用于不受源码控制的项目和文件。

如果选择使用当前本地用户,则将本地用户视为作者,将本地修改时间视为最后修改时间。

C++test 按如下分配作者和任务:

  • 如果根据源码控制数据确定作者身份,则 C++test 会读取源码控制数据以确定谁最后修改了与任务相关的文件/行/方法等,然后将任务分配给该相关人员。
  • 如果基于 @author Javadoc 标签确定作者身份,则 C++test 将查找与该任务关联的代码最接近的 @author Javadoc 标签,然后将该任务分配给返回其用户名的作者。
    • 对于方法级任务,它将检查 Javadoc 中的方法,然后检查封闭类,然后检查文件的第一类;返回第一个非空作者。
    • 对于类级任务,它将检查 Javadoc 中的类,然后检查文件的第一类;返回第一个非空作者。
    • 对于行级任务,它将检查 Javadoc 中的封闭方法,然后检查类,然后检查文件的第一类,返回第一个非空作者。
    • 对于文件和文件级任务,返回文件的第一类的第一作者
  • 如果直接指定文件到作者的映射,则根据这些设置分配作者权。
  • 否则,本地用户将被视为负责该任务,本地修改时间将被视为最后修改时间。
  • 当一个静态分析违规被抑制时,它与实施抑制的人相关联。

要查看分配给特定源代码行的作者以及有关上次修改时间的信息,请执行以下操作:

  1. 打开相应文件的编辑器。
  2. 右键单击要查看其作者的行,然后从快捷菜单中选择 Parasoft>在行上显示作者

请注意,如果您不使用源码控制数据来计算作者身份,则该报文将显示整个文件的修改信息(而不是所选的特定行)。

更改作者身份的计算方式

可以指定作者计算设置:

  • 通过 C++test GUI 中的【范围和作者身份】首选项页面。
  • 通过 localsettings。

要使用 GUI 控件来更改作者身份计算,请执行以下操作:

  1. 选择 Parasoft> 首选项 以打开【首选项】对话框。
  2. 在左侧窗格中选择 Parasoft> 范围和作者身份类别。
  3. 使用可用的控件来指示您希望 C++test 如何计算范围和作者身份。
    • 使用源码控制(修改作者)到计算机范围: 源码控制数据将用于计算作者身份。
    • 使用文件系统(XML 映射)计算范围: 您将直接指定要为特定文件或文件集分配任务的方式(例如,您希望1号开发人员负责一组文件,2号开发人员负责另一组文件,依此类推)。有关详细信息,请参见指定文件到作者的映射
    • 使用文件系统(当前用户)来计算范围: 本地用户名将用于计算作者身份。
  4. 单击确定 以设置并保存您的设置。

有关如何通过 localsettings 设置作者身份设置的详细信息,请参见配置本地设置

指定文件到作者的映射

要直接指定您希望如何分配特定文件或文件集:

  1. 指示您将直接输入映射,如下所示:
    1. 选择 Parasoft> 首选项 以打开【首选项】对话框。
    2. 在左窗格中选择范围和作者身份 类别。
    3. 选择使用文件系统(xml 映射)来计算范围
  2. 输入文件到作者的映射详细信息,如下所示:
    1. 在【首选项】对话框中,选择范围和作者身份> 作者身份映射类别。
    2. 在作者身份映射表中指定您的映射。请注意,允许使用通配符;例如:
      • ?oo/src/SomeClass.java - 分配名称以任何字符开头(/ 除外)并以 "oo/src/ 结尾的所有文件
      • **.cs - 分配任何目录中的所有 * .cs 文件
      • **/src/** - 分配路径名为 "src" 的每个文件
      • src/** - 分配目录 "src" 中的所有文件
      • src/**/Test* - 分配目录 "src” 中所有名称以 "Test” 开头的文件(e.g.,"src/some/other/dir/TestFile.c")

        映射顺序事项

        将最通用的路径放在映射的末尾。例如,/ATM/** 路径是最后一个,因为它是最通用的:
        /ATM/unittests/**  用户 1

        /ATM/other/**  用户 2

        /ATM/** 用户 3

        这会将 单元测试文件分配给用户 1,将其他文件 分配给用户 2,并将所有其他 ATM 项目文件分配给用户 1。如果您取消了该顺序,则所有 ATM 文件都将分配给用户 3。

    3. 单击保存更改
  3. 如果您尚未在团队中共享这些首选项,请单击 导出 以将映射导出为 XML 文件,然后让团队成员导入映射文件。

或者,您可以通过以下任一方法指示 C++test 使用导出的 XML 文件:

  • 在 GUI 中 - 在【首选项设置】对话框的范围和作者身份> 作者身份映射 类别中指定该文件的路径(使用 共享文件 选项)。
  • 从命令行 - 使用 scope.xmlmap=true, scope.xmlmap.file=[file],scope.mappings.location 属性指定该文件的路径(通过[Parasoft 产品名称]中所述的 -local-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 映射文件

您可以使用脚本从源码控制系统生成 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";

指定作者到作者和作者到电子邮件的映射

默认情况下,C++test 假定它检测到的每个用户名值(例如,基于源控制数据、系统的本地用户设置、@author 标签、直接映射文件、导入的 scanner.properties 文件)都是代码作者的用户名,并且相关开发者的电子邮件为[用户名]@[mail_domain]。

但是,在某些情况下,您可能希望将检测到的用户名映射到其他用户名和/或电子邮件地址。示例:

  • 如果您想将一个开发人员的所有任务重新分配给另一位开发人员(例如,如果用户 1 离开了团队,并且您希望用户 2 负责分配给用户 1 的所有任务)。我们将这种类型的映射称为“作者到作者的映射”。
  • 如果开发者的用户名与他的电子邮件地址不匹配(例如,检测到的用户名是 john,但是正确的电子邮件是 [email protected])。  我们将这种类型的映射称为“作者到电子邮件的映射”。

这些作者设置可以自动配置一次,然后使用C/C++test 配置概述中描述的自动配置过程在团队中共享。

如果尚未从自动配置过程中设置适当的作者身份设置,或者如果您想更改/覆盖导入的设置,则可以将检测到的默认用户值映射到其他用户名和/或电子邮件地址,如下所示:

  1. 选择 Parasoft>首选项
  2. 打开 Parasoft> 作者 选项卡。
  3. 确保未启用使用 DTP 设置。
  4. 确保未启用作者映射文件位置
  5. 如果要指定“作者到电子邮件”映射:
    1. 跳转到 登陆/ 电子邮件 / 全名称 选项卡。
    2. 点击 添加
    3. 在选项卡中指定所需的映射
  6. 如果您想要指定“作者到作者”映射: 
    1. 跳转到该作者的“重新分配”任务...到该作者 选项卡。
    2. 点击 添加
    3. 在选项卡中指定所需的映射
  7. 点击应用按钮保存更改。

在 UI 中指定作者-具有 DTP 集成

如果您的 C/C++test 安装与 DTP 连接,当您开始键入团队成员的姓名或电子邮件地址时,C/C++test 会自动显示建议列表。例如,当您键入“a”来指定作者姓名时,您可以方便地从以“a”开头的用户名列表中选择作者。这适用于您可以输入团队成员姓名或电子邮件地址的所有 UI 元素(例如,电子邮件通知、重新分配任务等)。

如果 DTP 数据库中不存在用户名或电子邮件地址,C/C++test 会显示警告消息。

在 localsettings 中指定作者映射

您还可以在 localsettings 文件中指定作者映射(从命令行或 DTP 上存储的 C++test 首选项中)。

以便:

  1. 设置authors.mappings.location=local
  2. 使用 authors.mapping 指定适当的映射。
  3. 使用authors.user 指定电子邮件设置。

示例:

authors.mappings.location=local

authors.mapping1=baduser,gooduser

authors.mapping2=brokenuser,fixeduser

authors.mapping3=olduser,newuser

authors.user1=gooduser,[email protected],Gooduser Stowe

authors.user2=fixeduser,[email protected],Fixeduser White

...

确定区分大小写模式

您可以确定作者值是区分大小写还是不区分大小写。此区分大小写设置适用于以下情况中的作者值:

  • 质量任务
  • 报告
  • 范围和作者
  • DTP 任务
  • 测试配置

此处的区分大小写设置应与 DTP 中的区分大小写设置匹配。默认情况下,DTP 区分大小写。有关在 DTP 中配置区分大小写的详细信息,请参见《 DTP 用户指南》。

区分大小写的详细信息

区分大小写设置确定同一用户名的多个变体将被视为一个用户还是多个用户,例如:

  • 区分大小写:David 和 DAVID 将被视为两个不同的用户。
  • 不区分大小写:  David 和 DAVID 将被视为一个用户(同一用户)。

当团队使用用户名大小写无关的外部数据库时,区分大小写模式特别有用。如果用户名 david 在数据库中存储为 DAVID 并且您现在处于区分大小写模式,则从DAVID 导入的任务将不匹配 david

区分大小写配置

您可以在【首选项】面板中设置区分大小写。要禁用设置区分大小写,请转到Parasoft> 作者 并启用 Parasoft Test 平台中忽略用户名大小写 选项。启用此选项后,C/C++test 假定仅大小写不同的用户名是相同的(例如,“John”和“john”被视为表示同一用户)。

您还可以使用 localsettings 选项authors.ignore.case=true|false 配置区分大小写。有关 localsettings 选项的详细信息,请参见配置本地设置

使用多个源代码控制系统时处理作者身份

如果您或您的团队成员使用多个源码控制系统,但对所有源码控制系统使用相同的登录名,请按照以下步骤启动产品,以确保从源码控制中准确地计算作者身份:

  • Standalone C/C++test: cpptest -J-Duser.name=your_username ...
  • 插件: eclipse ....-vmargs -Duser.name=your_username

手动设置本地用户

如果您使用“本地用户”数据来确定作者身份,C/C++test 默认使用机器上定义的本地用户设置。要配置不同的用户名,请转到顶级 Parasoft 首选项页面,禁用 默认选项,然后在 用户名 段中输入要使用的名称。

  • No labels