• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

软件测试之遗留代码的测试方法

发布: 2009-3-23 09:37 | 作者: 不详 | 来源: 测试时代采编 | 查看: 34次 | 进入软件测试论坛讨论

领测软件测试网

对 main() 方法进行故障诊断

  测试 main() 方法并不作用于所有的应用程序。例如,库中不包含 main() 方法。一些确实具有 main() 方法的应用程序可能也不希望这个方法被不止一次的调用。如果您这样做的话,静态初始化软件会非常混乱。它们可能不去清除一些对象和类,因为它们假定当程序存在时,虚拟机也存在,所有对象和类都将被自动清除。如果事实如此,您可能需要更深层地观察您的应用程序,寻找第一个测试点。

  但是,不要走的过深。对于相对于 test-last 开发来说的 test-first 开发,尤其是对于遗留代码来说,您可能会遇到一个问题是,经常存在未公开的依赖关系和先决条件。一些方法假定其他对象存在并且在它们运行前已经创建了。例如,大多数菜单栏不会脱离它们的父窗体单独起作用。 实际上,如果您试着不止一次地调用 main() 方法,jEdit 就会变得非常混乱。我希望能一次也不调用它。但是,很多其他代码依赖于 jEdit.initSystemProperties() 方法已经被调用,并且这个方法是私有的。执行它的惟一方法就是调用 main()。我采用的解决方法是,只有当 main() 方法一次也没被调用过的时候才调用它,如下所示:

private static boolean hasMain = false;
 protected void setUp() {
    if (!hasMain) {
        jEdit.main(new String[0]);
        hasMain = true;
    }
    View view = jEdit.getFirstView();
    while (view == null) {
        // First window may take a little while to appear
        view = jEdit.getFirstView();
    }
    menubar = view.getJMenuBar();
   }

[Page]

  如果能够自由地重构正在测试的代码,您的工作会简单些。特别是将一些私有方法变成公有方法能够使这个代码编写起来更容易。在 test-first 开发中,这些都不成问题,因为您倾向于将代码编写得易于测试。然而,遗留代码几乎不考虑可测试性,因此,您必须消除这样的阻碍。

介绍装备

  一旦编写了第一个测试,您就能够经常快速地从同一个框架下开发更多的测试。将初始化和清理代码放入 setUp() 和 tearDown() 方法中,注意从那里您可以真正快速地编写多少测试。例如,我编写过一些基础测试来保证 jEdit 菜单栏出现并且在正确的地方显示正确的菜单,如清单 2 所示:


清单 2. 测试 jEdit 菜单
package org.jedit.test;
import javax.swing.*;
import org.gjt.sp.jedit.*;
import junit.framework.TestCase;
public class MenuTest extends TestCase {
    private JMenuBar menubar;
    private static boolean hasMain = false;
    protected void setUp() {
        if (!hasMain) {
            jEdit.main(new String[0]);
            hasMain = true;
        }
        View view = jEdit.getFirstView();
        while (view == null) {
            // First window may take a little while to appear
            view = jEdit.getFirstView();

文章来源于领测软件测试网 https://www.ltesting.net/

52/5<12345>

关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网