最佳的软件测试方法

5
我刚刚完成了一项主要的应用程序,这个项目我已经断断续续地工作了一年左右。它有大约86k行代码,其中50k行是来自Visual Studio自动生成的数据集。它主要是一个图形用户界面,用于与数据库进行交互、生成报告等操作。由于它涉及到资金和合同管理,因此尽可能无bug非常重要。
我已经仔细检查了代码,并运行了程序。就我所知,我基本上找不到更多的bug了。然而,我确信还有一些bug存在,只是我已经在这个系统上工作了太久,看不到它们了。我知道还有一些问题,因为我偶尔会遇到一些问题,但却无法确定具体原因。
那么,我应该如何进行软件测试以发现剩余的bug呢?

“走过代码”?这是否意味着您没有任何单元测试代码? - S.Lott
正确,这是一个继承的遗留代码,而且我对单元测试不太了解,由于这主要是一个与数据库集成的应用程序,所以它变得更加困难。这个应用程序是为了取代一个外包给印度的Access 95程序而编写的,但最终被放弃并交给了我。 - Malfist
现在听起来很有趣! - Lucas B
听起来像是实习生的工作!:) 实际上,这并不糟糕。它提供了许多有趣的挑战。我遇到的问题比来自印度的代码更多的是.NET数据绑定,因为我已经大部分重写了他们所写的内容。 - Malfist
我们中的大多数人已经抛弃了数据绑定,并手动加载、调整和重新加载数据表格,因为数据绑定存在许多错误。 - Lucas B
@Lucas B,是的,我知道你的意思。原始代码库使用了数据绑定,所以我一直坚持使用它。我越用越意识到这不是一个好主意。一个月或两个月前有一个半吊子的尝试,想把数据绑定拿出来,用我可以进行TDD的CRUD替换它,但客户抱怨成本/时间,我被指派为其他几个项目进行一些危机编码。自那时以来,它只是闲置在代码库中。 - Malfist
3个回答

4
我知道有点晚了,但你听说过测试驱动开发吗?
有很多测试可以建立来发现“剩余”的错误:
1)单元测试
2)集成测试
3)行为/业务/验收测试
你可以参加开发者测试训练营以获得更多想法。

2
“有点晚了”这个说法太委婉了。 - Johann Strydom
我该如何在大部分数据绑定和 GUI 驱动的应用中集成 TDD? - Malfist
1
你需要将UI与数据分离。遵循MVC(Model-View-Controller)等模式。这样可以测试业务规则所在的模型和控制器。你不会为视图编写单元测试。 - jdot
可能为时已晚了。几乎所有的数据库交互都由.NET的数据绑定处理。 - Malfist
@Malfist 你仍然可以实现第二种和第三种测试。 - Lucas B

2

你可以让一些最终用户参与测试,进行一次测试版的尝试。如果用户没有过多的使用经验,他们更可能会尝试你没有考虑到的操作。


2

由于您没有使用TDD进行编写,现在最好的方法是尽可能添加自动化测试来覆盖常见场景。这样,当您发现错误时(程序中总会有错误),您可以在修复它们时尽量减少对系统其余部分的风险。


+1:"尽可能添加尽可能多的自动化测试"。从最容易指定和编写测试的内容开始。在有一套运行测试的基础后,再转向难度较大的任务。 - S.Lott

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接