软件测试52讲学习笔记(测试基础篇)

1. 从「用户登录」开始谈测试

1.1.将「用户登录」测试用例分分类

等价类划分边界值分析方法是最常用、最典型、也是最中要的黑盒测试方法(2.3.中会详细说明)

  • 等价类划分:是将所有可能的输入数据划分成若干个子集,在每个子集中任意一个输入数据对于揭露程序中潜在错误都具有同等效果,那么这样的子集就构成一个等价类。
  • 边界值分析方法:是选取输入、输出的边界值进行测试。
用户登录测试用例.png

优秀的测试工程师必须具有宽广的知识面,才能设计出有针对性、便于发现问题的测试用例。

1.2.穷尽测试

所谓的“穷尽测试”是指包含了软件输入值和前提条件所有可能组合的测试方法,完成穷尽测试的系统里应该不残留任何未知的软件缺陷,你可以通过做更多的测试来找到它们,也就是说你的测试还没有穷尽。
软件测试的用例设计是不可穷尽的,工程实践中难免受制于时间成本和经济成本,所以优秀的测试工程师需要兼顾缺陷风险和研发成本之间的平衡

原文链接为极客时间版权所有: https://time.geekbang.org/column/article/10030

2. 如何设计一个“好的”测试用例?

2.1. 什么是“好的”测试用例?

“好的”测试用例一定是一个完备的集合,他能够覆盖所有等价类以及各种边界值,而跟否发现缺陷无关。

2.2. “好的”测试用例具备那些特征

  1. 整体完备性:“好的”测试用例一定是完备的整体,是有效的测试用例组成的集合,能够完全覆盖测试需求。
  2. 等价类划分的准确性:值的是对于没个等价类都能保证只要其中一个输入测试通过,其他数据也一定测试通过。
  3. 等价类集合的完备性:需要保证所有可以的边界值和边界条件都已经正确识别。

2.3. 三种常用的测试用例设计方法

测试用例的设计方法:比如等价类划分法、边界值分析法、错误推测方法、因果图方法、判定表驱动分析法、正交实验设计方法、功能图分析方法、场景设计方方法、形式化方法、扩展有限状态机方法等等。

我们以身份证中的7~14位日期是否有效设计测试用例

  1. 等价类划分方法:
    • 有效等价类:年按人类最高年龄120岁推算,有效年份应为2019~1899年中间;月应为1~12月;日应为1~31日;
    • 无效等价类:年小于1899年或大于2019年;月等于00或大于12;日等于00或大于31日;
  2. 边界值分析方法:选取闰年非闰年20040229以及20050228;大小月日期20000630以及2000731;
  3. 错误推测方法:身份证号不可重复;数据库链接失败;

有了上述的三种方法后,如果要对身份证号码有效性设计全面的设计用例,将所有位的有效性都考虑到的话,首先要去具体了解了身份证编码规则后去做对应的有效验证。

具体到测试用例本身的设计,有两个关键点需要你注意。

  1. 从软件功能需求出发,全面地、无遗漏地识别出测试需求是至关重要的,这将直接关系到用例的测试覆盖率。
  2. 对于识别出的每个测试需求点,需要综合运用等价类划分、边界值分析和错误推测方法来全面地设计测试用例。

最后,如果想设计一个“好的”测试用例,你必须要深入理解被测软件的架构设计,深入软件内部的处理逻辑,需求覆盖率和代码覆盖率这两个指标可以帮你衡量测试执行的完备性。

原文链接为极客时间版权所有: https://time.geekbang.org/column/article/10150

3. 单元测试(Junit)

3.1. 为什么要做单元测试?

很多公司都不会做单元测试,包括我,现阶段也不做单元测试。主要原因是现在的开发要求速度的要快,迭代要快,不做单元测试可以节约很大的时间成本以及人力资源。
但放在长远的时间线上来看,不做单元测试会存在出现Bug不知道那块代码出了问题(因为不停的在迭代会让原先成立的接口出现一些因为原先需求开始忽略,而导致不知道是那里出了问题)
这时候单元测试的作用就体现了,每次迭代的功能代码与测试代码对应,跑一遍测试代码就知道哪里出了问题,可及时修改。

3.2. Java中使用的测试框架Junit5

由于我也是初学者,就不展开说了,下面是Junit5的学习链接:JUnit 5 Jupiter API
以及Junit官方文档:官方文档

学习中多理解注释(Annotations)与断言(Assertions)的内容。后续对Junit的学习内容单独写文章说明。

总之,测试用的框架与工具是其次,重要的是先弄清楚要测什么!

原文链接为极客时间版权所有: https://time.geekbang.org/column/article/10275

4. 自动化测试

4.1. 为什么要自动化测试?

