db2日常维护手册

db2日常维护手册,第1张

#说明:由csdn下载,原版为doc格式,有对应的xml表,不过还是应该对每个服务的数据库单独考虑需要的检查表格。

DB2维护手册

目录

DB2维护手册 1

一、 DB2日常维护日 *** 作 3

1、 检查管理服务器是否启动 3

2、 检查DB2实例是否已经启动 3

3、 查看表空间状态是否正常 3

4、 查看表的状态 4

5、 查看磁盘空间 4

6、 检查存储管理软件是否正常 4

7、 检查数据库备份是否正常 5

8、 检查归档日志是否正确归档了 5

9、 查看缓冲池的命中率 5

10、 查看当前运行最频繁的SQL,其命中率是否正常 5

11、 查看当前连接的应用程序,有没有非法连接 5

12、 检查有没有死锁 6

13、 对表和索引进行RUNSTATS 6

14、 检查表是否需要重组 6

15、 对需要重组的表进行重组 7

二、 DB2日常维护月 *** 作 7

1、 查看DB2日志 7

2、 检查备份和日志是否都保存好了 7

三、 DB2日常维护季度 *** 作 7

1、 通过快照监控器,查看系统性能如何 7

2、 数据库补丁级别 8

四、 注意事项 8

1、 不要删除活动日志文件 8

2、 注意交易日志存储空间 8

3、 按照系统的实际工作量配置日志空间 8

4、 设置正确数据库代码页 9

5、 检查许可证(LICENSE)安装情况 9

6、 创建数据库前调整好系统时间 9

7、 不要随便执行 CHOWN (CHMOD) –R (UNIX/LINUX) 9

8、 在归档日志模式下使用LOAD记得加NONRECOVERABLE参数 9

五、 附:以脱机方式重组表 9

六、 附:索引重组 10

七、 附:收集和更新统计信息的准则 11

八、 附:使用 CLP 捕获数据库运行状况快照 13

一、 DB2日常维护日 *** 作

1、 检查管理服务器是否启动

用ps命令查看是否有dasusr1后台进程

#ps -ef | dasusr1

请确保管理服务器已经启动,如果没有启动,则按以下步骤启动管理服务器:

 以管理服务器用户(UNIX默认是DASUSR1)登录

 发出db2admin start命令

 如果是HA环境,则要保证在脚本中正确配置了启动命令

2、 检查DB2实例是否已经启动

用ps命令查看是否有db2sysc后台进程

#ps -ef | db2sysc

也可以以DB2实例所有者登录,通过发出db2start命令来确保启动了实例(如果实例已经启动,则会告知SQL1026N 数据库管理器已激活;否则,将把实例启动起来)

3、 查看表空间状态是否正常

以db2实例所有者登录

#db2 list tablespaces show detail//在单分区上查看表空间的状态,正常返回0x0000

# db2_all list tablespaces show detail//在所有分区上查看表空间的状态

可以使用LIST TABLESPACES 命令确定连接数据库中表空间的当前状态,可以使用SHOW DETAIL选项查看表空间的详细信息。比如,我们连上SAMPLE数据库,执行list tablespaces show detail ,可以看到状态返回值是0x0000,此时,使用db2tbst可以查看状态编号对于的状态含义,具体语法如下:

db2tbst <tablespace state> 可以查看编号所代表的状态

db2tbst 命令接收十六进制的状态值,并返回相应的表空间状态。例如,命令 db2tbst 0x0008 返回 State = Load Pending 。而该十六进制的状态值反过来又是 LIST TABLESPACES 命令输出的组成部分。表空间的外部可见状态是由单个状态值的十六进制总和构成的。例如,如果表空间的状态是 Backup Pending和 Load in Progress,那么所返回的十六进制值就是 0x20020(0x00020 + 0x20000)

4、 查看表的状态

查询系统目录视图以获得关于数据库的有用信息。例如,下面的语句使用 NOT LIKE 断言,返回在 SYSCAT.TABLES 中有项的所有用户定义的表的名称,以及每个表的列数和表的状态(N = 正常;C = 待审核(check pending))

#db2 select tabname, colcount, status FROM syscat.tables WHERE tabschema NOT LIKE 'SYS%' ORDER BY tabname

也可以使用load query命令查看单个表的状态,比如对表TEST1,我们可以发出如下命令:

