105

如何进行“有效”测试的探讨

 6 years ago
source link: http://mp.weixin.qq.com/s/hFfJ5ne7M5nSjnI4uvGdHg
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

如何进行“有效”测试的探讨

Original 王小双 软件工程之思 2017-12-12 23:00 Posted on

即使是一些资深的测试工程师,也会承认:

测试的主要困难是不知道如何进行有效地测试,也不知道什么时候可以放心地结束测试。

如果不知道什么样的测试是“有效”的测试,项目组就会面临这样的问题:预留给测试的时间用完了,即使怀疑软件中仍然遗漏很多缺陷,也只好匆匆收场,把麻烦留给将来。

怎样的测试才是“有效”的测试?面对这一难题,估且谈谈自己的一些粗浅的看法,借以抛砖引玉。

  • 要合理安排测试人员。

测试活动是由人来完成的,所以测试是否“有效”要看执行的人安排得是否恰当。

1)程序员不能测试自己的程序

测试的思维和开发是完全不同的。开发者是从完成软件功能以及软件的质量出发来考虑问题的,而测试人员则是从发现软件缺陷的角度来考虑问题的。程序员要测试自己的程序,很难做好这种思维的转变。从心理上,要对自己的作品挑错,也是很难做到的一件事。

2)安排最好的程序员测试

测试并不是一件简单的事。要能从一个功能已经实现的软件产品中找到错误,需要具备一定的经验程序员才有可能做好。如果随便安排一个人来做测试,有可能只能给出一堆让软件产品顺利通过的无用的测试用例而已。

  • 正确理解测试的目的

测试是为了找出缺陷,不是为了证明程序是正确的。只有从这个目的出发,才有可能发现程序中潜在的错误。

如果为了说明软件有多么好,那么应当制作专门的演示。千万不要将“测试”与“演示”混为一谈。

  • 注重异常测试

在进行测试设计的时候,不仅要编制有效输入数据的测试用例,还要编制无效输入数据的测试用例。有效输入,只能验证程序的功能性是否正确,对于程序的可靠性,安全性,它是无能为力的。

  • 分析测试结果

完成一轮测试之后,不仅要对发现的问题进行改错,对更改的代码进行回归测试,还应对测试结果进行分析,以决定:

1)是否满足测试终止条件,可以结束测试。

2)在已发现的问题类型当中,是否存在一些习惯性或普遍性的问题,如果有,分析其可能存在的位置,设计合适的测试用例,找出它来。

3)通常在已经发现错误的地方会发现更多的错误。要分析已经发现问题的测试用例设计的是否充分,是否需要设计新的测试用例,以找出尚未发现的问题。

  • 必要的测试类型一个都不能少

测试一般包括单元测试、集成测试、系统测试、验收测试。从开发与测试的关系来看,这些测试类型分别用于验证详细设计、结构设计、需求规格说明、用户需求。单元测试,用于验证软件单元的正确性;集成测试,用于验证软件单元和模块接口的正确性;系统测试用于验证软件需求的实现;用户测试,用于验证用户需求的实现。这些测试类型验证的对象完全不同,只有完成了这些测试工作,开发出来的软件才满足“正确的做”和“做的正确 ”。所以这些测试类型,一个都不能少。

  • 测试类型的有效性

1)单元测试的有效性

a)单元测试,要确保详细设计的软件单元的功能的实现;

b)最合理的单元测试,应当是边开发、边审查、边测试。如果等到所有的软件单元全部开发完成,才开始进行单元测试,你会耗费更多测试的时间;

c)单元测试,要解决软件单元代码的规范性、正确性的问题;

d)单元测试要满足一定的代码覆盖率和路径覆盖率的要求,特别是关键的软件单元。

2)集成测试的有效性

a)制定一个有效的集成策略。集成顺序不应是随意的,应优先考虑那些关键的软件单元(如果它出现问题,将给软件带来很大的影响后果)以及与软件外部输出有关系的软件单元。

b)在开发软件单元的时候就要考虑集成的顺序,将单元测试和集成测试一并考虑,按照提成的先后顺序开发软件单元,边开发边审查边测试边集成。

3)系统测试和验收测试的有效性

a) 系统测试和验收测试,都不应只关注功能测试、性能测试、接口测试,除此之外,还要考虑用户界面测试、安全性测试、压力测试、可靠性测试、安装/反安装测试等内容。

b) 验收测试是以用户为主导的测试,验收测试的测试用例应从用户使用的角度考虑。

以上零零散散地谈了几点如何“有效”测试的想法。这些是从过程方法上面谈的,后面会从技术层面再来探讨。

微信赞赏专用通道

Image

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK