Testing 为系统生成自动测试用例,该系统可以保存唯一的数据,而无需手动从数据库中删除记录

Testing 为系统生成自动测试用例,该系统可以保存唯一的数据,而无需手动从数据库中删除记录,testing,coded-ui-tests,Testing,Coded Ui Tests,我想使用编码的UI测试为系统生成UI自动化测试用例。测试用例的生命周期较长,如: 注册农场[RMH-22] 在这个农场登记两栋房子[H-1,H-2] 通过单击系统中的搜索按钮并搜索[RMH-22],确保它们已保存在数据库中 当我回放此测试用例时,它无法正常工作,因为系统在录制期间已将此场[RMH-22]保存在数据库中 考虑到系统为农场保存唯一代码 是否有任何解决方案可以在回放测试用例之前,在不手动删除数据库记录的情况下自动执行此类测试用例?我曾在为我工作的医疗软件产品构建的CodedUITest

我想使用编码的UI测试为系统生成UI自动化测试用例。测试用例的生命周期较长,如:

  • 注册农场[RMH-22]
  • 在这个农场登记两栋房子[H-1,H-2]
  • 通过单击系统中的搜索按钮并搜索[RMH-22],确保它们已保存在数据库中
  • 当我回放此测试用例时,它无法正常工作,因为系统在录制期间已将此场[RMH-22]保存在数据库中

    考虑到系统为农场保存唯一代码


    是否有任何解决方案可以在回放测试用例之前,在不手动删除数据库记录的情况下自动执行此类测试用例?

    我曾在为我工作的医疗软件产品构建的CodedUITest系统中遇到过同样的情况。基本上,它会在第一个测试成功完成,第二个测试启动后抛出一个异常,其余的测试也会失败

    一直在谈论一个线程问题,当它最终成为内存时。在测试结束时,它将构建一个大型复杂的数据库,我希望我能再次使用它,但由于这些测试的工作方式,您将不得不擦除整个数据库,不仅如此,还可以通过将所有值设置为null以标记收集,然后强制进行收集,从而强制对整个映射及其内容进行垃圾收集


    这很糟糕,我知道,相信我,但在这种情况下,最好是删除所有内容,并重新生成您在每次测试中收集的所有数据。

    据我所知,问题是测试是使用农场和房屋的固定名称记录的,因此这些名称被输入数据库。当再次运行测试时,将使用这些相同的名称,但它们已存在于数据库中

    一种方法是确保在每个测试运行中使用不同的名称。我建议创建包含测试运行日期和时间的农场名称和房屋名称。因此,创建名称,例如
    FarmYYYYMMDDHHMMSS
    H1YYYYMMDDHHMMSS
    H2YYYYMMDDHHMMSS
    。如果需要,可以很容易地压缩日期和时间以缩短名称。在代码中生成名称,然后将值写入
    …Params
    类的字段中,就像在数据驱动的编码UI测试中一样

    作为替代方案,一些人建议附加序列号(或字母),但这意味着要跟踪已使用的序列号。因此,我会避免这种做法

    更新有关名称压缩的信息


    如果项目和测试需求是短期的,那么一年中的部分或全部可能被省略。如果您可以保证2020年后不再需要测试,那么只需保留十年中的年份(目前为“3”)。您可以使用1到366之间的三位数字,而不是
    YYMM
    。您可以将日期编码为自某个开始日期起的天数;数字不必精确无误,只需易于计算并给出合适的非重叠值即可。例如
    (2013年)*366+年中日
    而不是
    HHMMSS
    您可以使用一天中的第二天,范围为0到60*60*24,即0到86400。您可以使用基数36(请参阅)编码,而不是使用十进制数字作为名称。这些加在一起应该比将名称中日期时间部分所需的字符数减半要好。

    U是说我必须在记录测试用例后擦除数据库记录,然后回放测试用例?!谢谢你的回答。但是你的意思是我必须通过在名称后面添加运行测试的时间来使它们在代码中唯一?!但我该怎么压缩它?!任何关于压缩的建议都需要更多的上下文。你想要实现什么?可以使用什么名称长度?测试执行之间的最小时间间隔是多少?真的,我遇到了这个问题,我不知道名称上的限制是什么。但从你的回答来看,我认为农场的名字应该是:Farm201393181643,我认为这个名字很长,但到目前为止,我对这个名字没有任何限制。@MohamedHatemAbdu我对真实农场名字的经验是,它们可能很长。在我键入此注释时,目前未压缩的名称可能是
    Farm201309211156
    。我在答案中添加了一些关于压缩的想法。或者,如果您事先知道要添加的农场名称和房屋,那么您可以将这些信息放入CSV或XML中,并创建一个数据驱动的编码UI,用这些信息填充数据库。