#db2 load query table test1

5、 查看磁盘空间

查看数据库活动日志目录是否已满,活动日志目录可以使用get db cfg查看,注意一定不要手工删除活动日志

#df -k

查看SMS表空间对应的容器目录空间是否满了

#df -k

查看DMS表空间中是否还有可用页

#db2 list tablespaces show detail//在单分区上查看表空间的是否还有可用页

# db2_all list tablespaces show detail//在所有分区上查看表空间是否还有可用页

6、 检查存储管理软件是否正常

请检查TSM或其他存储管理软件是否正常,以及磁带机是否运行正常。

7、 检查数据库备份是否正常

请查看TSM或第三方存储管理软件,看备份映像文件是否完整的保存到了磁带机上了,想在DB2上查看备份情况,可以使用LIST命令

# db2 list history backup all for 数据库名

8、 检查归档日志是否正确归档了

请确保活动日志目录下没有的日志文件都已经正确归档到了带机上(查看TSM或第三方存储管理软件)。

查看活动目录里的日志文件:

#ls -l

9、 查看缓冲池的命中率

# db2 get snapshot for bufferpools on 数据库名

查看缓冲池的命中率,看其是否低于95%(命中率越高越好)

10、 查看当前运行最频繁的SQL,其命中率是否正常

# db2 get snapshot for bufferpools on 数据库名 >log.txt

用grep命令查看" Number of executions"执行次数最频繁的语句,看其命中率是否正常。

比如:

grep -n " Number of executions" snap.out | grep -v "= 0" | sort -k 5,5rn | more

11、 查看当前连接的应用程序,有没有非法连接

#db2 list applications show detail

看这些连接的情况,看有没有不合适的IP连上来,或者不被允许的第三方工具连上来,比如一些第三方工具连上来会对表进行锁定,影响业务系统正常运行,这个时候可以用FORCE APPLICATIONS (应用程序句柄)停下来。

12、 检查有没有死锁

# db2 get snapshot for all on 数据库名 >log.txt

用grep命令查看输出的文件中是否有死锁的记录,比如

grep -n "Deadlocks detected" log.txt | grep -v "= 0" | more

13、 对表和索引进行runstats

#db2 runstats on table 表名 and index all

对系统表以及变化比较频繁的表运行统计信息,建议写成shell脚本自动运行。

14、 检查表是否需要重组

使用REORGCHK命令,通过统计数据检查表是否需要重组,语法如下:

REORGCHK [UPDATE | CURRENT ]STATISTICS ON [TABLE SYSTEM| TABLE USER | TABLE ALL | TABLE table_name | SCHEMA schema_name]

UPDATE STATISTICS: 更新表的统计数据,根据该统计数据判断是否需要重组表

CURRENT STATISTICS:根据当前表统计数据判断是否需要重组表

TABLE table_name :对单个表进行分析

TABLE ALL: 对数据库所有的表进行分析

TABLE SYSTEM:对系统表进行分析

TABLE USER : 对当前用户模式下的所有表进行分析

#db2 reorgchk update statistics on table all

15、 对需要重组的表进行重组

#db2 reorg table 表名 //通过重构行来消除“碎片”数据

#db2 reorg indexes all for table 表名//只重组索引

比如:

reorg table db2inst1.org index by_id

将根据索引by_id,如果不加INDEX选项将重组表和所有的索引

reorg table db2inst1.org index by_id use tempspace1

使用指定的临时表空间重组表

表重组完成后需要进行RUNSTATS。另外,记住在分区数据库环境中,如果想在所有节点运行命令,需要使用db2_all命令。

二、 DB2日常维护月 *** 作

1、 查看DB2日志

请至少每月查看一次db2diag.log文件,看其中是否有异常。

2、 检查备份和日志是否都保存好了

通过TSM或第三方存储管理软件,查看备份和归档日志是否都保存好了,在数据库级别查看备份,可以使用:

# db2 list history backup all for 数据库名

三、 DB2日常维护季度 *** 作

1、 通过快照监控器,查看系统性能如何

通过快照监控器,抓取数据库的信息,分析数据库性能是否合理:

# db2 get snapshot for all on 数据库名 >log.txt

2、 数据库补丁级别

# db2level

四、 注意事项

1、 不要删除活动日志文件

