我正在写一些功能测试,我开始想知道这两者之间的最佳理念是什么。
我的应用程序有一些安全页面,需要用户的组才能拥有正确的凭据才能访问。这些用户分为两组:“协作者组”和“可问责组”。证书将提供给小组。
解决方案1:测试凭据a.k.a.测试功能。
对于每个安全页面,我测试 访问2个用户:一个用 正确的凭证,只有这一个, 一个没有正确的证书。
优点:仅测试页面是否针对特定凭据进行保护
缺点:不测试客户端想要(和用户)的“最终”应用程序行为。
解决方案2:测试组a.k.a.测试要求
对于每个安全页面,我测试 访问每个组的用户,和 检查只有允许的组 获得对安全页面的访问权。
优点:按客户要求(和用户)测试“最终”应用程序行为。
缺点:
谢谢。
答案 0 :(得分:2)
我认为第二解决方案是好的解决方案。凭证将在与组关联时进行测试。
优点:测试“最终”应用程序行为,由客户端按需要(和用户)。
这是最重要的部分。功能测试旨在测试每种可能情况下的最终应用。如果您想测试您的凭据与用户或组具有相同行为的事实,您最好使用单元测试。
缺点:如果业务规则发生变化或者创建了更多组,则必须更改测试。
如果您的应用程序的业务发生变化,您的测试用例将始终必须更新。和你的单元测试一样。如果修改函数的代码,则检查单元测试是否仍能控制每种情况。它与功能测试的方式相同。
维护测试(以及他们需要运行的灯具)是一项非常繁琐的工作,但这是确保代码强大的唯一方法。
希望它有所帮助。
答案 1 :(得分:1)
我会做两个测试。像你指出的第一个,不需要更新,但正在测试一个非常重要的事实,即没有权利的用户没有访问权限。第二个是更全面的测试,就像@TimotheeMartin指出的那样,代码更改时总是需要更新测试。