2017.4.17------软件测试的艺术+整理以前的摘记

    2017.4.17

    以下内容来自《软件测试的艺术》 第1页——14页。供自己学习使用。

    第一章

    软件测试:就是一个过程或一个系列过程,用来确认计算机代码完成了其应该完成的功能,不执行其不该有的操作。

    第二章

   测试人员需要有正确的态度。每当测试一个程序时,应当想到的是为程序增加一些价值。通过测试来增加程序的价值,是指测试提高了程序的可靠性或质量,提高程序可靠性,是指找出并最终修改了程序的错误。

   1.有人把没发现错误的测试用例称为一次“成功的测试”,而将发现了某个新错误 的测试称为“不成功的测试”。这是本末倒置了。在测试中如果在测试的某段程序时发现了错误,并且错误可以被修复,这将这次的测试称为是“成功”,如果本次测试可以最终确定再无其他的可查出的错误,也可称为是“成功”。所谓的“不成功”测试,仅指未能适当的对程序进行检查,在大多数情况下,未能找出错误的测试被认为是”不成功的“。

   2.“软件测试就是证明软件不存在错误的过程”这个定义会带来问题。对于几乎所有的程序而言,甚至是非常小的程序,这个目标也是无法达到的。文中的这句话” 将软件测试定义为发现程序错误的过程,使得测试是个可以完成的任务,从而克服了这个心理障碍。”很好的诠释了软件测试。

  3.“软件测试就是证明' 软件做了其应该做的'的过程”这一类的定义也会带来问题。程序即使能够完成预定的功能,也仍然可能隐藏错误,换句话说,当程序没有实现预期功能的时候,错误的清晰的显现出来,如果程序做了其不应该做的,这同样也是一个错误。

  总结一下,软件测试更加适宜被视为视图发现程序中错误(假设其存在)的破坏性的过程。一个成功的测试用例,通过诱发程序发生错误,可以在这个方向上促进软件质量的改进

 

     黑盒测试和白盒测试 是两种最普遍的策略。

黑盒测试:(数据驱动的测试或输入/输出驱动的测试)

      程序是一个黑盒子,能够确定此条语句存在的唯一方法就是试验所有的输入情况。(穷举输入测试)。随着程序的变大,需要创建无限的测试用例,基本上是不可能的。 如果程序要使用数据存储如操作系统等,问题会变得很困难,所以,不仅要测试所有有效的和无效的事务处理,还要测试所有可能的事务处理顺序。

白盒测试:(逻辑驱动的测试)

     穷举路径测试:即将程序中的每条语句至少执行一次。

存在的问题:1.程序中的不同逻辑的数量可能会达到天文数字。

                 2. 虽然我们测试到程序中的所有路径 ,程序也可能存在着错误,原因:

                        (1)即使是穷举路径测试,也不能保证程序符合其设计规范。

                        (2)程序可能会缺少某些路径而存在的问题。

                        (3)穷举路径测试可能不会暴露数据敏感问题。

软件测试的原则:

                1.测试用例中一个必需部分是对预期输出或结果进行定义

                2.程序员应当避免测试自己编写的代码

                3.编写软件的组织不应当测试自己编写的软件

                4.应当彻底检查每个测试的执行结果

                5.测试用例的编写不仅应当根据有效和预料到的输入情况,而且也应当根据无效和未预料的输入情况

                6.检查程序是否“未做其应该做的”仅是测试的一半,测试的另一半是检查程序是否“做了其不应该做的”

                7.应避免测试用例用后即弃,除非软件本身就是一次性的软件

                8.计划测试工作时不应默认假定不会发现错误

                9.程序某部分存在更多错误的可能性,与该部分已发现错误的数量成正比

               10.软件测试是一项极富创造性、机具智力挑战性的工作。

2.4小结:

     软件测试是为发现错误而执行程序的过程

     尽量避免编码人员测试自己的程序

     好的测试用例能够未发现的错误高度敏感

     成功的测试用例能够发现未知的错误

     成功的测试需要仔细定义输出输入的期望值

     成功的测试需要仔细研究分析测试结果

          

 

 

    

 

 

   

 

转载于:https://www.cnblogs.com/54-87/p/6725361.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/429397.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于MODBUS协议的单片机与(串口屏)触摸屏通信(图文)

基于MODBUS协议的单片机与(串口屏)触摸屏通信(图文) 导读:触摸屏能够直观、生动地显示运行参数和运行状态,而且通过触摸屏画面可以直接修改系统运行参数,人机交互性好。触摸屏和单片机通信,需要根据触摸屏采用的通信协议为单片机编…

java mask_Java 三大属性:

# Java 三大属性:面试时候问的一个很基础的问题,也是面向对象的三大特点。## 一、封装首先,属性可用来描述同一类事物的特征,方法可描述一类事物可做的操作。封装就是把属于同一类事物的共性(包括属性与方法)归到一个类中&#xf…

java 事物_java事务

1、事务的四大特性(1)原子性(Atomicity):原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚。失败回滚的操作事务,将不能对数据库有任何影响(2)一致性(Consistency):一致性是指事务必须使数据库从一个一致性状态变换到另…

【转】C#之继承