DB2 的活动日志文件不能被删除。一旦 DB2 的活动日志文件被删除,或者所在的存储设备出现问题,则不可避免地造成 DB2 数据库系统宕机。

2、 注意交易日志存储空间

在归档日志模式下,如果没有使用自动归档方式,则存储的日志文件会不断增多,有可能造成日志所在的文件系统空间满。 当这种情况发生时,会根据参数 BLK_LOG_DSK_FUL 的配置而有不同的现象:

1)如果该参数启用,则 DB2 数据库可继续读 *** 作,但是写 *** 作会挂起

2)如果该参数没有启用,则 DB2 数据库会停止工作

两种情况下,都需要到日志所在的文件系统添加了空间才恢复正常。

3、 按照系统的实际工作量配置日志空间

DB2数据库通过日志文件维护数据的完整性和一致性。DB2 数据库的日志空间可通过如下公式计算:

日志空间 = (主日志文件 + 二级日志文件) * 日志文件尺寸

其中:

1) 主日志文件由参数 LOGPRIMARY 控制,

2) 二级日志文件由参数 LOGSECOND 控制

3) 日志文件尺寸由参数 LOGFILSIZ 控制

4) LOGPRIMARY + LOGSECOND <256 (不同的 DB2 版本略有不同,请参看相同版本的 DB2 手册确认)

4、 设置正确数据库代码页

由于数据库的代码页在数据库创建之后是无法修改的,所以在创建数据库时一定要选择正确的代码页。

错误的数据库代码页会造成 JDBC/ODBC 访问时中文字段被截断(包括控制中心),这种情况需要重建数据库以修改数据库代码页。

从全局规划来说,如果应用需要访问多个数据库,那么这多个数据库的代码页应该是一致的。

5、 检查许可证(License)安装情况

许可证过期会造成不必要的服务中断,所以在 DB2 安装完毕后,建议检察许可的安装情况

6、 创建数据库前调整好系统时间

在数据库创建好之后,调整系统时间会造成数据库内部时间戳的异常。数据库中一些对象和时间相关,一旦时间不准确要调整需要很小心。错误的时间调整可能会造成很多问题,如:

1)某些对象失效,例如 :

SQL0440N,找不到具有兼容自变量的类型为 “<例程类型>” 的名为 “<例程名>” 的已授权例程

2)数据库日志逻辑错误 ->宕机

3)常见错误 – 只调整时间,未调整时区

7、 不要随便执行 chown (chmod) –R (UNIX/Linux)

在实例目录下chown (chmod) -R 会造成

1) 在数据库服务器上 db2 connect to <dbname>能连接上数据库

2) db2 connect to <dbname>user ... using ...连接不上

8、 在归档日志模式下使用LOAD记得加NONRECOVERABLE参数

五、 附:以脱机方式重组表

以脱机方式重组表是整理表碎片的最快方法。重组可减少表所需的空间量并提高数据访问和查询性能。

必须具有 SYSADM、SYSCTRL、SYSMAINT 或 DBADM 权限,或者必须具有对表的 CONTROL 权限才能重组表。必须具有数据库连接才能重组表。

标识需要重组的表之后,可以对这些表运行 REORG 实用程序,并且可以选择对在这些表上定义的任何索引运行该实用程序。

1. 要使用 CLP 重组表,请发出 REORG TABLE 命令:

db2 reorg table test.employee

要使用临时表空间 mytemp 重组表,请输入:

db2 reorg table test.employee use mytemp

要重组表并根据索引 myindex 对行进行重新排序,请输入:

db2 reorg table test.employee index myindex

2. 要使用 SQL 调用语句重组表,请使用 ADMIN_CMD 过程发出 REORG TABLE 命令:

call sysproc.admin_cmd ('reorg table employee index myindex')

3. 要使用 DB2 管理 API 重组表,请使用 db2REORG API。

在重组表之后,应收集有关表的统计信息,以便优化器具有最准确的数据来评估查询访问方案。

六、 附:索引重组

通过删除和插入 *** 作对表进行更新后,索引的性能会降低,其表现方式如下:

• 叶子页分段

叶子页被分段之后,由于必须读取更多的叶子页才能访存表页,因此 I/O *** 作成本会增加。

• 物理索引页的顺序不再与这些页上的键顺序相匹配(此称为不良集群索引)。

叶子页出现不良集群情况后,顺序预取 *** 作的效率将降低,因此会导致更多的 I/O 等待。

