软件测试:1.Describe An Error
软件测试: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--描述Error
记忆犹新的错误: 上个学期选修了可视化这门课程,最后大作业用d3实现,在使用d3读取csv数据的时候出现了以下Error: 我先是在代码中读取了某csv格式的数据,并且将其存入变量root中,然后对r ...
- 软件测试中的fault,error,failure
问题:给定两段代码,设计fault,error,failure的测试用例. fault:即引起错误的原因,类似病因. error:类似疾病引起的内部结果. failure:类似疾病引起的症状. 代码1 ...
- MySQL学习笔记 -- 数据表的基本操作
数据库是一个可以存放数据库对象的容器,数据库对象包括:表.视图.存储过程.函数.触发器.事件.其中,表是数据库最基本的元素,是其他数据库对象的前提条件. 表中的一列称为一个字段,一行称为一条记录. 1 ...
- Laravel错误与日志处理
App\Exceptions\Handler class is where all exceptions triggered by your application are logged and th ...
- 【转】MySQL Temporary Table相关问题的探究
本文转载自:http://itindex.net/detail/10901-mysql-temporary-table 问题的引入 让我们先来观察几条非常简单的MySQL语句: mysql> c ...
- .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 ...
- MySQL:创建、修改和删除表
其实对很多人来说对于SQL语句已经忘了很多,或者说是不懂很多,因为有数据库图形操作软件,方便了大家,但是我们不能忘记最根本的东西,特别是一些细节上的东西,可能你用惯了Hibernate,不用写SQL语 ...
- R︱sparkR的安装与使用、函数尝试笔记、一些案例
本节内容转载于博客: wa2003 spark是一个我迟早要攻克的内容呀~ ------------------------------------- 一.SparkR 1.4.0 的安装及使用 1. ...
- sparkr跑通函数 包含排序
spark1.4.0的sparkR的思路:用Spark从大数据集中抽取小数据(sparkR的DataFrame),然后到R里分析(DataFrame). 这两个DataFrame是不同的,前者是分布式 ...
随机推荐
- RabbitMQ和kafka从几个角度简单的对比
业界对于消息的传递有多种方案和产品, 本文就比较有代表性的两个MQ(rabbitMQ,kafka)进行阐述和做简单的对比 在应用场景方面,RabbitMQ,遵循AMQP协议,由内在高并发的erlann ...
- 11.2.0.1单实例DGduplicate过程
记录一次duplicate完整过程1)环境说明数据库版本oracle11.2.0.1,os linux 6.6备库应用的归档,最近一次是三个月前,由于DG环境以前是好的,因此直接迁移数据即可.本次使用 ...
- Qt学习3---子窗口与父窗口
创建子窗口后,主窗口的头文件需要 #include "子窗口头文件" 子窗口和父窗口之间相互切换 子窗口没有办法处理父窗口,子窗口此时就需要一个信号: * 信号必须有signal ...
- java的AES对称加密和解密,有偏移量
import java.math.BigDecimal; import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; i ...
- 【开发】iOS入门 - Touch事件处理学习笔记
网上介绍iOS事件机制的文章,有不少都讲得很好,搬运一次意义不大,这里我就列一些要点吧. 跟Android一样,iOS的Touch事件也是从外到内传递,然后从内到外响应,可以看成一个U型结构.然而,个 ...
- CSS 关于权重的另类解说
众所周知,对于CSS中权重的顺序,从大到小依次如下: !important id class 标签 在html标签中写入行内样式style,又大于link引入.相同类型的样式标记,在数量上多的大于数量 ...
- 【转】rem自适应布局
rem自适应原理 rem是根据html的font-size大小来变化,正是基于这个出发,我们可以在每一个设备下根据设备的宽度设置对应的html字号,从而实现了自适应布局.更多介绍请看这篇文章:rem是 ...
- ifconfig 网卡 下面的参数
ifconfig eth1 eth1 Link encap:Ethernet HWaddr 20:12:07:04:05:00 inet addr:172.16.77.174 Bcast:172.1 ...
- Cygwin,一个提供linux命令行体验的Windows命令行工具
安装 从官网下载,选择合适节点(带edu结尾的优先),安装 使用 未完待续...
- debian-pve-ceph
从头开始安装debian9.8 debian-9.8.0-amd64-netinst.iso vi /etc/vim/vimrc.tinyset nocompatibleset backspace=2 ...