测试的概念
以下只是为了让大家更快的熟悉整个测试体系,不用过度区分概念是否严谨。
总体可分为
黑盒:功能测试,保证每个功能正常的使用。
白盒:结构测试(单元测试),尽可能覆盖每个逻辑,每条分支。
类型
- 验证是否实现了功能(验收测试)
- 验证是否正确实现了功能(单元测试)
- 对产品可用性做测试,如响应时间、性能、安全等(非功能性测试)
覆盖范围
- 函数块的功能测试,不会启动服务(单元测试)
- 绕开用户界面,直接对服务调用测试(服务测试/集成测试)
- 打开用户界面进行测试(端对端测试)
不用过度纠结什么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
你仔细一看,是不是想骂人?这还是求和的函数?一下就能抓住差点让你背锅的罪魁祸首。
如果你说,干完这一票,以后就不归你负责了。那我只能劝你善良。
怎么学
学习从什么时候开始都不晚,但请不要相信培训机构给你灌的毒鸡汤。
作为开发者,给自己的应用程序写写测试用例,那基本非常简单,查查文档,勤快一点都能搞定。
这个话题更多的面向的是专业的测试人员。
当你决定要成为一名伟大的测试人员,请确定以下参数:
- 有强大的自学能力
退一步说,培训机构也管不了你一辈子
- 确定自己的成长路线,针对性的进行学习
如果你只是为了能快速找到一份工作,可以对照招聘需求进行技能拆解,朝着你的目标前进。
以下是我理解的测试
- 文档类:测试计划、测试用例、测试报告、缺陷跟踪
- 技能类:接口测试、性能测试
希望能对你有所帮助,如有其他问题也可以跟我交流。