• 形成的索引大于其最有效的级别数。

在此情况下应重组索引。

如果在创建索引时设置了 MINPCTUSED 参数,则在删除某个键且可用空间小于指定的百分比时,数据库服务器会自动合并索引叶子页。此过程称为联机索引整理碎片。但是,要复原索引集群和可用空间以及降低叶级别,请使用下列其中一种方法:

• 删除并重新创建索引。

• 使用 REORG INDEXES 命令联机重组索引。

因为此方法允许用户在重建表索引期间对表进行读写 *** 作,所以在生产环境中可能需要选择此方法。

• 使用允许脱机重组表及其索引的选项运行 REORG TABLE 命令。

联机索引重组

在使用 ALLOW WRITE ACCESS 选项运行 REORG INDEXES 命令时,如果同时允许对指定的表进行读写访问,则会重建该表的所有索引。进行重组时,对基础表所作的任何将会影响到索引的更改都将记录在 DB2® 日志中。另外,如果有任何内部内存缓冲区空间可供使用,则还将这些更改放在这样的内存空间中。重组将处理所记录的更改以便在重建索引时与当前写活动保持同步更新。内部内存缓冲区空间是根据需要从实用程序堆中分配的指定内存区域,它用来存储对正在创建或重组的索引所作的更改。使用内存缓冲区空间使索引重组 *** 作能够通过这样的方式来处理更改,即先直接从内存读取,然后读取日志(如有必要),但读取日志的时间要晚得多。在重组 *** 作完成后,将释放所分配的内存。重组完成后,重建的索引可能不是最佳集群的索引。如果为索引指定 PCTFREE,则在重组期间,每页上均会保留相应百分比的空间。

对于分区表,支持对各个索引进行联机索引重组和清除。要对各个索引进行重组,指定索引名:REORG INDEX index_name for TABLE table_name

对于空间索引或多维集群(MDC)表,不支持采用 ALLOW WRITE 方式的联机索引重组。

注: REORG INDEXES 命令的 CLEANUP ONLY 选项不能完全重组索引。CLEANUP ONLY ALL 选项将除去那些标记为“删除”且被认为要落实的键。此外,它还将释放所有标记为“删除”且被认为要落实的键所在的页。在释放页后,相邻的叶子页将会合并,前提是这样做可以在合并页上至少留出 PCTFREE 可用空间。PCTFREE 是指在创建索引时为其定义的可用空间百分比。CLEANUP ONLY PAGES 选项仅删除那些标记为“删除”且被认为要落实的所有键所在的页。

使用 CLEANUP ONLY 选项对分区表的索引进行重组时,支持任何访问级别。如果未指定 CLEANUP ONLY 选项,则缺省访问级别 ALLOW NO ACCESS 是唯一支持的访问级别。

REORG INDEXES 具有下列要求:

• 对索引和表具有 SYSADM、SYSMAINT、SYSCTRL 或 DBADM 权限,或者具有 CONTROL 特权。

• 用于存储索引的表空间的可用空间数量等于索引的当前大小

在发出 CREATE TABLE 语句时,考虑在大型表空间中重组索引。

• 其他日志空间

REORG INDEXES 需要记录其活动。因此,重组可能会失败,尤其是在系统繁忙和记录其他并发活动时。

注: 如果具有 ALLOW NO ACCESS 选项的 REORG INDEXES ALL 命令运行失败,则会标记索引无效并且此项 *** 作不可撤销。但是,如果具有 ALLOW READ ACCESS 选项的 REORG 命令或具有 ALLOW WRITE ACCESS 选项的 REORG 命令运行失败,则可以复原原来的索引对象。

七、 附:收集和更新统计信息的准则

RUNSTATS 命令收集表、索引和统计信息视图的统计信息,以为优化器提供准确信息进行访问方案选择。

在下列情况下,使用 RUNSTATS 实用程序来收集统计信息:

• 当数据已装入表中且已创建适当的索引时。

• 当在表中创建新的索引时。如果自从上次在表中运行 RUNSTATS 以来尚未修改表,则只需要对新的索引执行 RUNSTATS。

• 当一个表已用 REORG 实用程序重组时。

• 当通过数据修改、删除和插入已大量更新表及其索引时。(此处所指的“大量”可能表示有 10% 到 20% 的表和索引数据受影响。)

