软件测试: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. 实现鼠标悬停,div勾画div边框的动画

    鼠标悬浮,边框div边框的动画样式,效果图如下: 首先定义div及其样式: <style> .show { width:300px; height:200px; border:1px so ...

  2. celery使用rabbitmq报错[Errno 104] Connection reset by peer.

    写好celery任务文件,使用celery -A app worker --loglevel=info启动时,报告如下错误: [2019-01-29 01:19:26,680: ERROR/MainP ...

  3. 数据结构_1+AI_1

    归纳一下今天看的有关数据结构和AI的知识: 数据结构:数据的组织形式和存储方法 主要包括:1.线性结构 2.树结构 3.图结构 1.线性结构:由n个元素构成的有限序列.[数组]为最简单的一种形式. 主 ...

  4. webpack 学习之旅

    首先理解wepack的打包原理:一般单页面应用,你的页面都会引入一个类似bundle.js的文件,在react项目中,你会发现index.html中并没有引入css,那么css哪里去了?答案是它被打包 ...

  5. uva 202

    #include <iostream> #include<cstdio> #include<cstring> #include<algorithm> # ...

  6. 《DSP using MATLAB》Problem 7.15

    用Kaiser窗方法设计一个台阶状滤波器. 代码: %% +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ...

  7. python numpy模块使用笔记(更新)

    np.arange(int a) 生成一个一维array,元素个数是a个,元素是0到a-1 注意arange不能直接生成多维array np.arange(int a).reshape(int b,i ...

  8. centos 安装 crontab 和 简单的使用教程

    crontab是一个非常好用的定时执行任务的程序.以下是操作方式 1. 安装 cron 的 主程序 : yum -y install vixie-cron 2. 安装 cron 守护进程的表格的程序  ...

  9. 非常完善的两个微服务框架比较(SpringCloud与Dubbo)

    微服务架构是互联网很热门的话题,是互联网技术发展的必然结果.它提倡将单一应用程序划分成一组小的服务,服务之间互相协调.互相配合,为用户提供最终价值. 虽然微服务架构没有公认的技术标准和规范或者草案,但 ...

  10. EBS WEBADI导入日记账 客户化账户组合规则校验

    近期项目需求对EBS中WEBADI导入日记账时,在加载数据时需要对账户组合额外进行客户化的校验,需要能够做到将校验结果体现在WEBADI模板的数据上,并且对每条错误数据都单独报错. 项目上的方案是调整 ...