本主题解释如何配置 C++test,以计算作者身份,并在团队中分配质量任务。
内容包括:
在整个 SDLC 中,通常有许多不同的团队成员在从事开发项目,从应用程序逻辑开发人员到 Web 界面开发人员,再到验证端到端流程和事务的质量检查测试人员。
使用从同行评审工作流自动化、静态分析、单元测试、运行时错误检测、SOA 策略实施、单个 SOA 组件的功能测试以及端到端测试方案等技术,C++test 可以生成团队成员执行的高质量任务。然后可以根据手动分配或自动检测的作者数据将这些任务分配给适当的团队成员。
此任务分配用于:
对于开发人员而言,代码作者数据可能会影响要测试的代码量以及每个开发人员的【质量任务】视图中显示的测试结果。
通过更改【测试配置】的【范围】设置,您可以将测试配置为仅覆盖您创作的文件或行,或者仅覆盖指定日期之后修改的文件或行。此外,如果为用于测试的【测试配置】设置了仅测试由[your_username]范围创建的文件/行选项,则【质量任务】视图将仅显示来自您编写的代码的测试任务以及重新分配给您的所有其他任务 。(在config_task_assgment_code中讨论错误重新分配 )。
对于 QA,C++test 可以通过多种方式基于源代码管理数据分配任务:
如果您已将源文件添加到 C++test 环境中的项目中,则可以看到分配给该源文件指定行的团队成员,以及有关上次修改时间的信息:
请注意,如果您不使用源代码管理数据来计算任务所有权,则报文将显示文件的修改信息(而不是所选的特定行)。 |
C++test 可以根据源代码管理数据(来自受支持的源代码管理系统),@author Javadoc 标签,xml 映射文件(文件到作者的直接映射)和/或当前本地用户来分配错误所有权。
如果您使用多个来源来确定作者身份,则作者身份优先级是通过从上至下阅读【首选项】面板的【范围和作者身份】页面中的设置来确定的(首先是源代码管理,其次是 @author 标签,然后是直接映射文件,最后是当前用户)。但是如果选择的选项之一不能确定作者(例如,选择了 @author 标签,但文件没有 @author 标签),则 C++test 将根据选择的下一个选项来确定作者身份。如果 C++test 仍然无法确定作者,则将用户设置为“未知”。同样,如果未选择这些选项,则将用户设置为“未知”。
如果将 C++test 配置为同时使用源代码管理和 @author 标签进行作者身份计算,则将尽可能检查源代码管理,而 @author 将用于不受源代码管理的项目和文件。
如果选择使用当前本地用户,则将本地用户视为作者,将本地修改时间视为最后修改时间。
C++test 按如下分配作者和任务:
要查看分配给特定源代码行的作者以及有关上次修改时间的信息,请执行以下操作:
请注意,如果您不使用源代码管理数据来计算作者身份,则该报文将显示整个文件的修改信息(而不是所选的特定行)。 |
可以指定作者计算设置:
要使用 GUI 控件来更改作者身份计算,请执行以下操作:
有关如何通过 localsettings 设置作者身份设置的详细信息,请参见配置本地设置。
如果要直接指定哪些作者负责哪些文件(而不是自动计算作者身份,则可以指定文件到作者的映射)。这些映射可以自动配置一次,然后使用C/C++test 配置概述中描述的自动配置过程在团队中共享。
要直接指定您希望如何分配特定文件或文件集:
src/**/Test* - 分配目录 "src” 中所有名称以 "Test” 开头的文件(e.g.,"src/some/other/dir/TestFile.c")
将最一般的路径放在映射的末尾。例如,/ATM/** 路径是最后一个,因为它是最通用的: /ATM/other/** 用户 2 /ATM/** 用户 3 这会将 |
或者,您可以通过以下任一方法指示 C++test 使用导出的 XML 文件:
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 映射文件。以下示例 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]。
但是,在某些情况下,您可能希望将检测到的用户名映射到其他用户名和/或电子邮件地址。示例:
这些作者设置可以自动配置一次,然后使用C/C++test 配置概述中描述的自动配置过程在团队中共享。
如果尚未从自动配置过程中设置适当的作者身份设置,或者如果您想更改/覆盖导入的设置,则可以将检测到的默认用户值映射到其他用户名和/或电子邮件地址,如下所示:
在允许您输入团队成员姓名或电子邮件地址的所有 UI 位置(例如,电子邮件通知、重新分配任务、仅测试作者编写的文件等)中,您可以开始输入名称/地址,然后选择自动完成建议的其中一个。 如果输入的名称或电子邮件不在 DTP 数据库中,则警告会提醒您,例如您输入错误。 |
您还可以在 localsettings 文件中指定作者映射(从命令行或 DTP 上存储的 C++test 首选项中)。 为了这样:
示例:
|
您可以确定作者值是区分大小写还是不区分大小写。此区分大小写设置适用于以下情况中的作者值:
此处的区分大小写设置应与 DTP 中的区分大小写设置匹配。默认情况下,DTP 区分大小写。有关在 DTP 中配置区分大小写的详细信息,请参见《 DTP 用户指南》。
区分大小写设置确定同一用户名的多个变体将被视为一个用户还是多个用户,例如:
当团队使用用户名大小写无关的外部数据库时,区分大小写模式特别有用。如果用户名 david
在数据库中存储为 DAVID
并且您处于区分大小写模式,则为DAVID
导入的任务将不匹配 david
。
您可以在【首选项】面板中设置区分大小写的设置(Parasoft> 作者> 在 Parasoft 测试平台中忽略用户名的大小写)。
您还可以使用 localsettings 选项authors.ignore.case=true|false
配置此模式。有关 localsettings 选项的详细信息,请参见配置本地设置。