ᕕ( ᐛ )ᕗ Jimyag's Blog

软件测试技术

软件测试技术的复习资料

填空题

计算机软件是包括程序、数据和文档的完整集合。

软件评估中常见的 3 个质量模型是 McCall、Boehm 和 ISO9126。

软件测试的过程模型包括 V 模型、W 模型和 H 模型等。

软件评估的主要方法包括缺陷评估、覆盖评测、质量评测

常用的 3 种排错方法包括:原始类排错法、回溯法、归纳和演绎法

最常用的覆盖评价是基于需求的测试覆盖、基于代码的测试覆盖。

缺陷分析通常的度量形式包括缺陷发现率、缺陷密度、缺陷潜伏期、整体软件缺陷清除率

根据测试文档的不同作用,通常分为前置作业文档、后置作业文档。

PDCA 的循环理念主要包括计划、执行、检查和改进四个阶段。

风险管理的基本内容包括风险评估、风险控制。

软件项目的成本主要包括项目直接成本、管理费用、期间费用。

面向对象的集成测试中,对象交互的测试根据类的类型可以分为原始类测试、汇集类测试、协作类测试、

对 OOD 的测试可以从三个方面考虑:对认定的类的测试、对构造的类层次结构的测试和对类库的支持的测试。

HTTP 协议的作用原理包括四个步骤,分别是:连接请求、应答、关闭。

简答题

请简述软件危机的主要表现

软件生存周期包括那几个阶段?其中第一阶段又可以分为哪两个阶段?

可行性研究和需求分析

请列举软件产生错误的主要原因(至少 6 项)

列举常见的 3 个质量模型,并说明比较普遍的质量模型包含的两层结构

McCall 模型、Boehm 模型和 ISO9126。

第一层是按大类划分质量特性,叫做基本质量特性

第二层是每个大类所包含的子类质量特性

最后在各个类别的质量特性中一一列出对应的或相关的标准

请列出软件测试的基本原则

按照过程分类,软件测试包括哪些过程?

请介绍软件测试的一般流程

请介绍制定测试计划的原则

请介绍软件测试计划的作用

白盒测试的方法有哪些(至少说明 5 种)?

黑盒测试主要是为了发现软件中的哪几类错误?

白盒测试要对程序模块进行什么检查?

什么是程序插桩法?

程序插桩法是借助向被测程序中插入操作,来实现测试目的的方法,即向源程序中添加一些语句,实现对程序语句的执行、变量的变化等情况进行检查。

请列举逻辑覆盖的类型,并按由弱到强的顺序排列

请列举功能测试包括的方法(至少 6 项)

请列举非功能测试包括的方法(至少 6 项)

请介绍单元测试的原则

请说明单元测试的主要任务

请介绍集成测试的主要任务

请介绍系统测试需要完成的测试

请介绍验收测试的主要内容

什么是α和β测试?

α测试是在软件开发公司内模拟软件系统的运行环境下的一种验收测试,即软件开发公司组织内部人员、模拟各类用户行为对即将面市的软件产品进行测试。经过α测试调整的软件产品称为β版本,β测试是指软件开发公司组织各方面的典型用户在日常工作中实际使用β版本。

请介绍测试用例的作用

测试用例设计的基本原则

测试用例执行中应该注意哪几个问题?

请介绍软件缺陷的有效性描述规则

请列举软件缺陷生命周期的状态

如果找到的软件缺陷要采取繁杂的步骤才能再现,应采取什么方法来分离和再现软件缺陷?

如何正确面对软件缺陷

软件测试的评测方法主要包括哪两类?每类又包含哪些方法?

包括:覆盖评测和质量评测

覆盖评测包括基于需求的测试覆盖和基于代码的测试覆盖。

质量评测主要通过缺陷分析来实现,具体包括:缺陷发现率、缺陷潜伏期、缺陷密度和整体软件缺陷清除率。

软件测试评测的主要目的是什么?

