单元作业

第1周 软件质量保证基础知识

请比较软件质量保证和软件测试。

回答

首先,都是为了保证和改进软件的质量。其次,SQA面向过程,注重减少开发过程中的错误做法;软件测试面向产品,注重发现产品中的缺陷。最后,SQA一般通过改进开发过程来改进产品。因此,软件质量保证和软件测试都是非常必要的。

给定一个软件,是否可以采取穷尽性测试来发现程序中的所有缺陷?为什么?

回答:

采取穷尽性测试通常是不现实和不可行的。首先,如果采用黑盒测试技术,我们通常无法对所有的输入及其组合进行穷尽性测试;因为,程序的输入通常有非常多的取值。其次,如果采用白盒测试技术,我们通常无法对所有的路径进行穷尽性测试;因为,程序通常包含大量路径。再次,即使我们可以采取穷尽性路径测试,程序中也可能会存在错误。例如:用户要求的是一个排序程序,但开发的是一个查询软件;开发的软件遗漏了某些路径;等等。因此,无法采取穷尽性测试来发现程序中的所有缺陷。此外,通常,无论采用什么测试技术,都不能发现软件中的所有缺陷。

第2周 软件测试流程

可以从哪些维度来区分测试技术?用户测试(User testing)、易用性测试(Usability testing)和UI测试(User Interface testing),它们的区别是什么?

回答

可以从5个维度来区分测试技术。

  • 测试者:谁执行测试工作?
  • 内容/覆盖:要测什么?
  • 潜在的问题:期望发现哪类问题?
  • 活动:如何执行测试?
  • 评估:如何判断测试用例是否通过?

用户测试、易用性测试和UI测试,它们看起来相似,但实际上它们并不相同。可以使用上述维度来区分。

  • 用户测试关注的是谁来执行测试,而不关心如何测试、测试什么、要发现哪类问题、如何判断测试是否通过。
  • 易用性测试关注软件使用起来是否便捷、用户体验是否良好——关注的是潜在的问题;易用性测试不关心谁来测试、如何测试、测试什么、如何判断是否通过
  • UI测试关注要测试哪些事物,而不关心谁来测试、如何测试、要发现什么问题、如何判断是否通过等。

在测试过程中,为什么要进行跟随测试?如何进行跟随测试?

回答

当我们执行一个测试用例并发现了失效,此时我们看到的可能是一个表象,并没有找到由该缺陷所导致失效的最佳测试用例。因此,采用跟随测试来尝试着说明这个缺陷比一开始看到的更加严重和更加容易出现。跟随测试是一种探索性测试,有助于帮助开发人员理解缺陷并加快缺陷的修复。有4种类型的跟随测试:改变测试行为、改变程序的选项和配置、改变运行环境、改变测试数据。

第3周 边界值与等价类

普通边界值测试技术测试用例

案例描述:某公司根据年终考核给员工发放年终奖,年终考核包括三个指标:本年度工作完成情况、工作能力、工作态度,根据这三个指标的得分计算出某位员工的总得分。其中:本年度工作完成情况占总成绩的50%,本年度工作完成情况最高得分为100分;工作能力总分为20分;工作态度总分为30分。根据员工的总得分,将员工分为如下等级:A--[85,100]、B--[60,85)、C--[40,60)、D--[0, 40)。对于评分等级为A的员工,其年终奖额外奖励10%;对于等级为B的员工,其年终奖正常得到;对于等级为C的员工,扣除20%的年终奖;对于等级为D的员工,则进行辞退、不发年终奖。假定该公司给每位员工的基础年终奖都相同,为Total。

问题:请根据课上所学边界值测试相关知识,采用普通边界值测试技术,设计本案例的测试用例。

回答

弱健壮等价类测试用例

案例描述:某公司根据年终考核给员工发放年终奖,年终考核包括三个指标:本年度工作完成情况、工作能力、工作态度,根据这三个指标的得分计算出某位员工的总得分。其中:本年度工作完成情况占总成绩的50%,本年度工作完成情况最高得分为100分;工作能力总分为20分;工作态度总分为30分。根据员工的总得分,将员工分为如下等级:A--[85,100]、B--[60,85)、C--[40,60)、D--[0, 40)。对于评分等级为A的员工,其年终奖额外奖励10%;对于等级为B的员工,其年终奖正常得到;对于等级为C的员工,扣除20%的年终奖;对于等级为D的员工,则进行辞退、不发年终奖。假定该公司给每位员工的基础年终奖都相同,为Total。

问题:请结合课上所学等价类测试相关知识设计测试用例。请设计弱健壮等价类测试用例。

回答

第4周 决策表测试

