软件测试基础

  1. 软件的复杂度已经超越了人的理解能力

     1. 虽然高抽象的层次语言,程序框架,程序库等提高了人的生产力,但是还是需要开发者深入理解细节,可以减少开发时间,但是无法减少开发者学习整个技术栈的时间
    2. 对于复杂的软件,如果测试人员不能掌握全部的信息,那么他的测试策略已经会错误(对于开发也是如此),所以需要和各个工作岗位的人进行协作
    3. 软件复杂,所以测试用例需要进行迭代,持续地评估和反思
    4. 大规模的软件中,对于少量代码的变更都不能掉以轻心
    5. 单凭人的脑力已经很难应对复杂的软件测试了,测试人员需要考虑测试自动化来对付这种情况
  2. 测试步骤

     1. 第一个测试周期
    1.1 从显而易见的简单测试开始 (因为这个时候测试人员对于软件还不熟悉)
    1.2 记录还需要测试什么
    1.3 检查有效用例并观察发生了什么 (根据第一步的信息开始设计第二步和第三步)
    1.4 做一些快速的测试
    1.5 总结对程序和问题的认识 (开始反思,总结,准备下一阶段的测试) 2. 第二个测试周期
    2.1 在进行任何测试之前都给予评估
    2.2 评审对不修复的问题的意见
    2.3 找出上次的测试笔记,加入新的笔记,并且开始测试
  3. 测试人员的工作效率取决于他对软件和项目的理解,而不是他的测试技术(对于开发也是如此)

     1. 理解产品
    2. 理解用于期望
    3. 理解产品的架构和源码(做到这点已经不是单纯地测试了)
    4. 回避浪费时间却没有收益的任务
    5. 了解产品的元素和项目团队,知道出问题找谁
    6. 良好地同事关系

缺陷报告

1. 程序员要阅读缺陷报告,了解缺陷的症状和步骤,好的缺陷报告可以帮助程序员快速定位问题,坏的缺陷报告只能浪费调试时间

2. 产品经理要阅读缺陷报告,了解缺陷的症状和严重性,好的缺陷报告可以帮助产品经理设定优先级,差的缺陷报告会误导他做出错误的决定

3. 在大型项目里面,缺陷报告是对于一个开发和测试评测的一个工具

  1. 报告缺陷是为了让缺陷得到修复

     1. 清楚说明对用户的危害
    2. 提供尽可能多的技术信息,方便程序员调试
    3. 今早提交缺陷报告
    4. 报告发现的所有缺陷,即便有些缺陷难以重现
  2. 七大产品元素

     1. 结构,在文件级别,构成的元素是各种文件,在代码级别,是各种类,函数等
    2. 功能,软件相关功能
    3. 数据,比如测试图片,有BMP,PNG等格式
    4. 接口,比如用户界面,系统API等
    5. 平台
    6. 操作,可能的操作组合
    7. 时间
  3. 测试人员应该先提出假设,然后再实验,特别是在发现一些本来重现过但是没有办法再重现的问题

测试文档

  1. 识别风险

     1. 自动化测试用例:该区域有自动化测试用例吗?? 测试在定期运行吗?? 测试通过率是多少?? 测试覆盖了哪方面,没有覆盖哪方面?
    2. 手动测试: 有人手动测试该区域吗? 经过测试,对该区域有多少信心? 如果满分是10分,打多少分??
    3. 代码变更: 该区域近期存在代码变更吗? 变更频繁吗? 近期是新增功能,代码重构,还是缺陷修复??
    4. 代码复杂度: 代码规模是多少,代码是否复杂,如果复杂是10分,改区域得多少分? 5. 产品缺陷: 该产品缺陷多吗?? 有哪些典型的缺陷,哪些缺陷已经被修复,哪些缺陷还没有被修复

测试建模

	1. 两因素组合测试,可以暴露由两个因素变量共同作用而引发的缺陷
2. 多因素组合测试, 生成的测试集可以覆盖任意N个变量 1. 启发式建模方法
2. 输入与输出模型建模
3. 系统生态图
4. 实体关系模型
5. 状态机模型

测试开发

1. 自动化测试应切合当前的产品
2. 自动化测试应聚焦风险,重点解决产品面临最大的风险,不必面面俱到
3. 自动化测试应该在资源允许的范围内尽力扩展测试领域,提供多样化的测试
4. 自动化测试应该讲究实用,测试人员需要根据项目语境选择合适的开发策略 自动化测试金字塔:
最底层是单元测试和组件测试,由开发人员维护
然后是中层是面向业务的自动化测试
顶层是少量基于图形界面的自动化测试
金字塔上方是手工测试