请说明测试项目的基本特性

请介绍测试项目管理的基本原则

软件测试文档的作用是什么?

软件测试项目的过程管理主要包括哪些?

软件测试配置管理包括哪几个基本活动

请说明面向对象软件测试的三个层次,并说明第一层测试充分性的三个标准

类测试、类簇测试、系统测试

基于类状态的覆盖率、基于约束的覆盖率、基于代码的覆盖率

OOA 阶段的测试可以划分为哪几个方面?

请介绍自动化测试的好处

请说明软件自动化测试的引入条件

请说明软件测试自动化的实施过程

Web 性能测试具体目标包括哪些?

Web 应用系统性能测试人员应具有哪些能力?

Web 性能测试包含哪些测试类型?

Web 全面性能测试模型中,Web 性能测试的八个类别包括哪些主要内容?

Web 应用的功能测试包括哪些内容?

Web 界面测试的目标包括哪些?

Web 界面测试的主要元素包括哪些?

Web 界面测试内容包括哪些?

Web 应用级的安全测试主要包括哪些?

Web 传输级的安全测试主要包括哪些?

计算题

按照基本路径测试法的步骤确定出需要测试的独立路径

int cal(int count, int num) {
    int x = 0;
    while (count > 0) {
        if (num == 0) {
            x = x * 2;
            break;
        } else {
            x = x + 10;
        }
        count--;
        num--;
    }
    return x;
}

解答

  1. 给代码行标号
  2. 从判断逻辑开始进行处理
  3. 遇到关键字可以跳过
  4. 画图
  5. 标边
  6. 计算环形复杂度 - 给定流图 G 的圈复杂度 V(G),定义为 V(G)=P+1,P 是流图 G 中圈的数量。
  7. 找出路径 -路径一定要包含开始到结束,不能中断
  8. 写测试用例

解答

  1. 画图

image-20220518212758452

  1. 标边

image-20220518212846870

  1. 计算环形复杂度

image-20220518213114368

总共有两个环,环形复杂度是,也就是有三条基本路径。V(G)=3

  1. 找出路径

第一条:A (3-13)

第二条:B、C、D(3-4-5-13)

第三条:B、E、F、G、H、A(3-4-8-10-11-3-13)

  1. 写出测试用例

第一条:输入 count =0,num = 0,。输出:x=0;

第二条:输入 count = 1,num=0,输出,x = 0

第三条:输入 count = 1,num = 2,输出:x=10

按照基本路径测试法的步骤确定出需要测试的独立路径

void sort(int num, int itype) {
    int x = 0;
    int y = 0;
    while (num > 0) {
        if (itype == 0) {
            x = y + 2;
            break;
        } else {
            y = y + 10;
        }
    }
}

A-D-E 应该变为 ADEABC

image-20220518231531922

以下代码的功能是将 a,b,c 三个浮点数按从小到大的顺序排列。即代码运行结束后,a 中存放的是三个数中最小的,c 中存放的是三个数中最大的请画出流程图,并写出路径测试的测试用例

void exchange() {
    float a, b, c, t;
    if (a > b) {
        t = a;
        a = b;
        b = t;
    }
    if (a > c) {
        t = a;
        a = c;
        c = t;
    }
    if (b > c) {
        t = b;
        b = c;
        c = t;
    }
}

image-20220518223109955

请画出流程图,并写出路径测试的测试用例

void func(int n ,int flag) {
    int i = 0;
    int j = 0;
    while (n > 0) {
        if (flag == 0) {
            i = j * 2;
            if (i > 30) break;
        } else {
            j = j + 10;
            flag = flag - 1;
        }
        n = n - 1;
    }
}

ABFG 变为 ABFGABC

ADEG 变为 ADEGABC

image-20220518225646849

请设计测试用例,使得以下程序满足基本路径测试

