#Interactive Session by Kirti Ranjan Satapathy and Nandini K, "Elements of Quality Engineering in Remote IoT System" at #ATAGTR2023.
#ATAGTR2023 was the 8th Edition of Global Testing Retreat.
To know more about #ATAGTR2023, please visit: https://gtr.agiletestingalliance.org/
2. KONGSBERG PROPRIETARY - See Statement of Proprietary information
WORLD CLASS – Through people, technology and dedication 2
Your Speakers
Software Test Engineer – L1
Kongsberg Digital
Software Test Engineer – L1
Kongsberg Digital
https://www.linkedin.com/in/kirti-satapathy/ https://www.linkedin.com/in/nandini-krishna-699026118/
3. KONGSBERG PROPRIETARY - See Statement of Proprietary information
WORLD CLASS – Through people, technology and dedication
QA involves the use of testing tools and techniques to pinpoint
defects within a refined software product, and the tools the QA
specialists use often depend on the products they're assessing.
Quality assurance process uses advanced testing techniques to
detect and remediate as many defects as possible to ensure
stable, usable product that functions according to
specifications.
Quality Assurance is about testing
(Functional/Automation/Performance/…) the quality of the
product or a feature and making sure its defect free & stable
for end user to use smoothly.
3
QE involves the use of different tools and techniques to
prevent defects and enhance the software development
process throughout the SDLC.
Quality engineering spans the entire product lifecycle, which
begins long before the development lifecycle, starting from
focus on testable requirements before implementation.
Quality Engineering is about engineering/designing processes,
solutions using various testing tools, and sometimes using
unorthodox or unique methods to ensure the product we are
delivering to the end user is the best one.
Quality Assurance vs Quality Engineering
Quality Assurance is a part of Quality Engineering
4. KONGSBERG PROPRIETARY - See Statement of Proprietary information
WORLD CLASS – Through people, technology and dedication
Company Limited
Industrial IoT (IIoT)
Industrial IoT (IIoT) is an extension and use of the IoT in industrial sectors and applications.
With a strong focus on machine-to-machine (M2M) communication, big data, and machine
learning, the IIoT enables industries and enterprises to have better efficiency and reliability in
their operations.
IIoT is an intersection of information technology (IT) and operational technology (OT).
Its commonly used in heavy asset industries like Marine, Green Energy, Advanced Robotics,
Medical devices etc.
4
5. KONGSBERG PROPRIETARY - See Statement of Proprietary information
WORLD CLASS – Through people, technology and dedication 5
Scenario-1
Challenge : The unstable and low bandwidth network (satellite internet)
Production Issues
• Memory leak
• Thread lock
• Thread pool starvation
• Image not found
• File not found
• Pods stuck in creating state
• Pods restarting
contineously
6. KONGSBERG PROPRIETARY - See Statement of Proprietary information
WORLD CLASS – Through people, technology and dedication 6
Network Metrics
Json List
Throttler Driver
N/w Perf. Logger Ping Test
Ping Test Server
Cloud
Token Buckets
Network Interfaces : eth0 / ifb0
Tc / qdisc / netem
Shaper Policer
Throttler Core
Solution : Live Network Emulation in testing environment
7. KONGSBERG PROPRIETARY - See Statement of Proprietary information
WORLD CLASS – Through people, technology and dedication 7
Scenario-2
Challenge : How the Automation script, running on Windows machine, will interact with the
Linux machine?
Automation Script running here for UI
actions in Browser
Corresponding backend process occurs
here
8. KONGSBERG PROPRIETARY - See Statement of Proprietary information
WORLD CLASS – Through people, technology and dedication 8
Throttler Core
Solution : Use plink ssh connection to connect to the linux machine
programmatically from automation script.
Steps:
• Create .bat file with plink command combined with required linux command.
• Syntax : plink -batch -t -ssh <linux_username>@<linux_ip> -pw <linux_password> <linux_command>
• Run .bat File from script : execSync(`cmd /c start "" cmd /c <.bat filename>`);
9. WORLD CLASS - Through people, technology and dedication KONGSBERG PROPRIETARY - See Statement of Proprietary information 9
Challenge : How to transfer files between linux and windows machine?
Solution : Use folder mounting between windows & linux machines.
• Mount a shared folder from windows machine to a folder in linux machine.
Command : sudo mount.cifs <windows_shared_folder_path> <linux_folder_path> -o user=<windows_username>,password=<windows_password>
• To verify if the folder is successfully mounted use below command.
Command : sudo findmnt <linux_folder_path>
• Now we can use the shared folder on windows to transfer/copy a file from windows to linux machine
• Similarly, we can use the mounted folder on linux to transfer/copy a file from linux to windows machine
Scenario-3
10. KONGSBERG PROPRIETARY - See Statement of Proprietary information
WORLD CLASS – Through people, technology and dedication 10
Scenario-4
Challenge : How to capture & verify contents of linux command output?
Solution : Capture & store the output of linux command in a file (.txt/.json/.csv) on windows machine to verify
the contents.
Steps :
• Syntax : plink -batch -t -ssh <linux_username>@<linux_ip> -pw <linux_password> <linux_command> >> <windows_file_path>
• Then verify the contents of the windows file.
11. KONGSBERG PROPRIETARY - See Statement of Proprietary information
WORLD CLASS – Through people, technology and dedication 11
• To verify the docker installation status and container status.
Command : sudo docker ps
• To verify cafnet status/details.
Command : sudo docker inspect cafnet
• To run a query inside influxDB, installed as a container.
Command : sudo docker exec InfluxDB influx -execute 'SELECT * FROM <retention_policy>.<table_name>' -database=<database_name>
Docker Container & InfluxDB automation
12. WORLD CLASS - Through people, technology and dedication KONGSBERG PROPRIETARY - See Statement of Proprietary information 12
13. KONGSBERG PROPRIETARY - See Statement of Proprietary information
WORLD CLASS – Through people, technology and dedication 13
Kubernates Validation Automation
• To verify the pods status.
Command : kubectl get pods –A
• To enter into a pod.
Command : kubectl exec -it <podName> -n <namespaceName> -- sh
• To fetch contents from a pod.
Command : kubectl exec -it <podName> -n <namespaceName> -- sh -c "cat <file_path>“
• To see the logs for a pod.
Command : kubectl logs <podName> -n <namespaceName>
• To see the logs for a container inside a pod
Command : kubectl logs <podName> -n <namespaceName> -c <containerName>
• For port forwarding of a pod.
Command : kubectl port-forward <podName> <local_machine_port>:<pod_port>
• To get metrics for a given pod and its containers.
Command : kubectl top pod <podName> --containers
14. WORLD CLASS - Through people, technology and dedication KONGSBERG PROPRIETARY - See Statement of Proprietary information 14
15. WORLD CLASS - Through people, technology and dedication KONGSBERG PROPRIETARY - See Statement of Proprietary information 15
High Frequency Real-Time Data Analysis Automation
16. WORLD CLASS - Through people, technology and dedication KONGSBERG PROPRIETARY - See Statement of Proprietary information 16
High Frequency Real-Time Data Analysis Automation
• Solution : Use Mutation Observer function to capture live data.
• Mutation Observer : The MutationObserver interface provides the ability to watch for changes being made to the DOM tree.
• Source : https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver
17. WORLD CLASS - Through people, technology and dedication KONGSBERG PROPRIETARY - See Statement of Proprietary information 17
Log Analytics
OpenSearch Dashboard
• OpenSearch is a distributed, community-driven, Apache 2.0-licensed, open-source search and analytics suite used for real-time application
monitoring, log analytics, and website search.
• It makes large log file analysis easier.