• 在绑定性能非常重要的应用程序之前

• 当您想要比较当前和先前统计信息时。如果定期更新统计信息,则可以及早发现性能问题。

• 当预取量更改时。

• 当使用了 REDISTRIBUTE DATABASE PARTITION GROUP 实用程序时。

注:

在先前版本的 DB2® 中,此命令使用了 NODEGROUP 关键字,而不是 DATABASE PARTITION GROUP 关键字。

• 使用 RUNSTATS 实用程序来收集关于 XML 列的统计信息。 使用 RUNSTATS 仅收集 XML 列的统计信息时,将保留 LOAD 或上一次执行 RUNSTATS 实用程序已收集的非 XML 列的现有统计信息。如果先前已收集关于一些 XML 列的统计信息,则在当前命令未收集关于该 XML 列的统计信息时,将删除先前收集的 XML 列的统计信息;在当前命令收集了关于该 XML 列的统计信息时,将替换先前收集的 XML 列的统计信息。

要提高 RUNSTATS 性能并保存用来存储统计信息的磁盘空间,考虑仅指定应该收集其数据分布统计信息的列。

理论上,您应在运行统计信息之后重新绑定应用程序。如果查询优化器具有新的统计信息,则它可以选择不同的访问方案。

如果您没有足够的时间一次收集全部的统计信息,则可以运行 RUNSTATS 来每次仅更新几个表、索引或统计信息视图的统计信息,并轮流完成该组对象。如果对选择性部分更新运行 RUNSTATS 期间由于表上的活动而产生了不一致性,则在查询优化期间将发出警告消息(SQL0437W,原因码 6)。例如,如果执行 RUNSTATS 来收集表分布统计信息,以及在某个表活动后,再次执行 RUNSTATS 来收集该表的索引统计信息,则可能发生这种情况。如果由于表上的活动产生了不一致并且在查询优化期间检测到这些不一致,则发出该警告消息。当发生这种情况时,应再次运行 RUNSTATS 来更新分布统计信息。

要确保索引统计信息和表同步,执行 RUNSTATS 来同时收集表和索引统计信息。索引统计信息保留自上次运行 RUNSTATS 以来收集的大部分表和列的统计信息。如果自上次收集该表的统计信息以来已对该表做了大量修改,则只收集该表的索引统计信息将使两组统计信息不能在所有节点上都同步。

对生产系统调用 RUNSTATS 可能会对生产工作负载的性能产生负面影响。RUNSTATS 实用程序现在支持调速选项,在执行较高级别的数据库活动期间,可以使用调速选项来限制执行 RUNSTATS 的性能影响。

在分区数据库环境中收集表的统计信息时,RUNSTATS 仅收集执行该命令的数据库分区上的表的统计信息。将此数据库分区的 RUNSTATS 结果推广到其他数据库分区。如果执行 RUNSTATS 的数据库分区不包含特定表的一部分,则将请求发送到数据库分区组中包含该表一部分的第一个数据库分区。

收集统计信息视图的统计信息时,将收集所有包含该视图引用的基本表的数据库分区的统计信息。

考虑以下技巧来提高 RUNSTATS 的效率和已收集的统计信息的有效性:

• 仅对用来连接表的列或 WHERE、GROUP BY 以及查询的类似子句中的列收集统计信息。如果对这些列建立了索引,则可以用 RUNSTATS 命令的 ONLY ON KEY COLUMNS 子句指定列。

• 为特定表和表中特定列定制 num_freqvalues 和 num_quantiles 的值。

• 使用 SAMPLE DETAILED 子句收集 DETAILED 索引统计信息,以减少对详细的索引统计信息执行的后台计算量。SAMPLE DETAILED 子句减少收集统计信息所需要的时间,并在大多数情况下产生足够的精度。

• 当创建已填写的表的索引时,添加 COLLECT STATISTICS 子句来在创建索引时创建统计信息。

• 当添加或除去了大量表行时,或如果更新了收集其统计信息的列中的数据,则再次执行 RUNSTATS 来更新统计信息。

• 因为 RUNSTATS 仅收集单个数据库分区的统计信息,所以,如果数据不是在所有数据库分区中一致分发的,则统计信息将不太准确。如果您怀疑存在变形数据分发,则您可能想要在执行 RUNSTATS 之前使用 REDISTRIBUTE DATABASE PARTITION GROUP 命令来在各数据库分区之间再分发数据。

