本主题介绍如何配置 SOAtest,以计算作者身份并在整个团队中分配质量任务。

章节目录:

关于任务分配和作者

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

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

此任务分配用于:

  • 允许每个团队成员只将他或她分配的任务从命令行测试导入 UI。
  • 给每个团队成员一份只包含他或她分配任务的报告。
  • 在经理报告中指出哪个团队成员负责哪些任务。

任务分配

SOAtest 可以通过多种方式基于源码控制数据分配任务:

  • 如果您打算静态地分析源码控制系统中的源文件,或者使用存储在源码控制系统中的测试文件执行功能测试,您可以设置 SOAtest 使用来自源码控制系统的数据来分配任务。静态分析任务被分配给采用的人。测试失败分配给最后进行相关测试的人员。
  • 如果您使用 SOAtest 进行功能测试,那么您可以直接为特定的测试套件或其他资源指定任务所有者。

如果您在 SOAtest 环境中将源文件添加到项目中,您可以看到分配到该源文件的特定行中的团队成员,以及关于上次修改它的时间的信息:

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

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

了解作者与任务分配

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

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

如果您将 SOAtest 配置为同时使用源码控制和 @author 标记来计算作者身份,那么将尽可能检查源码控制,而 @author 将用于不在源码控制之下的项目和文件。

如果您选择使用当前的本地用户,那么本地用户将被视为作者,而本地修改时间将被视为最后一次修改时间。

SOAtest 分配作者身份和任务,如下所示:

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

若要查看指定给某一行源码的作者,以及关于最后一次修改时间的信息,请执行以下操作:

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

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

更改计算作者身份的方式

可以指定作者身份计算设置:

  • 通过 SOAtest GUI 中的范围和作者首选项页面。
  • 通过设置。

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

  1. 选择 Parasoft> 首选项以打开首选项对话框。
  2. 在左侧窗格中,选择 Parasoft> 范围和作者分类。
  3. 使用可用控件指示您希望 SOAtest 如何计算范围和作者。
    • 使用源码控制(修改作者)来计算范围:源码控制数据将用于计算作者身份。
    • 使用文件系统(xml 映射)来计算范围:您将直接指定如何为特定文件或文件集分配任务(例如,您希望开发人员1 负责一组文件,开发人员2 负责另一组文件,等等)。详情请参阅指定文件到作者映射
    • 使用文件系统(@author tag)来计算范围:@author Javadoc 标签将用于计算作者身份。这只适用于 Jtest。
    • 使用文件系统(当前用户)来计算范围:本地用户名将用于计算作者身份。
  4. 点击 OK,设置并保存设置。

有关如何通过设置来设置作者身份的详情,请参阅配置设置

指定文件到作者映射

如果希望直接指定哪些作者负责哪些文件(而不是自动计算作者数量),可以指定文件到作者的映射。这些映射可以自动配置一次,然后按照跨团队配置 SOAtest中的说明使用自动配置过程在整个团队中共享。

若要直接指定如何分配特定的文件或文件集:

  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”开头的所有文件(例如,“src/some/other/dir/TestFile.c”)

        映射的顺序问题

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

        /ATM/other/**       用户 2

        /ATM/**                用户 3

        这表示将 unittests 文件分配给用户 1,将 other 文件分配给用户 2,将所有其他 ATM 文件分配给用户1.如果颠倒顺序,所有 ATM 文件将分配给用户 3。

    3. 点击保存更改
  3. 如果您还没有在整个团队中共享这些首选项,请点击导出将映射导出为 XML 文件,然后让团队成员导入映射文件。

或者,您可以通过以下方式直接使用 SOAtest 来使用导出的 XML 文件:

  • 来自 GUI - 在首选项对话框中指定该文件的路径的范围和作者> 作者映射分类(使用共享文件选项)。
  • 来自命令行 - 使用以下命令指定该文件的路径: 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 映射文件

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

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

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

这些作者身份设置可以自动配置一次,然后按照配置首选项概述中的说明使用自动配置过程在整个团队中共享。

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

  1. 选择 Parasoft> 首选项
  2. 打开 Parasoft> 作者选项卡。
  3. 确保没有启用使用 Concerto 设置
  4. 确保没有启用作者映射文件的路径
  5. 如果要指定“作者到电子邮件”的映射,请执行以下操作:
    1. 进入登录 / 邮件 / 全名表。
    2. 点击添加
    3. 在表中指定所需的映射
  6. 如果要指定“作者到作者”的映射,请执行以下操作: 
    1. 进入重新分配来自作者的任务...给这个作者表。
    2. 点击添加
    3. 在表中指定所需的映射。
  7. 点击应用按钮,保存更改。

在 UI 中指定作者 - 与 DTP 集成

在允许您输入团队成员姓名或电子邮件地址的所有用户界面位置(例如,电子邮件通知、重新分配任务、只测试指定作者的文件等),您可以开始键入姓名/地址,然后选择其中一个自动完成建议。

例如,如果输入的名称或电子邮件不在 DTP 数据库中,则会发出警告,以防您输入错误。

在设置中指定作者映射

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

操作步骤:

  1. 使用 authors.mapping 指定合适的映射。
  2. 使用 authors.user 指定邮箱设置。

例如:

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

...

确定“区分大小写”模式

可以确定是否将作者值视为区分大小写的值。“区分大小写”设置适用于以下情况中的作者值:

  • 编码查核
  • 质量任务
  • 报告
  • 范围和作者
  • Concerto 任务
  • 测试配置(比如,范围选项卡 > 作者选项和代码复审选项卡)

这里的“区分大小写”设置应该与 Concerto 中的“区分大小写”设置匹配。默认情况下,Concerto 区分大小写。关于如何在 Concerto 中配置“区分大小写”的详情,请参阅 Concerto 用户指南。

“区分大小写”详情

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

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

当团队使用的外部数据库中用户名的情况并不重要时,“区分大小写”模式尤其有用。如果用户名 david 作为 DAVID 存储在数据库中,并且您使用的是“区分大小写”模式,那么为 DAVID 导入的任务将无法与 david匹配。

“区分大小写”配置

您可以在 Parasoft 环境中为 SOAtest 处理用户名的方式设置大小写敏感性。

  1. 打开首选项面板,选择 Parasoft > 作者
  2. 启用忽略 Parasoft Test 平台中用户名称的大小写选项。

还可以使用 authors.ignore.case=true|false 设置选项来配置此模式。有关设置选项的详情,请参阅配置设置

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

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

  • 独立版 Jtest: jtest -J-Duser.name=your_username ...
  • 独立版 SOAtest:SOAtest -J-Duser.name=your_username ...
  • 独立版 C++test:cpptest -J-Duser.name=your_username ...
  • 插件:eclipse ....-vmargs -Duser.name=your_username

手动设置本地用户

如果使用“本地用户”数据来确定作者,Parasoft 将默认使用机器上定义的本地用户设置。

如果希望使用不同的用户名,请转到顶层的 Parasoft 首选项页面,清除默认,然后在用户名字段中输入合适的名称。


  • No labels