【前言】
我们经常会测试师哥师姐们做的考试系统,测试的道理并不难理解,测试的目的当然是为了发现尽可能多的系统缺陷,提高软件质量。这里的缺陷不仅仅指的是出现的bug,还可以是系统的性能、易用性以及我们站在用户角度的用户体验等。摘一句软件工程思想中看到的话:一个成功的测试示例在于发现了至今尚未发现的缺陷。测试并不仅是个技术问题,更是个职业道德问题。
【引入】
给大家讲一个我看到的关于Microsoft公司的故事,Microsoft公司采用了一些看起来比较先进的方法,成立独立的测试小组,自动测试以及为关键性的构件进行代码复查等。自从Microsoft公司在1984年与1986年之间扩大了测试小组后,开发人员开始“变懒”了。但是有了独立的测试小组后,并不等于万事大吉了。他们把代码扔在一边等着测试,忘了唯有开发人员自己才能阻止错误的发生、防患于未来。这款软件发布后竞出现了700多处错误,公司的名誉一落千丈,花费了超过100万美元重新为用户升级版本。【测试类型】
我们这里并不是说成立独立的开发小组不好,从Microsoft公司的教训中可知,公司内部对产品的测试(称为α测试),需要开发人员与独立的测试小组共同参与。下面我以此引入大家期待已久的白盒测试和黑盒测试:
开发人员应该执行“白盒”测试,即测试源程序的逻辑结构以及实现细节(“白盒”是指看得见程序的内部结构)。而独立测试小组应该执行“黑盒”测试,即按照规格说明来测试程序是否符合要求(“黑盒”是指看不见程序的内部结构)。比如在测试一个模块时,“白盒”测试方法要对模块的所有代码进行单步跟踪测试。而“黑盒”测试方法只需测试模块的接口是否符合要求,它关心程序的外部表现而不是内部的实现细节。
如果是小型的软件开发公司没有条件成立独立的系统测试小组,可以让开发小组的成员互相测试对方的程序。
α测试不能依赖于开发人员或者测试小组中的任意一方,必须是双方共同参与。“白盒测试”必须由开发者自己执行,因为别的测试人员无法了解到程序的内部实现细节。而“黑盒测试”必须由独立的测试人员执行,因为开发者难以做到客观、公正。
当然开发人员在测试自己的程序时也会有一些弊病。
1.总觉得自己的是对的。因为个人习惯原因可能很难发现一些不良习惯带来的隐患。
2.开发者对自己的程序比较熟悉,然而用户并不熟悉,开发者不会因为程序的使用不当而引发错误,就像我们自己设计的机房收费系统自己总是点不出来错误,但是让别的同学一点都是bug,原因就在这里。所以开发者的测试不具备典型性。
3.测试可以是一件蓄意破坏的事情,因为我们都知道发现未发现的错误才是测试的目的,但是程序开发者处于对自己程序的爱惜,可能不愿意做破坏的事情,这就导致有些问题被掩盖。
为了解决开发人员和测试小组测试可能遗漏的问题,我们引入了β测试, 软件产品正式发行前,在公司外部邀请一些用户对产品进行测试,称为β测试。β测试的涉及面最广,最能反映用户的真实愿望,但花费的时间最长,不好控制。一般地,软件公司与β测试人员之间有一种互利的协议。即β测试人员无偿地为软件公司作测试,定期递交测试报告,提出批评与建议。而软件公司将向β测试人员免费赠送或者以很大的优惠价格发行软件的正式版本。
【测试用例】
黑盒用例---功能测试,数据驱动 检查:接口,被测单元功能
白盒用例---结构测试,逻辑驱动 检查:模块的关键路径、逻辑
【测试过程】
正确性测试又称功能测试,它检查软件的功能是否符合规格说明。由于正确性是软件最重要的质量因素,所以其测试也最重要。
(2)容错性测试
容错性测试是检查软件在异常条件下的行为。容错性好的软件能确保系统不发生无法意料的事故。
(3)性能与效率测试
性能与效率测试主要是测试软件的运行速度和对资源的利用率。
(4) 文档测试
文档测试主要检查文档的正确性、完备性和可理解性。好多人甚至不知道文档是软件的一个组成部分。
【改错】
测试的目的是发现错误,发现了错误当然要改错了,这个过程我想大家都不陌生,我们做学生系统和机房收费系统的时候最关键的地方就在于改错了,运行的时候总是出各种bug,但是不管是什么样的bug最后总能被解决掉。但是怎么改更高效呢,大家有没有想过?
技术上的:
①强行排错 ②回溯法调试 ③归纳法调试 ④演绎法调试
再说几点思想上的:
①敢于去做,摒弃畏难心理。②不可以蛮干,要多钻研去找到问题的根源。③改错之后要重新测试,以免引入新的错误。
【测试标准】
软件需求规格说明书,正所谓不忘初心,方得始终。要根据最初的软件需求标准进行检测。