软件测试:1.Describe An Error

    要求:

    1.简要描述你最近完成项目里的一个error;

    2.说明原因,错误影响,及你怎样发现的;

  或许因为刚开学的缘故,近期我并没有完成大的项目,多少有些惭愧。

  不过前几天刷编程题时,遇到一道基础的“最大子列和”问题,印象颇深。在程序排错时,自己仅凭感觉找faults,没有章法,费时费力。

    Failure描述:

  在Online Judge系统(OJ)上提交程序时显示结果“部分正确”,其中8个测试用例里有2个答案错误。

  根据自己以往的经验,既然其中有5个测试用例通过了,说明程序整体上没有大的错误,其中的一些特殊边界值的处理可能存在问题。

  然后先设计几组自己认为容易出错的边界值测试用例,在IDE里重新将程序运行起来,手动对自己设计的测试用例组进行测试,找出答案错误的情况。

  重新读题,题目要求如上图所示。输入一个整数序列,输出该序列的最大子列和、及该子列的第一个和最后一个整数值。

  特殊情况,在整数序列的所有整数均为负数时,输出的最大子列和为0,最大子列的第一个整数为整数子列的第一个整数,最大子列的最后一个整数为整数子列的最后一个整数。

    Error:

  再读题目要求后,注意到一个问题,输出的最大子列和为“0”时有3种情况:

  1.特殊情况,即所有整数项都为负数时;

  2.所有整数项都为0;

  3.所有整数项由负数和0组成;

  而我在之前编写程序并没有考虑这个问题。程序处理上面的情况3时可能会出现问题,于是设计了测试用例,输入:

  4

  -1 -2 0 -9

  

  期望得到的输出是:

  0 0 0

  而实际的输出是:

  0 -1 -9

  

  至此,终于找到程序出错的原因。在所有测试用例中,如果输入的整数序列的所有整数项由0和负数混合组成时,输出结果就会出错。

    Faults:

  Logic faults,定位到程序代码13行,将子列和为负数,和子列和为0的情况误认为是一种情况。这导致在输入的整数序列的所有整数项由0和负数混合组成时,输出最大子列的第一个和最后一个整数值,本该是输出0子列的整数值,却被当做特殊情况输出了整个序列的第一个和最后一个整数值。

    如果不足,欢迎指教,感激不尽

软件测试:1.Describe An Error的更多相关文章

  1. 软件测试作业1--描述Error

    记忆犹新的错误: 上个学期选修了可视化这门课程,最后大作业用d3实现,在使用d3读取csv数据的时候出现了以下Error: 我先是在代码中读取了某csv格式的数据,并且将其存入变量root中,然后对r ...

  2. 软件测试中的fault,error,failure

    问题:给定两段代码,设计fault,error,failure的测试用例. fault:即引起错误的原因,类似病因. error:类似疾病引起的内部结果. failure:类似疾病引起的症状. 代码1 ...

  3. MySQL学习笔记 -- 数据表的基本操作

    数据库是一个可以存放数据库对象的容器,数据库对象包括:表.视图.存储过程.函数.触发器.事件.其中,表是数据库最基本的元素,是其他数据库对象的前提条件. 表中的一列称为一个字段,一行称为一条记录. 1 ...

  4. Laravel错误与日志处理

    App\Exceptions\Handler class is where all exceptions triggered by your application are logged and th ...

  5. 【转】MySQL Temporary Table相关问题的探究

    本文转载自:http://itindex.net/detail/10901-mysql-temporary-table 问题的引入 让我们先来观察几条非常简单的MySQL语句: mysql> c ...

  6. .ascx.g.cs文件不能生成 The name ‘InitializeControl’ does not exist in the current context - Visual Web part Sharepoint

    InitializeControl doesn't exsit When using visual studio 2012 for developing SharePoint 2013 Visual ...

  7. MySQL:创建、修改和删除表

    其实对很多人来说对于SQL语句已经忘了很多,或者说是不懂很多,因为有数据库图形操作软件,方便了大家,但是我们不能忘记最根本的东西,特别是一些细节上的东西,可能你用惯了Hibernate,不用写SQL语 ...

  8. R︱sparkR的安装与使用、函数尝试笔记、一些案例

    本节内容转载于博客: wa2003 spark是一个我迟早要攻克的内容呀~ ------------------------------------- 一.SparkR 1.4.0 的安装及使用 1. ...

  9. sparkr跑通函数 包含排序

    spark1.4.0的sparkR的思路:用Spark从大数据集中抽取小数据(sparkR的DataFrame),然后到R里分析(DataFrame). 这两个DataFrame是不同的,前者是分布式 ...

随机推荐

  1. TowSum

  2. rm: cannot remove ' xxx': Permission denied

    一般出现这个问题的原因是权限被改变了,使用chown 修改即可 可参考:chmod.chgrp.chown详解 linux chmod命令和chown命令

  3. ubuntu编译安装opencv

    简易安装opencv2: conda install --channel https://conda.anaconda.org/menpo opencv 或: sudo apt-get install ...

  4. 2PC(Two Phase Commitment Protocol)原理

    读TiDB原理部分,知道其分布式事务是参考的Google percolator.而percolator是一种2PC的优化. 分布式事务解决的是什么问题呢? 假设一个场景,一个电商网站,用户在购买商品时 ...

  5. 用awk检查报表的列数

    用awk检查报表的列数 前提当然是报表都有相同数量的列 less yourfile|awk ‘{print NF;exit;}’ NF是awk的内置变量,表示当前记录里域的个数,不难看出,这个命令实际 ...

  6. UTC,BJT时间换算-java

    题目内容: UTC是世界协调时,BJT是北京时间,UTC时间相当于BJT减去8.现在,你的程序要读入一个整数,表示BJT的时和分.整数的个位和十位表示分,百位和千位表示小时.如果小时小于10,则没有千 ...

  7. Git入门(安装及基础命令行操作)

    一.安装 1.Mac 在Mac中安装Git的方法不止一种.最简单的要数通过Xcode命令行工具.对于Mavericks(10.9)或更高版本的操作系统,当你第一次尝试在终端执行git命令时,系统会自动 ...

  8. 软件测试2019:第四次作业—— 性能测试(含JMeter实验)

    题目:性能测试练习 一.回答下述问题: 性能测试有几种类型,它们之间什么关系? 性能测试根据不同测试目的可以分为以下类: (1)性能验证测试 (2)性能基准测试 (3)性能规划测试 (4)容量测试 渗 ...

  9. day10 参数args kwargs 作用域

    函数参数/作用域/args/kwargs 1.参数 1.1参数基本知识 任意个数 任意类型 func("1",True) 1.2位置传参(调用函数并传入参数) def func(a ...

  10. fdsafdsafds

    name1 = input('请输入一个名字:') name2 = input('请输入一个名字: ') animal = input('请输入一个名字 :') print('刚按完摩的{}出门看见{ ...