ਟੈਸਟ ਜਨਰੇਸ਼ਨ ਲਈ AI: ਇਹ ਕਿੱਥੇ ਮਦਦ ਕਰਦਾ ਹੈ ਅਤੇ ਕਿੱਥੇ ਗਲਤ ਹੋ ਸਕਦਾ ਹੈ

AI ਤੇਜ਼ੀ ਨਾਲ ਟੈਸਟ ਲਿਖਦਾ ਹੈ। ਇਹ ਅਜਿਹੇ ਟੈਸਟ ਵੀ ਲਿਖਦਾ ਹੈ ਜੋ ਅਸਲੀ ਲੱਗਦੇ ਹਨ ਪਰ ਗਲਤ ਚੀਜ਼ਾਂ ਦੀ ਜਾਂਚ ਕਰਦੇ ਹਨ।

ਤੁਸੀਂ ਇੱਕ ਫੰਕਸ਼ਨ AI ਵਿੱਚ ਪੇਸਟ ਕਰਦੇ ਹੋ। ਤੀਹ ਸਕਿੰਟਾਂ ਬਾਅਦ, ਤੁਹਾਡੇ ਕੋਲ ਬਾਰਾਂ ਪਾਸ ਹੋਣ ਵਾਲੇ ਟੈਸਟ ਹੁੰਦੇ ਹਨ। ਤੁਹਾਡਾ ਕਵਰੇਜ ਸਕੋਰ ਵਧ ਜਾਂਦਾ ਹੈ। ਤੁਹਾਨੂੰ ਲੱਗਦਾ ਹੈ ਕਿ ਤੁਸੀਂ ਕੰਮ ਕਰ ਰਹੇ ਹੋ।

ਫਿਰ ਪ੍ਰੋਡਕਸ਼ਨ ਵਿੱਚ ਇੱਕ ਬੱਗ (bug) ਆ ਜਾਂਦਾ ਹੈ। ਤੁਸੀਂ ਉਹਨਾਂ ਬਾਰਾਂ ਟੈਸਟਾਂ ਨੂੰ ਦੇਖਦੇ ਹੋ ਅਤੇ ਅਹਿਸਾਸ ਕਰਦੇ ਹੋ ਕਿ ਉਹਨਾਂ ਵਿੱਚੋਂ ਕੋਈ ਵੀ ਇਸਨੂੰ ਫੜ ਨਹੀਂ ਸਕਦਾ ਸੀ।

AI ਨੇ ਉਹ ਟੈਸਟ ਕੀਤਾ ਜੋ ਤੁਹਾਡਾ ਕੋਡ ਕਰਦਾ ਹੈ, ਨਾ ਕਿ ਉਹ ਜੋ ਤੁਹਾਡੇ ਕੋਡ ਨੂੰ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ।

AI ਉਪਯੋਗੀ ਹੈ, ਪਰ ਤੁਹਾਨੂੰ ਇਹ ਜਾਣਨਾ ਚਾਹੀਦਾ ਹੈ ਕਿ ਇਸਦੀ ਵਰਤੋਂ ਕਿਵੇਂ ਕਰਨੀ ਹੈ।

ਜਿੱਥੇ AI ਫਾਇਦੇਮੰਦ ਹੈ:

  • ਸੈੱਟਅੱਪ (setup) ਅਤੇ ਟੀਅਰਡਾਊਨ (teardown) ਬਲਾਕਾਂ ਵਰਗਾ ਬੋਇਲਰਪਲੇਟ (boilerplate) ਕੋਡ ਤਿਆਰ ਕਰਨਾ।
  • ਵਾਰ-ਵਾਰ ਵਰਤੇ ਜਾਣ ਵਾਲੇ ਫੈਕਟਰੀ ਹੈਲਪਰਜ਼ (factory helpers) ਅਤੇ ਡਾਟਾ ਆਬਜੈਕਟ ਲਿਖਣਾ।
  • ਇੱਕ ਚੰਗੇ ਟੈਸਟ ਪੈਟਰਨ ਦੇ ਕਈ ਵੱਖ-ਵੱਖ ਰੂਪ ਬਣਾਉਣਾ।
  • ਸਪੱਸ਼ਟ ਐਜ ਕੇਸਾਂ (edge cases) ਜਿਵੇਂ ਕਿ null, ਖਾਲੀ ਸਟ੍ਰਿੰਗਾਂ, ਜਾਂ ਜ਼ੀਰੋ ਨੂੰ ਸੰਭਾਲਣਾ।