int Test(int num, int x) 
{
    int temp = 0;
    while (num > 0) 
    {
        if (x > 0) 
        {
            temp = num + 100;
            break;
        } 
        else 
        {
            if (x == 0) 
            {
                temp = temp + 10;
            } 
            else 
            {
                temp = temp + 20;
            }
        }
        num--;
    }
    return temp;
}

img

V(G)=3 个判定结点 +1=4

1 B (4, 24)

2 C, E, J (4, 6, 8, 24)

3 C, D, F, H, A, B (4, 6, 13, 15, 22, 4, 24)

4 C, D, G, I, A, B (4, 6, 13, 19, 22, 4, 24)

1 B (4, 24)

​ 输入数据:num=0,或者是 num<0 的某一个值。

​ 预期结果:temp=0.

2 C, E, J (4, 6, 8, 24)

​ 输入数据:x =1;num=1

​ 预期结果:temp=101.

3 C, D, F, H, A, B (4, 6, 13, 15, 22, 4, 24)

​ 输入数据:num=1;x=0

​ 预期结果:temp=10.

4 C, D, G, I, A, B (4, 6, 13, 19, 22, 4, 24)

​ 输入数据:num =1;x=-1

​ 预期结果:temp=20.

功能描述:如果 x<=3000,y 的值为 0

如果 3000<x<=5000,则 y 的值为 x 超过 3000 部分的 3%;如果 5000<x<8000,则 y 的值为:x 超过 5000 部分的 5% 加上超过 3000 部分的 3%。请用等价类划分和边界值分析相结合来设计测试用例。

有效等价类

x<=3000:

3000<x<=5000

如果 5000<x<8000

无效等价类

小于 3000

大于等于 8000

功能描述:密码输入框的字符长度要求为最短 4 个字符

最长 20 个字符。请用等价类划分和边界值分析相结合来设计测试用例。(要考虑字符的类型)

同上

“……对 1.2 米以下儿童免票,对 1.2-1.5 米的儿童半票,对教师、军人或 70 岁以上的老人,应给予优先的业务处理……”这里假设“优先的业务处理”已在别处有更严格的定义,请建立判定表。(15 分)

条件桩:

身高小于 1.2m

身高在 1.2-1.5m

是儿童

是教师

是军人

年龄大于 70 岁

动作桩:

免票

半票

优先处理

请用等价类划分法设计测试用例

void triangle(float a, float b, float c) {
    if (a > 0 && b > 0 && c > 0 && a + b > c && a + c > b && b + c > a) {
        if (a == b && b == c) { printf("等边三角形"); }
        else if (a == b || a == c || b == c) { printf("等腰三角形"); }
        else { printf("一般三角形"); }
    } else { printf("输入无效"); }
}

img

请用等价类划分法设计下列代码的单元测试用例

float jisuan(float a) {
    if (a > 2000) {
        if (a > 5000)
            return 3000 * 0.2 + (a - 5000) * 0.3;
        else
            return (a - 2000) * 0.2;
    } else {
        if (a > 800)
            return (a - 800) * 0.1;
    }
}

(2000-5000]:

5000-∞:

(800-2000]:

无效等价类

(∞-800):

某单位对其在大学以上学历的职工安排工作(工作岗位用 AA-FF 表示),方针如下

如果年龄不满 18 岁,文化程度为大学,若是男性,则任 AA。

若是女性,则任 BB;

如果年满 18 但不足 50 岁,文化程度是研究生,不分男女性,均任 CC。

文化程度是大学,则不分男女性均任 DD;

如果年满 50 岁以上,文化程度是研究生,若是男性,则任 CC,

文化程度是大学,若是男性,则任 EE。

若是女性,则任 FF。

请对以上说明绘制判定表。为了便于绘制,条件符号使用以下内容

条件名 取值 符号
性别 男性、女性 M、F
年龄 <18、18<=年龄<50、>=50 C、Y、L
文化程度 研究生、大学生 G、U

image-20220519112240592

合并

image-20220517232111416

“……对军人、残疾人或 70 岁以上的老人,应给予优先的业务处理……”