<<软件测试实战>>读书笔记的更多相关文章

  1. csapp读书笔记-并发编程

    这是基础,理解不能有偏差 如果线程/进程的逻辑控制流在时间上重叠,那么就是并发的.我们可以将并发看成是一种os内核用来运行多个应用程序的实例,但是并发不仅在内核,在应用程序中的角色也很重要. 在应用级 ...

  2. CSAPP 读书笔记 - 2.31练习题

    根据等式(2-14) 假如w = 4 数值范围在-8 ~ 7之间 2^w = 16 x = 5, y = 4的情况下面 x + y = 9 >=2 ^(w-1)  属于第一种情况 sum = x ...

  3. CSAPP读书笔记--第八章 异常控制流

    第八章 异常控制流 2017-11-14 概述 控制转移序列叫做控制流.目前为止,我们学过两种改变控制流的方式: 1)跳转和分支: 2)调用和返回. 但是上面的方法只能控制程序本身,发生以下系统状态的 ...

  4. CSAPP 并发编程读书笔记

    CSAPP 并发编程笔记 并发和并行 并发:Concurrency,只要时间上重叠就算并发,可以是单处理器交替处理 并行:Parallel,属于并发的一种特殊情况(真子集),多核/多 CPU 同时处理 ...

  5. 读书笔记汇总 - SQL必知必会(第4版)

    本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...

  6. 读书笔记--SQL必知必会18--视图

    读书笔记--SQL必知必会18--视图 18.1 视图 视图是虚拟的表,只包含使用时动态检索数据的查询. 也就是说作为视图,它不包含任何列和数据,包含的是一个查询. 18.1.1 为什么使用视图 重用 ...

  7. 《C#本质论》读书笔记(18)多线程处理

    .NET Framework 4.0 看(本质论第3版) .NET Framework 4.5 看(本质论第4版) .NET 4.0为多线程引入了两组新API:TPL(Task Parallel Li ...

  8. C#温故知新:《C#图解教程》读书笔记系列

    一.此书到底何方神圣? 本书是广受赞誉C#图解教程的最新版本.作者在本书中创造了一种全新的可视化叙述方式,以图文并茂的形式.朴实简洁的文字,并辅之以大量表格和代码示例,全面.直观地阐述了C#语言的各种 ...

  9. C#刨根究底:《你必须知道的.NET》读书笔记系列

    一.此书到底何方神圣? <你必须知道的.NET>来自于微软MVP—王涛(网名:AnyTao,博客园大牛之一,其博客地址为:http://anytao.cnblogs.com/)的最新技术心 ...

  10. Web高级征程:《大型网站技术架构》读书笔记系列

    一.此书到底何方神圣? <大型网站技术架构:核心原理与案例分析>通过梳理大型网站技术发展历程,剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理,并通过一组典型网站技术架构设计 ...

随机推荐

  1. 黑马----面向方面编程AOP

    黑马程序员:Java培训.Android培训.iOS培训..Net培训 JAVA反射-面向方面编程AOP 一.面向方面的需求 有如下模型: 需要统计客户登录时间.使用系统情况,或系统运行日记等信息时, ...

  2. Android中常见功能包描述(转)

    在Android中,各种包写成android.*的方式,重要包的描述如下所示:android.app :提供高层的程序模型.提供基本的运行环境android.content:包含各种的对设备上的数据进 ...

  3. LoadRunner迭代与并发的理解

    ---恢复内容开始--- 四车道的马路,如果只有四辆车并排走过就是并发:  如果四辆车排成一纵队走过就是迭代:  如果有100辆车排成25行依次走过就是并发加迭代.  在以上说法中,只有并排的车是我们 ...

  4. ThinkPHP BASE

      对于thinkphp 开源框架来说  是一个基于  模型/控制器/视图 的结构 V(View):视图接收来自用户操作的信息返回到 对应的控制器或方法 C (controller):控制器则调用 相 ...

  5. 获取Ip地址

    public static string GetClientIPv4Address() { string ipv4 = String.Empty; foreach (IPAddress ip in D ...

  6. template 不能分别在.h和.cpp中定义模板

    先上代码: #ifndef SEQLIST_H #define SEQLIST_H #include <iostream> ; template <typename type> ...

  7. 《C标准库》——之<string.h>

    <string.h>里的字符串操作函数是经常要用到的,因此阅读了源码后自己实现了一些: 拷贝函数 void * Mymemcpy(void * sDst, const void * sSr ...

  8. equals()和hashCode()隐式调用时的约定

    package com.hash; import java.util.HashMap; public class Apple { private String color; public Apple( ...

  9. oracle数据迁移、备份等

    exp db  或者数据泵. 或者ETL工具

  10. 每天的代码review和解决技术难题

    在此结构中,一个 PPC 处理器作为监管处理器,与大量的 SPE流处理器相连通,组成了一个工作流水线. 对于一个图形处理过程来说,某个 SPE 可负责提取数据,另一个 SPE 负责变换,再另一个负责存 ...