《软件质量保证技术与软件测试》

教学内容

第一章  软件质量管理(12)

1.1质量和软件的概念

质量的初步认识论

什么叫质量、影响质量的因素、质量目标、质量成本、质量管理、质量体系

什么是软件

1.2 软件开发过程

1.2.1 软件开发项目组

1.2.2 软件开发过程

1.2.3 软件开发模式

1.2.4 软件开发与软件测试的关系

1.2.5 软件神话

1.3 软件质量的概念

1.3.1 软件质量的定义

1.3.2 影响软件质量的主要因素

1.3.3 软件质量模型

1.3.4 软件产品质量标准介绍(GB/T 17544)

1.4 软件质量管理

1.4.1 质量管理的基本概念(质量管理体系评价)

1.4.2 软件质量管理的主要活动

1.4.3 软件质量标准简介

ISO9000标准、软件过程成熟度模型(CMM)、ISO/IEC 15504(SPICE)ISO/IEC 12207

1.4.4 软件文件标准与规范(国标)

1.4.5 软件质量管理实践

建立和实施质量管理体系的步骤、软件质量管理实践(CMM2)、软件生命周期质量管理

1.4.6 建立软件测试管理体系

第二章  软件测试综述(5)

2.1 软件测试的背景

2.1.1 软件错误和软件失效的案例

2.1.2 软件可靠性问题

2.1.3软件缺陷是什么

2.1.4 软件缺陷分类

2.1.5 软件缺陷的产生

2.1.6 软件缺陷修复的代价

2.2 软件测试概述

2.2.1 软件测试的发展

2.2.2 软件测试的定义

2.2.3 软件测试的重要性

2.2.4 软件测试的分类

2.2.5软件测试的目的和原则

2.2.6 软件测试活动

2.2.7 软件测试技术概要

2.2.8 软件测试误区

2.2.9 测试员应有的素质

2.3 软件测试的模型

2.3.1 V模型

2.3.2 W模型

2.3.3 H模型

2.3.4 X模型

2.3.5 前置模型

第三章 测试基础 - 黑盒测试用例设计(6)

4.1 测试用例设计概述

4.1.1 测试用例的定义

4.1.2 测试用例的重要性

4.1.3 好测试用例的特点

4.1.4 设计测试用例的基本准则

4.1.5 设计测试用例的着眼点

4.1.6 测试用例的编写标准

4.1.7 测试用例设计的误区

4.2 黑盒测试的概念

4.3 黑盒测试的数学知识

4.3.1 集合论

4.3.2 函数

4.3.3 命题逻辑

4.3.4

4.4 黑盒测试用例设计技术

4.4.1 等价类划分方法

4.4.2 边界值分析方法

4.4.3 错误推测方法

4.4.4 因果图方法

4.4.5 判定表驱动分析方法

4.4.6 场景设计方法

4.4.7 其他几种方法

4.4.8 功能性测试小结

第四章 测试基础 静态测试(1)

第五章 测试基础 - 白盒测试用例设计(5)

5.1 白盒测试概念

5.2 逻辑驱动测试

5.2.1 语句覆盖

5.2.2 判定覆盖(分支覆盖)

5.2.3 条件覆盖

5.2.4 判定/条件覆盖

5.2.5 条件组合覆盖

5.3 基本路径测试

5.4 控制结构测试的变种

5.4.1 条件测试

5.4.2 数据流测试

5.4.3 循环测试

5.5 面向对象的白盒测试

第六章 测试技术 - 软件测试策略(5)

6.1 概述

6.2 单元测试

6.3 集成测试

6.4 确认测试

6.5 系统测试

6.6 验收测试

第七章 测试技术 常用测试(5)

7.1 测试产品说明书

7.2 配置测试

7.3 外国语言测试

7.4 易用性测试

7.5 文档测试

7.6 网站测试

7.7 Web进行压力测试

7.8 α测试和β测试

7.9 Client/Server 测试

7.10 实时系统测试

7.11 面向对象的软件测试

7.12 其他测试

7.13 调试

第八章  软件测试自动化(3)

8.1 自动化测试基础

8.1.1 自动化测试的意义

8.1.2 自动化测试的定义和引入

8.1.3 自动化测试的原理和方法

8.1.4 自动化测试工具的作用及优势

8.1.5 软件自动化测试生存周期方法学

8.1.6 软件自动化测试生存周期方法学的应用

8.1.6 自动化测试存在的一些问题和限制

8.1.8 建立正确的自动化测试目标

8.2 软件自动化测试工具简述

8.2.1 自动化测试工具的特征

8.2.2 自动化测试工具的分类

8.2.3 选择自动化测试工具