决策表测试用例

案例描述:某公司根据年终考核给员工发放年终奖,年终考核包括三个指标:本年度工作完成情况、工作能力、工作态度,根据这三个指标的得分计算出某位员工的总得分。其中:本年度工作完成情况占总成绩的50%,本年度工作完成情况最高得分为100分;工作能力总分为20分;工作态度总分为30分。根据员工的总得分,将员工分为如下等级:A--[85,100]、B--[60,85)、C--[40,60)、D--[0, 40)。对于评分等级为A的员工,其年终奖额外奖励10%;对于等级为B的员工,其年终奖正常得到;对于等级为C的员工,扣除20%的年终奖;对于等级为D的员工,则进行辞退、不发年终奖。假定该公司给每位员工的基础年终奖都相同,为Total。

问题:请根据课上所学决策表相关知识,设计本案例的测试用例。

回答

第5周 路径测试与基路径测试

路径测试测试用例

案例描述:某公司根据年终考核给员工发放年终奖,年终考核包括三个指标:本年度工作完成情况、工作能力、工作态度,根据这三个指标的得分计算出某位员工的总得分。其中:本年度工作完成情况占总成绩的50%,本年度工作完成情况最高得分为100分;工作能力总分为20分;工作态度总分为30分。根据员工的总得分,将员工分为如下等级:A--[85,100]、B--[60,85)、C--[40,60)、D--[0, 40)。对于评分等级为A的员工,其年终奖额外奖励10%;对于等级为B的员工,其年终奖正常得到;对于等级为C的员工,扣除20%的年终奖;对于等级为D的员工,则进行辞退、不发年终奖。假定该公司给每位员工的基础年终奖都相同,为Total。

问题:请结合课上所学路径测试相关知识设计测试用例。请给出本案例的伪代码,根据伪代码给出DD路径和DD路径图,然后针对逻辑覆盖给出的6种指标设计测试用例。

回答

基路径测试测试用例

案例描述:某公司根据年终考核给员工发放年终奖,年终考核包括三个指标:本年度工作完成情况、工作能力、工作态度,根据这三个指标的得分计算出某位员工的总得分。其中:本年度工作完成情况占总成绩的50%,本年度工作完成情况最高得分为100分;工作能力总分为20分;工作态度总分为30分。根据员工的总得分,将员工分为如下等级:A--[85,100]、B--[60,85)、C--[40,60)、D--[0, 40)。对于评分等级为A的员工,其年终奖额外奖励10%;对于等级为B的员工,其年终奖正常得到;对于等级为C的员工,扣除20%的年终奖;对于等级为D的员工,则进行辞退、不发年终奖。假定该公司给每位员工的基础年终奖都相同,为Total。

问题:请根据课上所学基路径测试方法,设计本案例的测试用例。

回答

第6周 数据流测试

数据流测试测试用例

案例描述:某公司根据年终考核给员工发放年终奖,年终考核包括三个指标:本年度工作完成情况、工作能力、工作态度,根据这三个指标的得分计算出某位员工的总得分。其中:本年度工作完成情况占总成绩的50%,本年度工作完成情况最高得分为100分;工作能力总分为20分;工作态度总分为30分。根据员工的总得分,将员工分为如下等级:A--[85,100]、B--[60,85)、C--[40,60)、D--[0, 40)。对于评分等级为A的员工,其年终奖额外奖励10%;对于等级为B的员工,其年终奖正常得到;对于等级为C的员工,扣除20%的年终奖;对于等级为D的员工,则进行辞退、不发年终奖。假定该公司给每位员工的基础年终奖都相同,为Total。

问题:请根据课上所学数据流测试相关知识,设计本案例的测试用例。请列出本案例各个变量的定义节点和使用节点,列出它们的定义—使用路径,并根据全定义、全使用准则进行测试用例设计。

回答

第7周 集成测试

请比较增量式集成与非增量式集成测试。

回答

  • 非增量式集成也称为大爆炸式(Big-Bang)集成,在对每个单元进行充分测试之后,将所有单元全部集成起来一次性地进行集成测试。其优点是减少了测试工作量。缺点是可能会同时发现很多问题,难以定位和解决。
  • 增量式集成在对每个单元测试之后,并不一下子将所有单元一次性集成起来;而是按照某种测试依次将单元集成进来。其优点是集成过程中如果发现问题,很容易进行定位和解决。缺点是集成过程需要较多的测试工作。

