及时享乐型的程序员根本懒得去测试,快乐地活在当下。更严肃的程序员会告诉你软件测试是为了开发出高质量的产品。为了可以开发出高质量的产品,必须始终编写单元测试和集成测试,并做 QA 测试。忽略这些,你的代码将会掉入 bug 为患的深渊。
所以软件测试的目的在于:
(1)发现被测对象与用户需求之间的差异,即缺陷。
(2)通过测试活动发现并解决缺陷,增加人们对软件质量的信心。
(3)通过测试活动了解被测对象的质量状况,为决策提供数据依据。
(4)通过测试活动积累经验,预防缺陷出现,降低产品失败风险。
那么应该如何测试软件呢?
1. 理解用户
用户会购买你的产品吗?一个设计的改变会带来有更多的注册吗?用户会理解你的软件是如何工作的吗?这些问题都无法通过对比你的软件是否满足规范来得到回答。相反,你需要经验知识:你需要观察当你的软件展现给用户时,用户真正做了什么操作。
相关的测试技术包括:可用性测试、最低可行产品测试、A/B测试
2. 理解运行时行为
你的软件在负载下的表现如何?你的软件有资源竞争吗?当有非法输入时,你的软件是否会崩溃?这些问题不能总是通过比较你的软件是否符合规范来回答。一旦你的软件足够复杂,你无法完全理解或者预测它的回应。你需要观察它的实际运行来理解其行为。
相关的测试技术包括:压力测试和浸泡测试、从产品日志中收集异常及跟踪信息
3. 应该考虑的测试方法
黑盒测试:不考虑内部设计和代码,根据需求和功能进行测试。
白盒测试:根据应用软件的代码的内部逻辑,按照代码的语句、分支、路径和条件进行测试。功能测试:对一个应用软件的功能模块进行黑盒测试。这种测试应当由测试人员进行。但这并不意味着程序员在推出软件之前不进行代码检查。(这一原则适用于所有的测试阶段。)
系统测试:针对全部需求说明进行黑盒测试,包括系统中所有的部件。
4. 软件测试时的步骤
测试过程按4个步骤进行,即单元测试(Unit Testing)、集成测试(Integrated Testing)、确认测试(Validation Testing)和系统测试(System Testing)及发版测试。
2) 开始是单元测试,集中对用源代码实现的每一个程序单元进行测试,检查各个程序模块是否正确地实现了规定的功能。
3) 集成测试把已测试过的模块组装起来,主要对与设计相关的软件体系结构的构造进行测试。
4) 确认测试则是要检查已实现的软件是否满足了需求规格说明中确定了的各种需求,以及软件配置是否完全、正确。
好了,本文到此结束。如果对编程、计算机、程序员方面感兴趣的话,欢迎私信联系我,随时交流!点个关注,是对我莫大的鼓励!
举报/反馈