自动化测试的本质是用一段代码去测试另一段代码的过程。由此可见,自动化测试的代码编写是费时费力的(这里依然推荐用Junit)。
自动化测试使用比较多的场景如下:

  1. 回归测试(再次测试原先已完成的功能代码)
  2. 持续运行测试系统稳定行及高并发场景的压力测试。
  3. 保证每次执行测试的操作以及验证的一致性。
    此类较机械化操作的测试场景,需要用到自动化测试

4.2. 什么样的项目适合自动化测试?

  1. 需求稳定,不会频繁变更
  2. 研发和维护周期长,需要频繁执行回归测试
    • 软件产品比软件项目更适合做自动化测试。
    • 对于软件项目的自动化测试,就要看项目的具体情况了。最终目标是用20%的精力去覆盖80%的回归测试。
  3. 需要在多种平台上重复运行相同的场景
  4. 某些测试项目通过手工测试无法实现,或者手工成哥太高
  5. 被测软件的开发较规范,能够保证系统的可测试性
  6. 测试人员已经具备一定的编程能力

总之,测试用例的设计是至关重要的,在这之前,不要花太多的精力在自动化测试上。如果维护自动化测试的代价高过了节省的测试成本,那么在这样的项目中推进自动化测试就会得不偿失。

原文链接为极客时间版权所有: https://time.geekbang.org/column/article/10483

5. 软件开发各阶段的自动化测试

这一讲的专业词汇较多,不懂的词汇多搜索了解下!

下面图中展示的是软件开发的各个阶段以及对应会使用到的技术、工具:


测试技术、工具.png

原文链接为极客时间版权所有: https://time.geekbang.org/column/article/10572

6. 什么是测试覆盖率?

测试覆盖率.png

需求覆盖率:需求覆盖率是指测试对需求的覆盖程度,通常的做法是将每一条分解后的软件需求和对应的测试建立一对多的映射关系,最终目标是保证测试可以覆盖每个需求,以保证软件产品的质量。

代码覆盖率:代码覆盖率是指,至少被执行了一次的条目数占整个条目数的百分比。

这篇还是看原本较好,明白代码覆盖率是什么?该怎么做?

原文链接为极客时间版权所有: https://time.geekbang.org/column/article/10759

7. 如何高效填写软件缺陷报告?

7.1. 什么是缺陷报告?

缺陷报告是测试工程师与开发工程师交流沟通的重要桥梁,也是测试工程师日常工作的重要输出。

7.2. 缺陷报告的组成部分

缺陷报告.png

原文链接为极客时间版权所有:https://time.geekbang.org/column/article/10936

8. 测试计划

8.1. 没有测试计划会怎么样?

  1. 很难确切地知道具体的测试范围,以及应该采取的具体测试策略;
  2. 很难预估具体的工作量和所需要的测试工程师数量,同时还会造成各个测试工程师的分工不明确,引发某些测试工作被重复执行而有些测试则被遗漏的问题;
  3. 测试的整体进度完全不可控,甚至很难确切知道目前测试的完成情况,对于测试完成时间就更难预估准确的时间节点了;
  4. 整个项目对潜在风险的抵抗能力很弱,很难应对需求的变更以及其他突发事件。

8.2. 做测试计划中要解决那些问题?

测试计划.png

原文链接为极客时间版权所有: https://time.geekbang.org/column/article/11063

9. 软件工程师的核心竞争力

9 .1. 测试工程师的基础知识

测试基础知识.png

9.2. 传统测试工程是的核心竞争力

传统测试工程师的核心竞争力.png

9.3. 测试开发工程师

首先既然是测试开发工程师,那么代码开发能力是最基本的要求。

  1. 测试系统需求分析能力
  2. 更宽广的知识体系

原文链接为极客时间版权所有: https://time.geekbang.org/column/article/11325

10. 测试工程师需要掌握的非测试知识

与开发工程师相比,你需要了解的技术种类要多得多,视野也要宽广很多,只是在每类技术的深度方面不如开发工程师。

你可以参照下面这个比喻,来理解开发工程师和测试工程师的对知识的要求:开发工程师通常是“深度遍历”,关注的是“点”;而测试工程师通常是“广度遍历”,关注的是“面”。

非测试知识.png

原文链接为极客时间版权所有: https://time.geekbang.org/column/article/11453

11. 互联网产品测试策略

11.1. 传统软件测试策略设计

重单元测试


传统测试策略.png

11.2. 互联网产品测试策略

重API测试


互联网测试策略.png

原文链接为极客时间版权所有: https://time.geekbang.org/column/article/11462

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,186评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,858评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,620评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,888评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,009评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,149评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,204评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,956评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,385评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,698评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,863评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,544评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,185评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,899评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,141评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,684评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,750评论 2 351