ਜਿੱਥੇ AI ਅਸਫਲ ਰਹਿੰਦਾ ਹੈ:

  • ਇੰਪਲੀਮੈਂਟੇਸ਼ਨ-ਅਧਾਰਤ ਟੈਸਟ: ਇਹ ਬਿਜ਼ਨਸ ਲੌਜਿਕ (business logic) ਦੀ ਬਜਾਏ ਕੋਡ ਦੀ ਬਣਤਰ (structure) ਦੀ ਪਾਲਣਾ ਕਰਨ ਵਾਲੇ ਟੈਸਟ ਲਿਖਦਾ ਹੈ। ਜੇਕਰ ਤੁਸੀਂ ਕੋਡ ਨੂੰ ਰੀਫੈਕਟਰ (refactor) ਕਰਦੇ ਹੋ, ਤਾਂ ਟੈਸਟ ਟੁੱਟ ਜਾਂਦੇ ਹਨ ਭਾਵੇਂ ਨਤੀਜਾ ਅਜੇ ਵੀ ਸਹੀ ਹੋਵੇ।
  • ਸਤਹੀ ਐਜ ਕੇਸ: ਇਹ ਸਪੱਸ਼ਟ ਗਲਤੀਆਂ ਲੱਭ ਲੈਂਦਾ ਹੈ ਪਰ ਡੋਮੇਨ-ਵਿਸ਼ੇਸ਼ ਬੱਗਾਂ ਨੂੰ ਮਿਸ ਕਰ ਦਿੰਦਾ ਹੈ। ਇਹ ਤੁਹਾਡੇ ਟਾਈਮਜ਼ੋਨ ਦੀਆਂ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ, ਤੁਹਾਡੇ ਡਾਟਾਬੇਸ ਦੀਆਂ ਸੀਮਾਵਾਂ, ਜਾਂ ਤੁਹਾਡੇ ਖਾਸ ਬਿਜ਼ਨਸ ਨਿਯਮਾਂ ਬਾਰੇ ਨਹੀਂ ਜਾਣਦਾ।
  • ਕਮਜ਼ੋਰ ਮੌਕਸ (Brittle mocks): ਇਹ ਉਹਨਾਂ ਅੰਦਰੂਨੀ ਸੇਵਾਵਾਂ ਨੂੰ ਮੌਕ (mock) ਕਰ ਦਿੰਦਾ ਹੈ ਜੋ ਅਸਲੀ ਰਹਿਣੀਆਂ ਚਾਹੀਦੀਆਂ ਹਨ। ਇਸ ਨਾਲ ਟੈਸਟਾਂ ਨੂੰ ਬਣਾਈ ਰੱਖਣਾ (maintain) ਹੌਲੀ ਹੋ ਜਾਂਦਾ ਹੈ ਅਤੇ ਰੀਫੈਕਟਰਿੰਗ ਦੌਰਾਨ ਉਹਨਾਂ ਦੇ ਟੁੱਟਣ ਦਾ ਖਤਰਾ ਵਧ ਜਾਂਦਾ ਹੈ।

"ਟੈਸਟ ਥੀਏਟਰ" (test theater) ਬਣਾਏ ਬਿਨਾਂ AI ਦੀ ਵਰਤੋਂ ਕਿਵੇਂ ਕਰੀਏ:

  1. ਪਹਿਲਾਂ ਕੰਟਰੈਕਟ (contract) ਪਰਿਭਾਸ਼ਿਤ ਕਰੋ। ਇਸ ਬਾਰੇ ਇੱਕ ਸਧਾਰਨ ਵਾਕ ਲਿਖੋ ਕਿ ਟੈਸਟ ਨੂੰ ਕੀ ਸਾਬਤ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ। ਉਦਾਹਰਨ: "ਇੱਕ ਐਕਸਪਾਇਰ ਹੋਇਆ ਕੋਡ ਅਸਲ ਰਕਮ ਵਾਪਸ ਕਰਨੀ ਚਾਹੀਦੀ ਹੈ।"
  2. ਉਹ ਵਾਕ AI ਨੂੰ ਦਿਓ। AI ਨੂੰ ਕੋਡ ਲਿਖਣ ਦਿਓ, ਪਰ ਇਰਾਦੇ (intent) ਦਾ ਮਾਲਕ ਤੁਹਾਨੂੰ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ।
  3. ਸਿਰਫ਼ ਸੀਮਾ (boundary) 'ਤੇ ਮੌਕ (mock) ਕਰੋ। ਆਪਣੇ ਅੰਦਰੂਨੀ ਮੋਡਿਊਲਜ਼ ਲਈ ਅਸਲੀ ਇੰਸਟੈਂਸਾਂ (instances) ਦੀ ਵਰਤੋਂ ਕਰੋ। ਸਿਰਫ਼ ਬਾਹਰੀ API ਜਾਂ ਡਾਟਾਬੇਸ ਨੂੰ ਹੀ ਮੌਕ ਕਰੋ।
  4. ਇੱਕ ਡੋਮੇਨ ਐਜ ਕੇਸ ਆਪਣੇ ਹੱਥ ਨਾਲ ਲਿਖੋ। AI "ਸਪੱਸ਼ਟ" ਐਜ ਕੇਸਾਂ ਨੂੰ ਸੰਭਾਲਦਾ ਹੈ। ਤੁਹਾਨੂੰ ਉਹ "3 AM" ਵਾਲੇ ਐਜ ਕੇਸ ਸੰਭਾਲਣੇ ਚਾਹੀਦੇ ਹਨ ਜੋ ਅਸਲ ਵਿੱਚ ਪ੍ਰੋਡਕਸ਼ਨ ਵਿੱਚ ਹਾਦਸੇ ਪੈਦਾ ਕਰਦੇ ਹਨ।

AI ਨੂੰ ਇਹ ਫੈਸਲਾ ਨਾ ਕਰਨ ਦਿਓ ਕਿ ਟੈਸਟ ਕੀ ਜਾਂਚ ਕਰਦਾ ਹੈ। ਇਸਦੀ ਵਰਤੋਂ ਕੋਡ ਟਾਈਪ ਕਰਨ ਲਈ ਕਰੋ, ਪਰ ਲੌਜਿਕ (logic) ਤੁਸੀਂ ਪ੍ਰਦਾਨ ਕਰੋ।

ਸਰੋਤ: https://dev.to/nazar_boyko/ai-for-test-generation-where-it-helps-and-where-it-lies-jhm