8.2.4 常用测试工具概要

8.3 NUnit使用介绍

8.4 Web Application Stress介绍

第九章  使用软件文档(3)

9.1 计划测试工作

9.1.1 测试计划的目标

9.1.2 测试计划模板

9.1.3 测试计划的主题

9.2 编写、执行和跟踪测试用例

9.2.1 测试用例计划的目标

9.2.2 测试用例计划综述

9.2.3 测试用例组织和跟踪

9.3 报告发现的问题

9.3.1 软件测试报告

9.3.2 设法修复软件缺陷

9.3.3 分离和再现软件缺陷

9.3.4 并非所有软件缺陷生来就是平等的

9.3.5 软件缺陷的生命周期

9.3.6 软件缺陷跟踪系统

附:

       测试技术研究介绍(3

 

实验

一、测试用例设计                   

以三角形(Triangle)程序为例进行黑盒测试,掌握用边界值方法、等价划分方法、决策表方法设计测试用例的方法和执行测试的过程。

PriorDate函数为例进行白盒测试,掌握语句覆盖、分支覆盖、条件覆盖、分支/条件覆盖、条件组合覆盖及基本路径测试等测试策略

二、单元测试工具(CNnit/CppUnit/JUnit/NUnit)的使用

针对C/C++/Java/DotNet等程序单元模块,熟练掌握单元测试工具的运用。

三、Web测试工具认识实验

了解WASMicrosoftWeb Application Stress Tool)服务器负载测试软件。

四、RFT软件的安装和初步使用

了解RFT软件的使用环境及主要功能。

五、测试脚本录制及编辑

通过实验,掌握RFT的几种测试脚本录制方法,理解GUI Map的作用。

 

一、测试用例设计

1、编写出“三角形问题”程序(EXE),与另一同学交换。然后,对交换来的“三角形问题”程序进行黑盒测试,即用边界值方法、等价类划分方法、决策表方法设计测试用例,执行测试,给出测试报告,实验报告。

 

2PriorDateNextDate的逆函数,PriorDate的伪代码参考如下,请根据代码调通程序并进行白盒测试,即用语句覆盖、分支覆盖、条件覆盖、分支/条件覆盖、条件组合覆盖及基本路径测试方法,写出测试用例,执行测试,给出测试报告,实验报告。

#include<iostream.h>

void main()

{

       int lastday,lastmonth,lastyear;

       int day,month,year;

       bool c1,c2,c3;

       cout<<"Enter today's date in form MM DD YYYY";

       cin>>month>>day>>year;

       c1=(day>=1)&&(day<=31);

       c2=(month>=1)&&(month<=12);

       c3=(year>=1812)&&(year<=2012);

       if (!c1)

              cout<<"Value of day not in the range 1...31"<<"\n";

       if (!c2)

              cout<<"Value of month not in the range 1...12"<<"\n";

       if (!c3)

              cout<<"Value of year not in the range 1812...2012"<<"\n";

       do

       {

     switch(month)

        {

              case 5:

              case 7:

              case 10:

              case 12:

                     if(day>1)

                     {

                            lastday=day-1;

                            lastmonth=month;

                            lastyear=year;

                     }

                     else

                     {

                            lastday=30;

                            lastmonth=month-1;

                            lastyear=year;

                     }

                     break;

              case 2:

              case 4:

              case 6:

              case 8:

              case 9:

              case 11:

                     if(day>1)

                     {

                            lastday=day-1;

                            lastmonth=month;

                            lastyear=year;

                     }

                     else

                     {

                            lastday=31;

                            lastmonth=month-1;

                            lastyear=year;

                     }

                     break;

              case 3:

                     if(day>1)

                     {

                            lastday=day-1;

                            lastmonth=month;

                            lastyear=year;

                     }

                     else

                     {

                            if(year%4==0&&year%100!=0||year%400==0)

                            {

                                   lastday=29;

                                   lastmonth=2;

                                   lastyear=year;

                            }

                            else

                            {

                                   lastday=28;

                                   lastmonth=2;

                                   lastyear=year;

                            }

                     }

                     break;

              case 1:

                     if(day>1)

                     {

                            lastday=day-1;

                            lastmonth=month;

                            lastyear=year;

                     }

                     else

                     {

                            lastday=31;

                            lastmonth=12;

                            if(year!=1812)

                                   lastyear=year-1;

                            else cout<<"lastyear is not in range";

                     }

                     break;

              default:

                     cout<<"error!";

 

        }

       if(c1&&c2&&c3)

       cout<<"\n"<<"the lastday is"<<lastmonth<<"  "<<lastday<<"  "<<lastyear;

       return;

       }while(c1&&c2&&c3);

}