八、 附:使用 CLP 捕获数据库运行状况快照

可从 CLP 使用 GET HEALTH SNAPSHOT 命令来捕获运行状况快照。该命令语法支持检索运行状况监视器监视的不同对象类型的运行状况快照信息。

先决条件

必须具有实例连接才能捕获运行状况快照。如果没有实例连接,则创建缺省实例连接。要获取远程实例的快照,必须先连接至该实例。

过程

要使用 CLP 捕获数据库运行状况快照

1. 从 CLP 发出带有期望参数的 GET HEALTH SNAPSHOT 命令。

在以下示例中,将在启动数据库管理器之后立即捕获数据库管理器级别运行状况快照。

db2 get health snapshot for dbm

2. 对于分区数据库系统,可为特定分区捕获专门的数据库快照,或者为所有分区捕获全局的数据库快照。要对特定分区(如分区号 2)上的数据库捕获运行状况快照,请发出以下命令:

db2 get health snapshot for db on sample at dbpartitionnum 2

要对所有分区上的所有应用程序捕获数据库快照,请发出以下命令:

db2 get health snapshot for db on sample global

以下命令捕获的运行状况快照带有附加详细信息,包括公式、附加信息和运行状况指示器历史记录:

db2 get health snapshot for db on sample show detail

3. 对于基于集合状态的运行状况指示器,可对所有集合对象捕获数据库快照,而不考虑这些对象的状态。常规 GET HEALTH SNAPSHOT FOR DB 命令返回所有集合对象,这些对象需要针对所有基于集合状态的运行状况指示器的警报。

要对列示了所有集合对象的数据库捕获运行状况快照,请发出以下命令:

db2 get health snapshot for db on sample with full collection

