软件测试: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. 本地搭建json-server

    1.前言 为了前端项目获取数据,需要在本地搭建json-server,这样保证可以在本地实现增删改查的操作. 2.安装 全局安装: npm -g json-server 3.创建一个json-serv ...

  2. jQuery-3.事件篇---键盘事件

    jQuery键盘事件之keydown()与keyup()事件 鼠标有mousedown,mouseup之类的事件,这是根据人的手势动作分解的2个触发行为.相对应的键盘也有这类事件,将用户行为分解成2个 ...

  3. laravel 错误提示Fatal Error: Class 'Pheanstalk\Pheanstalk' not found

    本地环境版本: composer -V Composer version -- ::10 php artisan -V Laravel Framework 5.6.39 错误提示: Fatal Err ...

  4. md5Util

    package com.rscode.credits.util; /** * MD5加密类 * @author 12 */ import java.security.MessageDigest; pu ...

  5. UML第一次作业:UML用例图绘制

      UML用例图绘制 一.plantuml用例图语法小结 1.用例 用法:用例用圆括号(),或者使用关键字来定义用例 示例1: @startuml (First UML) (Another UML)a ...

  6. python多进程拷贝数据

    from multiprocessing import Pool,Manager import os #完成拷贝文件 def copyFile(filename,oldname,newname,que ...

  7. Java并发编程75道面试题及答案

    1.在java中守护线程和本地线程区别? java中的线程分为两种:守护线程(Daemon)和用户线程(User). 任何线程都可以设置为守护线程和用户线程,通过方法Thread.setDaemon( ...

  8. Python 3.6print 出现 SyntaxError: invalid syntax

    开始使用sublime学习python,编写代码如图 Ctrl+B运行以后,报错   SyntaxError: invalid syntax 百度查询以后,大部分的回答都是说,python在3.0以后 ...

  9. LeetCode 852. Peak Index in a Mountain Array C++ 解题报告

    852. Peak Index in a Mountain Array -- Easy 方法一:二分查找 int peakIndexInMountainArray(vector<int>& ...

  10. Axure RP 介绍

    原型设计是将想法转变为设计过程中至关重要的一环.经常有设计师小伙伴可能会问到,“哪个原型设计工具是最好的呢”?实际上这是一种错误的提问方式,尤其是在当下原型工具种类繁多,针对不同需求各有优势的大环境中 ...