这里假设“优先的业务处理”已在别处有更严格的定义,请建立判定表。

image-20220519112758969

image-20220517232133461

功能描述:输入框的输入内容要求为数字或字母

长度要求为最短 6 个字符,最长 20 个字符。请用等价类划分和边界值分析相结合来设计测试用例

有效等价类:

  1. 长度 6-20:
  2. 内容只有数字
  3. 内容只有字母
  4. 内容只包含数字和字母

无效等价类:

  1. 长度小于 6:
  2. 长度大于 20:
  3. 内容包含特殊字符

有效等价类的测试:

jimyag 测试了 1 和 3

jimyagjimyagjimyagji 测试了 1 和 3

jimyagjimyagj 测试了 1 和 3

123456 测试了 1 和 2

1234567891234 测试了 1 和 2

12345678912345678912 测试了 1 和 2

jim123 测试了 1 和 4

jimyagjimyag12345678 测试了 1 和 4

无效等价类的测试

长度为 5 只包含数字

长度为 5 只包含字母

长度为 5 包含字母和数字

长度为 5 包含特殊字符

长度为 21 也是

“……对成绩积点在 2.5 以上,并且参加过竞赛或创新项目的同学,在各类奖励中应给予优先考虑……”请建立判定表

image-20220519120734797

某保险公司对客户制定收费标准(标准等级用 AA-GG 表示)

标准如下:如果年龄不满 18 岁,不分男女性,标准为 AA;如果年满 18 但不足 50 岁,大病例史为无,不分男女,标准 BB;如果年满 18 但不足 50 岁,大病例史为有,若是男性,标准为 CC,若是女性,标准为 DD;如果年满 50 岁以上,大病例史为无,若是男性,标准为 EE,若是女性,标准为 FF;如果年满 50 岁以上,大病例史为有,不分男女,标准为 GG。请对以上说明绘制判定表。为了便于绘制,条件符号使用以下内容

条件名 取值 符号
性别 男性、女性 M、F
年龄 <18、18<=年龄<50、>=50 C、Y、L
大病史情况 有、无 H、N

程序结构图如下图所示,请画出自顶向下集成的过程

img

img

程序结构图如下图所示,请画出自底向上集成的过程

img

image-20220520103848679

需求描述如下:“输入三个整数 a、b、c,分别作为三边的边长构成三角形。”

通过程序判定所构成的三角形的类型,当此三角形为一般三角形、等腰三角形及等边三角形时,用等价类划分方法为该程序进行测试用例设计

有效等价类:

三个数

a>0

b>0

c>0

a+b>c

a+c>b

b+c>a

a=b

a=c

b=c

a=b=c

无效等价类,

一个数

两个数

a<=0

b<=0

c<=0

a+b<=c

a+c<=b

b+c<=a

a=b a!=b &&a!=c&&b!=c

a!=c

b!=c

b!=c

有一个处理单价为 1 元 5 角的盒装饮料的自动售货机软件

若投入 1 元 5 角硬币,按下“可乐”、“雪碧”或“红茶”按钮,相应的饮料就送出来。若投入的是 2 元硬币,在送出饮料的同时退换 5 角硬币,试用因果图法设计测试用例

解答

原因:

  1. 投入 1.5 元硬币
  2. 投入 2 元
  3. 按可乐
  4. 按雪碧
  5. 按红茶

中间状态:

  1. 已投币
  2. 按钮

结果:

  1. 退还 5 硬币
  2. 送出可乐
  3. 送出雪碧
  4. 送出红茶

image-20220519214625816

手机号码验证的描述如下

输入的内容必须是数字,并且位数为 11 位,满足以上情况显示输入正确;如果输入内容有非数字,则显示内容有误;如果输入位数不为 11 位,则显示位数有误。请用因果图法设计测试用例

条件:

位数为 11 位

输入全是数字

结果:

输入正确,内容有误,位数有误

#复习资料