测试的概念

以下只是为了让大家更快的熟悉整个测试体系,不用过度区分概念是否严谨。

总体可分为
黑盒:功能测试,保证每个功能正常的使用。
白盒:结构测试(单元测试),尽可能覆盖每个逻辑,每条分支。

类型

  • 验证是否实现了功能(验收测试)
  • 验证是否正确实现了功能(单元测试)
  • 对产品可用性做测试,如响应时间、性能、安全等(非功能性测试)

覆盖范围

  • 函数块的功能测试,不会启动服务(单元测试)
  • 绕开用户界面,直接对服务调用测试(服务测试/集成测试)
  • 打开用户界面进行测试(端对端测试)

不用过度纠结什么TDD、敏捷、极限编程之类的,可以先了解它们的思想,到了合适的时候,你会知道你需要的是什么。

为什么需要测试

为了客户!为了软件质量!(你懂的)

作为开发者,可能更多的面对是单元测试,其他的测试基本都是由QA负责的。也许我们是为了KPI而奋斗,但也是为了软件交付之后,不用提心吊胆的想着它什么时候会出问题。

在编写单元测试的过程中,能提前发现很多错误,看着日渐提高的测试覆盖率,就会有一种胜券在握的感觉。

当然它可能会额外占用你的一些时间,但从长久来看,这仍是一个非常有价值的投资。

不要为了测试而测试,即为了过度的追求覆盖率,写一些无意义的测试。

代码示例

以下用python写一个简单的示例

import unittest

def sum(a, b):
    return a + b

class TestCount(unittest.TestCase):
    def test_sum(self):
        total = sum(1, 2)
        self.assertEqual(total, 3)

我们有一个求和的方法sum,输入两个数字,看它是不是给我们返回预期值3

看起来很简单,一看就看明白的东西,写个测试是不是觉得非常多余。

但是以后代码逻辑越来越复杂的时候,有个偷偷改了你的sum函数

def sum(a, b):
    return a - b

结果你跑测试用例的时候,发现会抛出个异常

self = <t.TestCount testMethod=test_sum>

    def test_sum(self):
        total = sum(1, 2)
>       self.assertEqual(total, 3)
E       AssertionError: -1 != 3

你仔细一看,是不是想骂人?这还是求和的函数?一下就能抓住差点让你背锅的罪魁祸首。

如果你说,干完这一票,以后就不归你负责了。那我只能劝你善良。

怎么学

学习从什么时候开始都不晚,但请不要相信培训机构给你灌的毒鸡汤。

作为开发者,给自己的应用程序写写测试用例,那基本非常简单,查查文档,勤快一点都能搞定。

这个话题更多的面向的是专业的测试人员。

当你决定要成为一名伟大的测试人员,请确定以下参数:

  • 有强大的自学能力

退一步说,培训机构也管不了你一辈子

  • 确定自己的成长路线,针对性的进行学习

如果你只是为了能快速找到一份工作,可以对照招聘需求进行技能拆解,朝着你的目标前进。

以下是我理解的测试

  • 文档类:测试计划、测试用例、测试报告、缺陷跟踪
  • 技能类:接口测试、性能测试

希望能对你有所帮助,如有其他问题也可以跟我交流。