Alpha测试和Beta测试都是由用户来进行测试,但是目的并不是项目或者产品的验收,而是属于系统测试的范畴,一般Alpha测试 也可认为是实验室测试由非专业人士参加,但是一般有专业的测试工程师配合指导,测试问题马上能的到反馈,定位准确,但是代价比较大,这种测试方法适合项目级应用; Beta测试则是开放型测试,使用于产品的测试,内部测试稳定后,发布Beta版本软件让公共用户测试,公司一般不能准确知道是哪些人使用了软件,并且他们发现的软件缺陷也不能准确有效的反馈给开发部门,需要将收集的信息经过整理得到有用的缺陷报告。这种测试方法得到的BUG数量不可预测,但是成本较低,一般只需做信息的收集整理工作!验收测试:仅限于做项目的公司,部门内部测试稳定后,根据合同中需求由发包商进行验收测试。如何对外包的项目进行验收测试 随着当今技术和市场环境的变化,越来越多的企业选择将软件项目外包,同时也有更多成熟的大型软件企业加入到软件项目的承包队伍中。外包的软件项目越来越多,如何对这些外包的项目进行验收测试日益成为企业的一个关键问题。 用户验收测试的总体思路 用户验收测试是软件开发结束后,用户对软件产品投入实际应用以前进行的最后一次质量检验活动。它要回答开发的软件产品是否符合预期的各项要求,以及用户能否接受的问题。由于它不只是检验软件某个方面的质量,而是要进行全面的质量检验,并且要决定软件是否合格,因此验收测试是一项严格的正式测试活动。需要根据事先制订的计划,进行软件配置评审、功能测试、性能测试等多方面检测。 用户验收测试可以分为两个大的部分:软件配置审核和可执行程序测试,其大致顺序可分为:文档审核、源代码审核、配置脚本审核、测试程序或脚本审核、可执行程序测试。 要注意的是,在开发方将软件提交用户方进行验收测试之前,必须保证开发方本身已经对软件的各方面进行了足够的正式测试(当然,这里的“足够”,本身是很难准确定量的)。 用户在按照合同接收并清点开发方的提交物时(包括以前已经提交的),要查看开发方提供的各种审核报告和测试报告内容是否齐全,再加上平时对开发方工作情况的了解,基本可以初步判断开发方是否已经进行了足够的正式测试。 用户验收测试的每一个相对独立的部分,都应该有目标(本步骤的目的)、启动标准(着手本步骤必须满足的条件)、活动(构成本步骤的具体活动)、完成标准(完成本步骤要满足的条件)和度量(应该收集的产品与过程数据)。在实际验收测试过程中,收集度量数据,不是一件容易的事情。 软件配置审核 对于一个外包的软件项目而言,软件承包方通常要提供如下相关的软件配置内容: . 可执行程序、源程序、配置脚本、测试程序或脚本。 . 主要的开发类文档:《需求分析说明书》、《概要设计说明书》、《详细设计说明书》、《数据库设计说明书》、《测试计划》、《测试报告》、《程序维护手册》、《程序员开发手册》、《用户 *** 作手册》、《项目总结报告》。 . 主要的管理类文档:《项目计划书》、《质量控制计划》、《配置管理计划》、《用户培训计划》、《质量总结报告》、《评审报告》、《会议记录》、《开发进度月报》。 . 在开发类文档中,容易被忽视的文档有《程序维护手册》和《程序员开发手册》。 《程序维护手册》的主要内容包括:系统说明(包括程序说明)、 *** 作环境、维护过程、源代码清单等,编写目的是为将来的维护、修改和再次开发工作提供有用的技术信息。 《程序员开发手册》的主要内容包括:系统目标、开发环境使用说明、测试环境使用说明、编码规范及相应的流程等,实际上就是程序员的培训手册。 不同大小的项目,都必须具备上述的文档内容,只是可以根据实际情况进行重新组织。对上述的提交物,最好在合同中规定阶段提交的时机,以免发生纠纷。 通常,正式的审核过程分为5 个步骤:计划、预备会议(可选)、准备阶段、审核会议和问题追踪。预备会议是对审核内容进行介绍并讨论。准备阶段就是各责任人事先审核并记录发现的问题。审核会议是最终确定工作产品中包含的错误和缺陷。 审核要达到的基本目标是:根据共同制定的审核表,尽可能地发现被审核内容中存在的问题,并最终得到解决。在根据相应的审核表进行文档审核和源代码审核时,还要注意文档与源代码的一致性。 在实际的验收测试执行过程中,常常会发现文档审核是最难的工作,一方面由于市场需求等方面的压力使这项工作常常被弱化或推迟,造成持续时间变长,加大文档审核的难度另一方面,文档审核中不易把握的地方非常多,每个项目都有一些特别的地方,而且也很难找到可用的参考资料。 可执行程序的测试 在文档审核、源代码审核、配置脚本审核、测试程序或脚本审核都顺利完成,就可以进行验收测试的最后一个步骤——可执行程序的测试,它包括功能、性能等方面的测试,每种测试也都包括目标、启动标准、活动、完成标准和度量等五部分。 要注意的是不能直接使用开发方提供的可执行程序用于测试,而要按照开发方提供的编译步骤,从源代码重新生成可执行程序。 在真正进行用户验收测试之前一般应该已经完成了以下工作(也可以根据实际情况有选择地采用或增加): . 软件开发已经完成,并全部解决了已知的软件缺陷。 . 验收测试计划已经过评审并批准,并且置于文档控制之下。 . 对软件需求说明书的审查已经完成。 . 对概要设计、详细设计的审查已经完成。 . 对所有关键模块的代码审查已经完成。 . 对单元、集成、系统测试计划和报告的审查已经完成。 . 所有的测试脚本已完成,并至少执行过一次,且通过评审。 . 使用配置管理工具且代码置于配置控制之下。 . 软件问题处理流程已经就绪。 . 已经制定、评审并批准验收测试完成标准。 具体的测试内容通常可以包括:安装(升级)、启动与关机、功能测试(正例、重要算法、边界、时序、反例、错误处理)、性能测试(正常的负载、容量变化)、压力测试(临界的负载、容量变化)、配置测试、平台测试、安全性测试、恢复测试(在出现掉电、硬件故障或切换、网络故障等情况时,系统是否能够正常运行)、可靠性测试等。 性能测试和压力测试一般情况下是在一起进行,通常还需要辅助工具的支持。在进行性能测试和压力测试时,测试范围必须限定在那些使用频度高的和时间要求苛刻的软件功能子集中。由于开发方已经事先进行过性能测试和压力测试,因此可以直接使用开发方的辅助工具。也可以通过购买或自己开发来获得辅助工具。具体的测试方法可以参考相关的软件工程书籍。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12014872.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存