C#之继承 一.继承的类型  在面向对象的编程中,有两种截然不同继承类型:实现继承和接口继承  1.实现继承和接口继承  *实现继承:表示一个类型派生于基类型,它拥有该基类型的所有成员字段和函数。在实现继承中,派生…

java 学习计划_Java学习计划范例

Java学习计划范例Java学习计划好的计划是成功的一半,今天是在创新思维的第一节课,在这门课程的开始,一个有策略的、有目的性的计划是非常必要的,为了在以后的学习中能够达到最好的.效果,"坚持"是一把雕刻刀&…

SQL Server 2012自动备份

SQL 2012和2008一样,都可以做维护计划,来对数据库进行自动的备份。 现在做这样一个数据库维护的计划,每天0点对数据库进行差异备份,每周日0点对数据库进行完全备份,并且每天晚上10点删除一次过期备份(两个星…

mysql查逻辑表的分片规则_MySQL(19) Mycat分片(分库分表)配置

一、前言本文将基于主从复制,读写分离的环境基础上进行一个简单的分片(分库分表)配置二、Mycat分片配置mycat分片主要在scheam.xml,rule.xml这2个表中配置① scheam.xml:配置逻辑表以及对应使用的分片规则select user()这里小编主要对t_user表…

JS取消浏览器文本选中的方法

一 、问题的出现 今天在使用Easy-UI 的messager.alert()方法时候出现浏览器文本被选中,不知道其中是什么原因,如下图所示。 二 、解决思路 我最后的思路时在弹出消息框的同时,取消浏览器文本的选择,最后查找资料编写如下方法。  …

java 重构 if else_项目中的if else太多了,该怎么重构?

前言if else过多的话,一般都是用策略模式来进行重构,策略模式也非常的简单。先定义一个接口,各种处理分支实现这个接口,定义好 条件->处理类的映射关系,然后根据条件找到响应的处理类执行即可,当有新的分…

读书笔记:秘密

2017年立下了读30本书的旗子,现在这是第3本,是一本小说,东野圭吾的小说《秘密》。看小说也可以看出生活,但是是为了娱乐,是为了放松,小说本身挺好看的~引人入胜,一看到底类型。读书前…

mysql的student是什么意思_复习mysql

一、复习详尽如下:创建一个test库create database test;授权一个用户grant all privileges on *.* to xiang% identified by 1qazWSX;创建表create table student(id int not null);查询select * from tabel_name where 条件1 and 条件2增加insert into table_name …

算法复杂度的理解

算法复杂度的理解 from:http://blog.sina.com.cn/s/blog_4bab8e7f0102vmth.html算法复杂度分为时间复杂度和空间复杂度。 时间复杂度的计算 ​1.一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每…

php如何将mysql数据库中的admin字段赋值给session_php实现将Session写入数据库

/**author Fahy*数据库为mysql,*数据库名为session,表名为session,*表中字段包括PHPSESSID,update_time,client_ip,data*/class Session{private static $handler null;private static $ip null;private static $lifetime null;private st…

linux 脚本 java_Linux 通过脚本执行Java程序

由于要统计不同的IP,代码中应用了HashSet来存放IP地址。上述Java程序是在Windows下编写的,如果在Linux服务器上运行,只需要把上面文件的路径和文件更换了就可以了。2.编写好java程序后,将java程序打成jar文件(环境Linux)我将上述测…

Java开启/关闭tomcat服务器

© 版权声明:本文为博主原创文章,转载请注明出处 通过java代码实现Tomcat的开启与关闭 1.项目结构 2.CallTomcat.java package com.calltomcat.test;import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader;…

python命令行调试django代码_Django shell调试models输出的SQL语句方法

在settings.py里,配置如下logging:LOGGING {version: 1,disable_existing_loggers: False,handlers: {console:{level:DEBUG,class:logging.StreamHandler,},},loggers: {django.db.backends: {handlers: [console],propagate: True,level:DEBUG,},}}使…

5、如何快速找到多个字典中的公共键(key) 6 如何让字典保持有序 7 如何实现用户的历史记录功能(最多n条)...

5、如何快速找到多个字典中的公共键(key) from random import randint,sample #随机取数 # a sample("ABCDEF",randint(5,6)) # print(a) # b1 {x:randint(1,4) for x in sample("ABCDEF",randint(3,6))} # b2 {x:randint(1,4) for x in sample("A…

Bresenham画椭圆算法

这里不仔细讲原理,只是把我写的算法发出来,跟大家分享下,如果有错误的话,还请大家告诉我,如果写的不好,也请指出来,一起讨论进步。 算法步骤: (1) 输入椭圆的长半轴a和短半轴b。 (2) 计算初始值…

iOS MD5 (消息摘要算法5)

一、MD5定义 MD5即Message-Digest Algorithm 5(消息-摘要算法5),为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。…

“每日一道面试题”.Net中所有类的基类是以及包含的方法

闲来无事,每日一贴。水平有限,大牛勿喷。 .Net中所有内建类型的基类是System.Object毋庸置疑 Puclic Class A{}和 Public Class A:System.Object{}是等效的 System.Object包含了Finalize在内的8个方法。 公共实例方法: Virtual b…