软件测试简述与展望[3] 软件测试
3.测试的局限性
在软件测试理论的发展过程中,有一个分支是程序正确性证明,即试图通过符号演算或理论证明的方法来证明程序的正确性,这种方法被认为在实践中是行不通的。
无论是从理论上,还是从经验上,我们都无法发现软件系统中的所有错误,一个软件系统必定存在着缺陷(Bug),软件测试必然有一定的局限性。
软件的错误是往往由于软件需求的不确定性、软件设计的缺陷或编程失误所造成的,测试用例的设计与选择决定了是否能找出软件存在的错误。因此,为了保证软件的可靠性,软件测试既强调按实际使用软件的概率分布,随机或有目的地选择输人数据;
又强调数据信息的合法使用,防止数据信息的非法泄露、修改与通过安全漏洞合法使用数据。这使得这些软件测试的用例与一般测试不同。其测试既要按照使用的概率分布选择测试用例,又要根据安全需求构造测试实例。这样才能得到比较准确的可靠性估计,便于查出软件的错误。
4.测试方法
4.1黑盒测试和白盒测试
最早的测试方法分成黑盒测试和白盒测试。黑盒测试是指不考虑系统的内部结构,只按照规格说明测试系统已定义的功能,所以又称功能测试方法。黑盒测试将系统看成一个黑盒子,只关心系统的输入输出,所以测试方法的重点在于如何从输入域中选择待测的测试用例,
它的检验程序能否与功能要求完全一致。在设计测试用例时,只考虑软件的功能需求,不涉及程序的内部结构和实现细节。由黑盒测试所产生的测试用例应能检验程序的全部功能。黑盒测试可发现不正确的或漏掉的功能、接口错误、数据结构或外部数据库访问中的错误、性能错误、初始化或终止错误。
白盒测试是考虑系统的内部结构,设计或选择测试用例,重点测试系统的每一个动作是否符合定义,所以又称结构测试方法。由于白盒测试着重于系统的结构,所以对测试用例的选择主要看能否达到对系统内部结构的覆盖,测试用例用于检查模块中的独立路径;
检查每个逻辑判定的真假两种情况;检查每个循环变量的初值、中间值和终值;检查程序的内部数据结构是否有效。通过白盒测试可发现程序中的逻辑错误和不正确的假设或条件、没预料到的意外路径、语法检查未发现的印刷或书写错误。