自己的答案

  • 非增量式集成测试:
    • 对每个单元进行充分测试,测试的顺序可以任意。
    • 在对单元进行测试的过程中,需要开发桩和/或驱动器。
    • 将所有单元综合在一起,一下子进行集成测试。
    • 优点:
      • 减少测试工作量
    • 缺点:
      • 难以定位和解決问题;可能会同时发现很多错误
  • 增量式集成测试:
    • 增量式集成测试是逐步集成和逐步测试的方法,把可能出现的错误分散暴露出来,便于找出问题和修改
    • 优点:
      • 更早地发现模块间的接口错误,有利于错误定位;
    • 缺点:
      • 需要编写驱动模块和桩模块;

请比较自顶向下集成、自底向上集成以及三明治式集成测试。

回答

  • 自顶向下集成、自底向上集成和三明治式集成都属于非增量式集成。
  • 自顶向下集成能够较早地验证主要的控制和判断点;驱动器开发工作量少;如果采用深度优先策略,可以能够对较为完整的功能进行检验,从而带来信心。但自顶向下集成需要较多的桩开发工作,对于底层的验证被推迟、可能带来底层组件测试的不充分。
  • 自底向上集成能够对底层组件进行较早地验证,集成测试工作初期可以并行进行,需要较少的桩的开发工作。但自底向上集成需要较多的驱动器开发工作,对上层组件的验证被推迟,设计上的错误不能被及时发现。
  • 三明治式集成是结合了自顶向下和自底向上的混合式增量测试,减少了桩和驱动器的的开发工作量。但三明治式集成实际上是中等规模的大爆炸集成,增加了缺陷定位的难度。

自己的答案

  • 自顶向下集成测试:

    • 优点:
      • 较早地验证了主要控制和判断点
      • 按深度优先可以首先实现和验证一个完整的软件功能
      • 功能较早证实,带来信心
      • 只需一个驱动,减少驱动器开发的费用
      • 支持故障隔离
    • 缺点:
      • 桩的开发量大
      • 底层验证被推迟
      • 底层组件测试不充分
  • 自底向上集成测试:

    • 优点:
      • 对底层组件行为较早验证
      • 工作最初可以并行集成,比自顶向下效率高
      • 减少了桩的工作量
      • 支持故障隔离
    • 缺点:
      • 驱动的开发工作量大
      • 对高层的验证被推迟
      • 设计上的错误不能被及时发现
  • 三明治式集成测试:

    • 结合自顶向下和自底向上的混合式增量测试
    • 中等规模的大爆炸
    • 减少了桩和驱动器的开发工作量,增加了缺陷定位的难度。

第8周 系统测试

请分析单元测试、集成测试以及系统测试的区别。

回答

性能测试的定义是什么?主要有哪些性能指标?

回答

第9周 验收测试与面向对象测试

请比较α测试、β测试以及正式验收测试。

回答

自己的答案

  • α测试:
    • 测试环境:开发环境或模拟实际使用环境
    • 测试人员:最终用户或开发团队人员
    • 错误处理:遇到问题在测试现场立刻反馈给开发人员
    • 优点:与正式验收测试相比,α测试可能会发现更多的缺陷
    • 缺点:最终用户参与较少,与用户相关的缺陷可能发现较少
    • 测试时间:系统测试之后
  • β测试:
    • 测试环境:实际使用环境
    • 测试人员:最终用户或受邀用户
    • 错误处理:记录碰到的各类问题,定期将试用报告反馈给开发公司
    • 优点:与α测试相比,参与试用的用户变多,可能发现更多的问题
    • 缺点:难以对试用用户的测试过程进行监测和评价;试用用户考虑的方面较少;试用用户即使发现问题,但不一定会反馈给开发公司
    • 测试时间:α测试之后
  • 正式验收测试:
    • 测试环境:实际使用环境
    • 测试人员:最终用户组织开发团队协助
    • 错误处理:用户按合同中的需求条款检验软件是否满足要求,碰到问题记录下来
    • 优点:按合同条款展开测试,测试过程严格、正式的测试过程
    • 缺点:需要较多的准备工作以及资源;需要确定验收时间、测试地点、测试环境准备以及参与人员安排
    • 测试时间:β测试之后

针对课程中给出的面向对象版本的NextDate示例,给出2019年12月31日的MM路径。

回答

第10周 变异测试

生成程序变体

针对如下C语言程序,应用语句变异算子STRP生成程序变体。

while(n>0)
{
   x = x*n;
   if(n%2 == 0)
     x = x-n;
   n--;
}

回答

第11周 组合测试与软件测试工具

SAMNA对偶设计方法

有一个软件接受4个参数:性别(取值为男或女)、是否成年(取值为是或否)、职业(取值为固定或自由)以及使用习惯(取值为左手或右手)。请采用SAMNA对偶设计方法进行测试用例设计。

回答